[glsl][ir] Add ShaderIO

This Cl adds ShaderIO support to the GLSL IR backend.

Bug: 42251044
Change-Id: I67e58caa611ff7a77ef318275215ec922c103147
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/205555
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl.expected.ir.glsl b/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl.expected.ir.glsl
deleted file mode 100644
index c4f3e26..0000000
--- a/test/tint/benchmark/skinned-shadowed-pbr-vertex.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,84 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct Camera {
-  mat4 projection;
-  mat4 inverseProjection;
-  mat4 view;
-  vec3 position;
-  float time;
-  vec2 outputSize;
-  float zNear;
-  float zFar;
-};
-
-struct Joints {
-  mat4 matrices[];
-};
-
-struct VertexInput {
-  vec4 position;
-  vec3 normal;
-  vec4 tangent;
-  vec2 texcoord;
-  uvec4 joints;
-  vec4 weights;
-  vec4 instance0;
-  vec4 instance1;
-  vec4 instance2;
-  vec4 instance3;
-  vec4 instanceColor;
-};
-
-struct VertexOutput {
-  vec4 position;
-  vec3 worldPos;
-  vec3 view;
-  vec2 texcoord;
-  vec2 texcoord2;
-  vec4 color;
-  vec4 instanceColor;
-  vec3 normal;
-  vec3 tangent;
-  vec3 bitangent;
-};
-
-uniform Camera camera;
-Joints joint;
-Joints inverseBind;
-mat4 getInstanceMatrix(VertexInput tint_symbol) {
-  return mat4(tint_symbol.instance0, tint_symbol.instance1, tint_symbol.instance2, tint_symbol.instance3);
-}
-mat4 getSkinMatrix(VertexInput tint_symbol) {
-  mat4 joint0 = (joint.matrices[tint_symbol.joints[0u]] * inverseBind.matrices[tint_symbol.joints[0u]]);
-  mat4 joint1 = (joint.matrices[tint_symbol.joints[1u]] * inverseBind.matrices[tint_symbol.joints[1u]]);
-  mat4 joint2 = (joint.matrices[tint_symbol.joints[2u]] * inverseBind.matrices[tint_symbol.joints[2u]]);
-  mat4 joint3 = (joint.matrices[tint_symbol.joints[3u]] * inverseBind.matrices[tint_symbol.joints[3u]]);
-  mat4 skinMatrix = ((((joint0 * tint_symbol.weights[0u]) + (joint1 * tint_symbol.weights[1u])) + (joint2 * tint_symbol.weights[2u])) + (joint3 * tint_symbol.weights[3u]));
-  return skinMatrix;
-}
-VertexOutput main(VertexInput tint_symbol) {
-  VertexOutput tint_symbol_1 = VertexOutput(vec4(0.0f), vec3(0.0f), vec3(0.0f), vec2(0.0f), vec2(0.0f), vec4(0.0f), vec4(0.0f), vec3(0.0f), vec3(0.0f), vec3(0.0f));
-  mat4 modelMatrix = getSkinMatrix(tint_symbol);
-  tint_symbol_1.normal = normalize((modelMatrix * vec4(tint_symbol.normal, 0.0f)).xyz);
-  tint_symbol_1.tangent = normalize((modelMatrix * vec4(tint_symbol.tangent.xyz, 0.0f)).xyz);
-  tint_symbol_1.bitangent = (cross(tint_symbol_1.normal, tint_symbol_1.tangent) * tint_symbol.tangent[3u]);
-  tint_symbol_1.color = vec4(1.0f);
-  tint_symbol_1.texcoord = tint_symbol.texcoord;
-  tint_symbol_1.instanceColor = tint_symbol.instanceColor;
-  vec4 modelPos = (modelMatrix * tint_symbol.position);
-  tint_symbol_1.worldPos = modelPos.xyz;
-  tint_symbol_1.view = (camera.position - modelPos.xyz);
-  tint_symbol_1.position = ((camera.projection * camera.view) * modelPos);
-  return tint_symbol_1;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:15: '' : array size required 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.glsl b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.glsl
index a293e00..86706b1 100644
--- a/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/storage/dynamic_index/write.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct Inner {
@@ -27,11 +25,10 @@
   vec3 arr2_vec3_f32[2];
 };
 
-struct S {
+layout(binding = 0, std430)
+buffer S_1_ssbo {
   Inner arr[];
-};
-
-S sb;
+} sb;
 void tint_store_and_preserve_padding_3(inout vec3 target[2], vec3 value_param[2]) {
   {
     uint v = 0u;
@@ -64,8 +61,7 @@
   target[0u] = value_param[0u];
   target[1u] = value_param[1u];
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uint idx) {
+void tint_symbol_inner(uint idx) {
   sb.arr[idx].scalar_f32 = 0.0f;
   sb.arr[idx].scalar_i32 = 0;
   sb.arr[idx].scalar_u32 = 0u;
@@ -89,12 +85,7 @@
   sb.arr[idx].mat4x4_f32 = mat4(vec4(0.0f), vec4(0.0f), vec4(0.0f), vec4(0.0f));
   tint_store_and_preserve_padding_3(sb.arr[idx].arr2_vec3_f32, vec3[2](vec3(0.0f), vec3(0.0f)));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:29: '' : array size required 
-ERROR: 0:30: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.glsl b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.glsl
index 97c633f..9fb1fd0 100644
--- a/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.glsl
+++ b/test/tint/buffer/storage/dynamic_index/write_f16.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -42,11 +40,10 @@
   f16mat4x2 arr2_mat4x2_f16[2];
 };
 
-struct S {
+layout(binding = 0, std430)
+buffer S_1_ssbo {
   Inner arr[];
-};
-
-S sb;
+} sb;
 void tint_store_and_preserve_padding_6(inout vec3 target[2], vec3 value_param[2]) {
   {
     uint v = 0u;
@@ -94,8 +91,7 @@
   target[0u] = value_param[0u];
   target[1u] = value_param[1u];
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uint idx) {
+void tint_symbol_inner(uint idx) {
   sb.arr[idx].scalar_f32 = 0.0f;
   sb.arr[idx].scalar_i32 = 0;
   sb.arr[idx].scalar_u32 = 0u;
@@ -133,12 +129,7 @@
   tint_store_and_preserve_padding_6(sb.arr[idx].arr2_vec3_f32, vec3[2](vec3(0.0f), vec3(0.0f)));
   sb.arr[idx].arr2_mat4x2_f16 = f16mat4x2[2](f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)), f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:44: '' : array size required 
-ERROR: 0:45: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/bug/chromium/1381883.wgsl.expected.ir.glsl b/test/tint/bug/chromium/1381883.wgsl.expected.ir.glsl
index eb83c6d..404e6aa 100644
--- a/test/tint/bug/chromium/1381883.wgsl.expected.ir.glsl
+++ b/test/tint/bug/chromium/1381883.wgsl.expected.ir.glsl
@@ -1,18 +1,11 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-void main(float none) {
+layout(location = 2) in float tint_symbol_loc2_Input;
+void tint_symbol_inner(float none) {
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc2_Input);
+}
diff --git a/test/tint/bug/tint/1081.wgsl.expected.ir.glsl b/test/tint/bug/tint/1081.wgsl.expected.ir.glsl
index c6bde81..fae0536 100644
--- a/test/tint/bug/tint/1081.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1081.wgsl.expected.ir.glsl
@@ -1,18 +1,18 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
 bool continue_execution = true;
+layout(location = 1) flat in ivec3 tint_symbol_loc1_Input;
+layout(location = 2) out int tint_symbol_loc2_Output;
 int f(int x) {
   if ((x == 10)) {
     continue_execution = false;
   }
   return x;
 }
-int main(ivec3 x) {
+int tint_symbol_inner(ivec3 x) {
   int y = x[0u];
   {
     while(true) {
@@ -30,13 +30,6 @@
   }
   return y;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'int' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc2_Output = tint_symbol_inner(tint_symbol_loc1_Input);
+}
diff --git a/test/tint/bug/tint/1088.spvasm.expected.ir.glsl b/test/tint/bug/tint/1088.spvasm.expected.ir.glsl
index abb2f73..72bf795 100644
--- a/test/tint/bug/tint/1088.spvasm.expected.ir.glsl
+++ b/test/tint/bug/tint/1088.spvasm.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct strided_arr {
@@ -19,39 +17,44 @@
 };
 
 vec3 position_1 = vec3(0.0f);
-uniform LeftOver x_14;
+layout(binding = 2, std140)
+uniform tint_symbol_3_1_ubo {
+  LeftOver tint_symbol_2;
+} v;
 vec2 vUV = vec2(0.0f);
 vec2 uv = vec2(0.0f);
 vec3 normal = vec3(0.0f);
 vec4 tint_symbol = vec4(0.0f);
+layout(location = 0) in vec3 tint_symbol_1_loc0_Input;
+layout(location = 2) in vec2 tint_symbol_1_loc2_Input;
+layout(location = 1) in vec3 tint_symbol_1_loc1_Input;
+layout(location = 0) out vec2 tint_symbol_1_loc0_Output;
 void main_1() {
   vec4 q = vec4(0.0f);
   vec3 p = vec3(0.0f);
   q = vec4(position_1.x, position_1.y, position_1.z, 1.0f);
   p = q.xyz;
-  float v = p.x;
-  p[0u] = (v + sin(((x_14.test[0].el * position_1.y) + x_14.time)));
-  float v_1 = p.y;
-  p[1u] = (v_1 + sin((x_14.time + 4.0f)));
-  mat4 v_2 = x_14.worldViewProjection;
-  tint_symbol = (v_2 * vec4(p.x, p.y, p.z, 1.0f));
+  float v_1 = p.x;
+  p[0u] = (v_1 + sin(((v.tint_symbol_2.test[0].el * position_1.y) + v.tint_symbol_2.time)));
+  float v_2 = p.y;
+  p[1u] = (v_2 + sin((v.tint_symbol_2.time + 4.0f)));
+  mat4 v_3 = v.tint_symbol_2.worldViewProjection;
+  tint_symbol = (v_3 * vec4(p.x, p.y, p.z, 1.0f));
   vUV = uv;
   tint_symbol[1u] = (tint_symbol.y * -1.0f);
 }
-main_out main(vec3 position_1_param, vec2 uv_param, vec3 normal_param) {
+main_out tint_symbol_1_inner(vec3 position_1_param, vec2 uv_param, vec3 normal_param) {
   position_1 = position_1_param;
   uv = uv_param;
   normal = normal_param;
   main_1();
   return main_out(tint_symbol, vUV);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:39: 'main' : function cannot take any parameter(s) 
-ERROR: 0:39: 'structure' :  entry point cannot return a value
-ERROR: 0:39: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  main_out v_4 = tint_symbol_1_inner(tint_symbol_1_loc0_Input, tint_symbol_1_loc2_Input, tint_symbol_1_loc1_Input);
+  gl_Position = v_4.tint_symbol;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  tint_symbol_1_loc0_Output = v_4.vUV_1;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/bug/tint/1509.wgsl.expected.ir.glsl b/test/tint/bug/tint/1509.wgsl.expected.ir.glsl
index 2d5a929..4685bf4 100644
--- a/test/tint/bug/tint/1509.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1509.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
@@ -1005,6 +1003,7 @@
 uint v997 = 0u;
 uint v998 = 0u;
 uint v999 = 0u;
+layout(location = 0) out uint tint_symbol_loc0_Output;
 uint foo() {
   uint x = 0u;
   x = (x + v0);
@@ -2009,15 +2008,9 @@
   x = (x + v999);
   return x;
 }
-uint main() {
+uint tint_symbol_inner() {
   return foo();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:2010: 'uint' :  entry point cannot return a value
-ERROR: 0:2010: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/bug/tint/1641.wgsl.expected.ir.glsl b/test/tint/bug/tint/1641.wgsl.expected.ir.glsl
index 6f873bb..4fc22ac 100644
--- a/test/tint/bug/tint/1641.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1641.wgsl.expected.ir.glsl
@@ -1,21 +1,16 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct Normals {
   vec3 f;
 };
 
-vec4 main() {
+vec4 tint_symbol_inner() {
   int zero = 0;
   return vec4(Normals[1](Normals(vec3(0.0f, 0.0f, 1.0f)))[zero].f, 1.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'float' :  entry point cannot return a value
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner();
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/bug/tint/1677.wgsl.expected.ir.glsl b/test/tint/bug/tint/1677.wgsl.expected.ir.glsl
index d606fde..271dc75 100644
--- a/test/tint/bug/tint/1677.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1677.wgsl.expected.ir.glsl
@@ -1,22 +1,17 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct Input {
   ivec3 position;
 };
 
-Input tint_symbol;
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 id) {
-  ivec3 pos = (tint_symbol.position - ivec3(0));
+layout(binding = 0, std430)
+buffer tint_symbol_3_1_ssbo {
+  Input tint_symbol_2;
+} v;
+void tint_symbol_1_inner(uvec3 id) {
+  ivec3 pos = (v.tint_symbol_2.position - ivec3(0));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'main' : function cannot take any parameter(s) 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_1_inner(gl_GlobalInvocationID);
+}
diff --git a/test/tint/bug/tint/1860.wgsl.expected.ir.glsl b/test/tint/bug/tint/1860.wgsl.expected.ir.glsl
index 7b84209..52061b8 100644
--- a/test/tint/bug/tint/1860.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1860.wgsl.expected.ir.glsl
@@ -1,21 +1,19 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct DeclaredAfterUsage {
   float f;
 };
 
-uniform DeclaredAfterUsage declared_after_usage;
-vec4 main() {
-  return vec4(declared_after_usage.f);
+layout(binding = 0, std140)
+uniform tint_symbol_2_1_ubo {
+  DeclaredAfterUsage tint_symbol_1;
+} v;
+vec4 tint_symbol_inner() {
+  return vec4(v.tint_symbol_1.f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'float' :  entry point cannot return a value
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner();
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/bug/tint/2100.wgsl.expected.ir.glsl b/test/tint/bug/tint/2100.wgsl.expected.ir.glsl
index 45b0ea7..c8ef166 100644
--- a/test/tint/bug/tint/2100.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/2100.wgsl.expected.ir.glsl
@@ -1,23 +1,23 @@
-SKIP: FAILED
-
 #version 310 es
 
-struct S {
+struct S_std140 {
   mat4 matrix_view;
-  mat3 matrix_normal;
+  vec3 matrix_normal_col0;
+  vec3 matrix_normal_col1;
+  vec3 matrix_normal_col2;
 };
 
-uniform S tint_symbol;
-vec4 main() {
-  float x = tint_symbol.matrix_view[0].z;
+layout(binding = 0, std140)
+uniform tint_symbol_3_std140_1_ubo {
+  S_std140 tint_symbol_2;
+} v;
+vec4 tint_symbol_1_inner() {
+  float x = v.tint_symbol_2.matrix_view[0].z;
   return vec4(x, 0.0f, 0.0f, 1.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:9: 'float' :  entry point cannot return a value
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_1_inner();
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/bug/tint/2121.wgsl.expected.ir.glsl b/test/tint/bug/tint/2121.wgsl.expected.ir.glsl
index 0831429..642a2f1 100644
--- a/test/tint/bug/tint/2121.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/2121.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct VSOut {
@@ -10,17 +8,14 @@
   vec4 pos = vec4(1.0f, 2.0f, 3.0f, 4.0f);
   tint_symbol.pos = pos;
 }
-VSOut main() {
+VSOut tint_symbol_1_inner() {
   VSOut tint_symbol = VSOut(vec4(0.0f));
   foo(tint_symbol);
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_1_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/bug/tint/292.wgsl.expected.ir.glsl b/test/tint/bug/tint/292.wgsl.expected.ir.glsl
index fdcc310..98c1a49 100644
--- a/test/tint/bug/tint/292.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/292.wgsl.expected.ir.glsl
@@ -1,18 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 
-vec4 main() {
+vec4 tint_symbol_inner() {
   vec3 light = vec3(1.20000004768371582031f, 1.0f, 2.0f);
   vec3 negative_light = -(light);
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'float' :  entry point cannot return a value
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner();
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/bug/tint/744.wgsl.expected.ir.glsl b/test/tint/bug/tint/744.wgsl.expected.ir.glsl
index 446e996..145ee3c 100644
--- a/test/tint/bug/tint/744.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/744.wgsl.expected.ir.glsl
@@ -1,26 +1,31 @@
-SKIP: FAILED
-
 #version 310 es
 
-struct Matrix {
-  uint numbers[];
-};
-
 struct Uniforms {
   uvec2 aShape;
   uvec2 bShape;
   uvec2 outShape;
 };
 
-Matrix firstMatrix;
-Matrix secondMatrix;
-Matrix resultMatrix;
-uniform Uniforms uniforms;
-layout(local_size_x = 2, local_size_y = 2, local_size_z = 1) in;
-void main(uvec3 global_id) {
+layout(binding = 0, std430)
+buffer Matrix_1_ssbo {
+  uint numbers[];
+} firstMatrix;
+layout(binding = 1, std430)
+buffer Matrix_2_ssbo {
+  uint numbers[];
+} secondMatrix;
+layout(binding = 2, std430)
+buffer Matrix_3_ssbo {
+  uint numbers[];
+} resultMatrix;
+layout(binding = 3, std140)
+uniform tint_symbol_2_1_ubo {
+  Uniforms tint_symbol_1;
+} v;
+void tint_symbol_inner(uvec3 global_id) {
   uvec2 resultCell = uvec2(global_id[1u], global_id[0u]);
-  uint dimInner = uniforms.aShape.y;
-  uint dimOutter = uniforms.outShape.y;
+  uint dimInner = v.tint_symbol_1.aShape.y;
+  uint dimOutter = v.tint_symbol_1.outShape.y;
   uint result = 0u;
   {
     uint i = 0u;
@@ -41,12 +46,7 @@
   uint index = (resultCell[1u] + (resultCell[0u] * dimOutter));
   resultMatrix.numbers[index] = result;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: '' : array size required 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 2, local_size_y = 2, local_size_z = 1) in;
+void main() {
+  tint_symbol_inner(gl_GlobalInvocationID);
+}
diff --git a/test/tint/bug/tint/980.wgsl.expected.ir.glsl b/test/tint/bug/tint/980.wgsl.expected.ir.glsl
index 8f65892..ce34a19 100644
--- a/test/tint/bug/tint/980.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/980.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct S {
@@ -7,22 +5,19 @@
   uint i;
 };
 
-S io;
+layout(binding = 0, std430)
+buffer tint_symbol_2_1_ssbo {
+  S tint_symbol_1;
+} v_1;
 vec3 Bad(uint index, vec3 rd) {
   vec3 normal = vec3(0.0f);
   normal[index] = -(sign(rd[index]));
   return normalize(normal);
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uint idx) {
-  io.v = Bad(io.i, io.v);
+void tint_symbol_inner(uint idx) {
+  v_1.tint_symbol_1.v = Bad(v_1.tint_symbol_1.i, v_1.tint_symbol_1.v);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'main' : function cannot take any parameter(s) 
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_inner(gl_LocalInvocationIndex);
+}
diff --git a/test/tint/bug/tint/992.wgsl.expected.ir.glsl b/test/tint/bug/tint/992.wgsl.expected.ir.glsl
index 9c3fda1..2b37132 100644
--- a/test/tint/bug/tint/992.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/992.wgsl.expected.ir.glsl
@@ -1,21 +1,14 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main() {
+layout(location = 0) out vec4 frag_main_loc0_Output;
+vec4 frag_main_inner() {
   float b = 0.0f;
   vec3 v = vec3(b);
   return vec4(v, 1.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  frag_main_loc0_Output = frag_main_inner();
+}
diff --git a/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.glsl
index 9de8f47..6e80e1a 100644
--- a/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/002533.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 abs_002533() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_002533();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 abs_002533() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_002533();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 abs_002533() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = abs_002533();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_002533();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_002533();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 abs_002533() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = abs_002533();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_002533();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_002533();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 abs_002533() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = abs_002533();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_002533();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_002533();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.glsl
index 7a2322d..7d7888c 100644
--- a/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/005174.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 abs_005174() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_005174();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 abs_005174() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_005174();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 abs_005174() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = abs_005174();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_005174();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_005174();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 abs_005174() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = abs_005174();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_005174();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_005174();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 abs_005174() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = abs_005174();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_005174();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_005174();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.glsl
index ca0b693..b47173a 100644
--- a/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/1ce782.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 abs_1ce782() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_1ce782();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 abs_1ce782() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_1ce782();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 abs_1ce782() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = abs_1ce782();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1ce782();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_1ce782();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 abs_1ce782() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = abs_1ce782();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1ce782();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_1ce782();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 abs_1ce782() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = abs_1ce782();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1ce782();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_1ce782();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.glsl
index caee4e1..8b8f2d5 100644
--- a/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/1e9d53.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 abs_1e9d53() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_1e9d53();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 abs_1e9d53() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_1e9d53();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 abs_1e9d53() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_1e9d53();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 abs_1e9d53() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = abs_1e9d53();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_1e9d53();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 abs_1e9d53() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_1e9d53();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.glsl
index 4a88d83..9835581 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_2f861b() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  abs_2f861b();
+}
+#version 310 es
+
+void abs_2f861b() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_2f861b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_2f861b() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  abs_2f861b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_2f861b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_2f861b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_2f861b() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  abs_2f861b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_2f861b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_2f861b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_2f861b() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  abs_2f861b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_2f861b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_2f861b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.glsl
index d8b6c76..9f548612 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 abs_421ca3() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = abs_421ca3();
+  v.tint_symbol = abs_421ca3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_421ca3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_421ca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 abs_421ca3() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = abs_421ca3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_421ca3();
+  v.tint_symbol = abs_421ca3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_421ca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 abs_421ca3() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = abs_421ca3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_421ca3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_421ca3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.glsl
index 98b1852..bde7166 100644
--- a/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/467cd1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint abs_467cd1() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_467cd1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint abs_467cd1() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_467cd1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint abs_467cd1() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = abs_467cd1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_467cd1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_467cd1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint abs_467cd1() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = abs_467cd1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_467cd1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_467cd1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint abs_467cd1() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = abs_467cd1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_467cd1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_467cd1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.glsl
index 5009baa..27cea52 100644
--- a/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/4ad288.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int abs_4ad288() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_4ad288();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int abs_4ad288() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_4ad288();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int abs_4ad288() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = abs_4ad288();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_4ad288();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_4ad288();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int abs_4ad288() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = abs_4ad288();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_4ad288();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_4ad288();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int abs_4ad288() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = abs_4ad288();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_4ad288();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_4ad288();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.glsl
index fa3e902..f83be74 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 abs_538d29() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = abs_538d29();
+  v.tint_symbol = abs_538d29();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_538d29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_538d29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 abs_538d29() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = abs_538d29();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_538d29();
+  v.tint_symbol = abs_538d29();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_538d29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 abs_538d29() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = abs_538d29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_538d29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_538d29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.glsl
index ede5bb8..54714a8 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_577d6e() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  abs_577d6e();
+}
+#version 310 es
+
+void abs_577d6e() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_577d6e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_577d6e() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  abs_577d6e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_577d6e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_577d6e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_577d6e() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  abs_577d6e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_577d6e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_577d6e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_577d6e() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  abs_577d6e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_577d6e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_577d6e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.glsl
index 5bc7884..34eac65 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_5a8af1() {
+  int res = 1;
+}
+void main() {
+  abs_5a8af1();
+}
+#version 310 es
+
+void abs_5a8af1() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_5a8af1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_5a8af1() {
   int res = 1;
 }
-void main() {
-  abs_5a8af1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_5a8af1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_5a8af1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_5a8af1() {
-  int res = 1;
-}
 void main() {
-  abs_5a8af1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_5a8af1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_5a8af1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_5a8af1() {
-  int res = 1;
-}
-void main() {
-  abs_5a8af1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_5a8af1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_5a8af1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.glsl
index 98448a2..59824ec 100644
--- a/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/5ad50a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 abs_5ad50a() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_5ad50a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 abs_5ad50a() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_5ad50a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 abs_5ad50a() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_5ad50a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 abs_5ad50a() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = abs_5ad50a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ad50a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 abs_5ad50a() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ad50a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.glsl
index 782ddc7..b384022 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 abs_5ae4fe() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = abs_5ae4fe();
+  v.tint_symbol = abs_5ae4fe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ae4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 abs_5ae4fe() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_5ae4fe();
+  v.tint_symbol = abs_5ae4fe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ae4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 abs_5ae4fe() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_5ae4fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.glsl
index 02eaeaa..96f0332 100644
--- a/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/7326de.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 abs_7326de() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_7326de();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 abs_7326de() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_7326de();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 abs_7326de() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = abs_7326de();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7326de();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_7326de();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 abs_7326de() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = abs_7326de();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7326de();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7326de();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 abs_7326de() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = abs_7326de();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7326de();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7326de();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.glsl
index 8dd813e..4366b75 100644
--- a/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/7f28e6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 abs_7f28e6() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_7f28e6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 abs_7f28e6() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_7f28e6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 abs_7f28e6() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = abs_7f28e6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7f28e6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_7f28e6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 abs_7f28e6() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = abs_7f28e6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7f28e6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7f28e6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 abs_7f28e6() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = abs_7f28e6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7f28e6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7f28e6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.glsl
index 6086d02..d6684d4 100644
--- a/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/7faa9e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 abs_7faa9e() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_7faa9e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 abs_7faa9e() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_7faa9e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 abs_7faa9e() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_7faa9e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 abs_7faa9e() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = abs_7faa9e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7faa9e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 abs_7faa9e() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7faa9e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.glsl
index 03804f4..a48800b 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_82ff9d() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  abs_82ff9d();
+}
+#version 310 es
+
+void abs_82ff9d() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_82ff9d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_82ff9d() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  abs_82ff9d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_82ff9d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_82ff9d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_82ff9d() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  abs_82ff9d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_82ff9d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_82ff9d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_82ff9d() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  abs_82ff9d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_82ff9d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_82ff9d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.glsl
index 6dc976b..c34b852 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_8ca9b1() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  abs_8ca9b1();
+}
+#version 310 es
+
+void abs_8ca9b1() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_8ca9b1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_8ca9b1() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  abs_8ca9b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_8ca9b1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_8ca9b1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_8ca9b1() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  abs_8ca9b1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_8ca9b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_8ca9b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_8ca9b1() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  abs_8ca9b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_8ca9b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_8ca9b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.glsl
index 2d1b0e6..1ab4000 100644
--- a/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/9c80a6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 abs_9c80a6() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_9c80a6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 abs_9c80a6() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_9c80a6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 abs_9c80a6() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_9c80a6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 abs_9c80a6() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = abs_9c80a6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_9c80a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 abs_9c80a6() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_9c80a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.glsl
index abca85c..6a56d49 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_aedb6d() {
+  float res = 1.0f;
+}
+void main() {
+  abs_aedb6d();
+}
+#version 310 es
+
+void abs_aedb6d() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_aedb6d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_aedb6d() {
   float res = 1.0f;
 }
-void main() {
-  abs_aedb6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_aedb6d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_aedb6d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_aedb6d() {
-  float res = 1.0f;
-}
 void main() {
-  abs_aedb6d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_aedb6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_aedb6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_aedb6d() {
-  float res = 1.0f;
-}
-void main() {
-  abs_aedb6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_aedb6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_aedb6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.glsl
index ae57aca..6bad99c 100644
--- a/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/b96037.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float abs_b96037() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = abs_b96037();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float abs_b96037() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = abs_b96037();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float abs_b96037() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = abs_b96037();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_b96037();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_b96037();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float abs_b96037() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = abs_b96037();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_b96037();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_b96037();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float abs_b96037() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = abs_b96037();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_b96037();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_b96037();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.glsl
index 974e81d..019254e 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_c3321c() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  abs_c3321c();
+}
+#version 310 es
+
+void abs_c3321c() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_c3321c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_c3321c() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  abs_c3321c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_c3321c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_c3321c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_c3321c() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  abs_c3321c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_c3321c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_c3321c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_c3321c() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  abs_c3321c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_c3321c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_c3321c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.glsl
index 3d8d9e4..97e4bd4 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_e28785() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  abs_e28785();
+}
+#version 310 es
+
+void abs_e28785() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_e28785();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_e28785() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  abs_e28785();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_e28785();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_e28785();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_e28785() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  abs_e28785();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_e28785();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_e28785();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_e28785() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  abs_e28785();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_e28785();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_e28785();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.glsl
index 9b28f35..ad00323 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t abs_fd247f() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = abs_fd247f();
+  v.tint_symbol = abs_fd247f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_fd247f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_fd247f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t abs_fd247f() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = abs_fd247f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_fd247f();
+  v.tint_symbol = abs_fd247f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_fd247f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t abs_fd247f() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = abs_fd247f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_fd247f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_fd247f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.glsl
index 40ed270..ec7db52 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acos_004aff() {
   f16vec2 res = f16vec2(0.25048828125hf);
   return res;
 }
 void main() {
-  prevent_dce = acos_004aff();
+  v.tint_symbol = acos_004aff();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_004aff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_004aff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acos_004aff() {
   f16vec2 res = f16vec2(0.25048828125hf);
   return res;
 }
-void main() {
-  prevent_dce = acos_004aff();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_004aff();
+  v.tint_symbol = acos_004aff();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_004aff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 acos_004aff() {
   f16vec2 res = f16vec2(0.25048828125hf);
   return res;
 }
-void main() {
-  prevent_dce = acos_004aff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_004aff();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_004aff();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.glsl
index 0ae4906..9200608 100644
--- a/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_069188() {
+  vec3 res = vec3(0.25f);
+}
+void main() {
+  acos_069188();
+}
+#version 310 es
+
+void acos_069188() {
+  vec3 res = vec3(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_069188();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_069188() {
   vec3 res = vec3(0.25f);
 }
-void main() {
-  acos_069188();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_069188();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_069188();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_069188() {
-  vec3 res = vec3(0.25f);
-}
 void main() {
-  acos_069188();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_069188();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_069188();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_069188() {
-  vec3 res = vec3(0.25f);
-}
-void main() {
-  acos_069188();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_069188();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_069188();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.glsl
index a5b141e..4e385db 100644
--- a/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_15d35b() {
+  vec2 res = vec2(0.25f);
+}
+void main() {
+  acos_15d35b();
+}
+#version 310 es
+
+void acos_15d35b() {
+  vec2 res = vec2(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_15d35b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_15d35b() {
   vec2 res = vec2(0.25f);
 }
-void main() {
-  acos_15d35b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_15d35b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_15d35b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_15d35b() {
-  vec2 res = vec2(0.25f);
-}
 void main() {
-  acos_15d35b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_15d35b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_15d35b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_15d35b() {
-  vec2 res = vec2(0.25f);
-}
-void main() {
-  acos_15d35b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_15d35b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_15d35b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.glsl
index 769f7a8..9538c37 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acos_203628() {
   f16vec4 res = f16vec4(0.25048828125hf);
   return res;
 }
 void main() {
-  prevent_dce = acos_203628();
+  v.tint_symbol = acos_203628();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_203628();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_203628();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acos_203628() {
   f16vec4 res = f16vec4(0.25048828125hf);
   return res;
 }
-void main() {
-  prevent_dce = acos_203628();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_203628();
+  v.tint_symbol = acos_203628();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_203628();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 acos_203628() {
   f16vec4 res = f16vec4(0.25048828125hf);
   return res;
 }
-void main() {
-  prevent_dce = acos_203628();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_203628();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_203628();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.glsl
index 4c425d9..508c469 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acos_303e3d() {
   float16_t res = 0.25048828125hf;
   return res;
 }
 void main() {
-  prevent_dce = acos_303e3d();
+  v.tint_symbol = acos_303e3d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_303e3d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_303e3d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acos_303e3d() {
   float16_t res = 0.25048828125hf;
   return res;
 }
-void main() {
-  prevent_dce = acos_303e3d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_303e3d();
+  v.tint_symbol = acos_303e3d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_303e3d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t acos_303e3d() {
   float16_t res = 0.25048828125hf;
   return res;
 }
-void main() {
-  prevent_dce = acos_303e3d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_303e3d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_303e3d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.glsl
index 51d55dc..4f46cad 100644
--- a/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float acos_489247() {
+  float res = 0.25f;
+  return res;
+}
+void main() {
+  v.tint_symbol = acos_489247();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float acos_489247() {
+  float res = 0.25f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acos_489247();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float acos_489247() {
   float res = 0.25f;
   return res;
 }
-void main() {
-  prevent_dce = acos_489247();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_489247();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_489247();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float acos_489247() {
-  float res = 0.25f;
-  return res;
-}
 void main() {
-  prevent_dce = acos_489247();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_489247();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_489247();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float acos_489247() {
-  float res = 0.25f;
-  return res;
-}
-void main() {
-  prevent_dce = acos_489247();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_489247();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_489247();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.glsl
index 377e0a3..4d92fb6 100644
--- a/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_4dac75() {
+  vec4 res = vec4(0.25f);
+}
+void main() {
+  acos_4dac75();
+}
+#version 310 es
+
+void acos_4dac75() {
+  vec4 res = vec4(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_4dac75();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_4dac75() {
   vec4 res = vec4(0.25f);
 }
-void main() {
-  acos_4dac75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_4dac75();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_4dac75();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_4dac75() {
-  vec4 res = vec4(0.25f);
-}
 void main() {
-  acos_4dac75();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_4dac75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_4dac75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_4dac75() {
-  vec4 res = vec4(0.25f);
-}
-void main() {
-  acos_4dac75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_4dac75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_4dac75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.glsl
index 4df6e06..12c3548 100644
--- a/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_5e9ad2() {
+  float res = 0.25f;
+}
+void main() {
+  acos_5e9ad2();
+}
+#version 310 es
+
+void acos_5e9ad2() {
+  float res = 0.25f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_5e9ad2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_5e9ad2() {
   float res = 0.25f;
 }
-void main() {
-  acos_5e9ad2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_5e9ad2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_5e9ad2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_5e9ad2() {
-  float res = 0.25f;
-}
 void main() {
-  acos_5e9ad2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_5e9ad2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_5e9ad2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_5e9ad2() {
-  float res = 0.25f;
-}
-void main() {
-  acos_5e9ad2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_5e9ad2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_5e9ad2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.glsl
index 6cf1011..74ae65b 100644
--- a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 acos_8e2acf() {
+  vec4 res = vec4(0.25f);
+  return res;
+}
+void main() {
+  v.tint_symbol = acos_8e2acf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 acos_8e2acf() {
+  vec4 res = vec4(0.25f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acos_8e2acf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 acos_8e2acf() {
   vec4 res = vec4(0.25f);
   return res;
 }
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_8e2acf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 acos_8e2acf() {
-  vec4 res = vec4(0.25f);
-  return res;
-}
 void main() {
-  prevent_dce = acos_8e2acf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_8e2acf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 acos_8e2acf() {
-  vec4 res = vec4(0.25f);
-  return res;
-}
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_8e2acf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.glsl
index 68f4777..06ac59b 100644
--- a/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 acos_a610c4() {
+  vec3 res = vec3(0.25f);
+  return res;
+}
+void main() {
+  v.tint_symbol = acos_a610c4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 acos_a610c4() {
+  vec3 res = vec3(0.25f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acos_a610c4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 acos_a610c4() {
   vec3 res = vec3(0.25f);
   return res;
 }
-void main() {
-  prevent_dce = acos_a610c4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_a610c4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_a610c4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 acos_a610c4() {
-  vec3 res = vec3(0.25f);
-  return res;
-}
 void main() {
-  prevent_dce = acos_a610c4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_a610c4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_a610c4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 acos_a610c4() {
-  vec3 res = vec3(0.25f);
-  return res;
-}
-void main() {
-  prevent_dce = acos_a610c4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_a610c4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_a610c4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.glsl
index da0eed8..bc8f427 100644
--- a/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 acos_dfc915() {
+  vec2 res = vec2(0.25f);
+  return res;
+}
+void main() {
+  v.tint_symbol = acos_dfc915();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 acos_dfc915() {
+  vec2 res = vec2(0.25f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acos_dfc915();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 acos_dfc915() {
   vec2 res = vec2(0.25f);
   return res;
 }
-void main() {
-  prevent_dce = acos_dfc915();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_dfc915();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_dfc915();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 acos_dfc915() {
-  vec2 res = vec2(0.25f);
-  return res;
-}
 void main() {
-  prevent_dce = acos_dfc915();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_dfc915();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_dfc915();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 acos_dfc915() {
-  vec2 res = vec2(0.25f);
-  return res;
-}
-void main() {
-  prevent_dce = acos_dfc915();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_dfc915();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_dfc915();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.glsl
index 570a47e..50dde95 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acos_f47057() {
   f16vec3 res = f16vec3(0.25048828125hf);
   return res;
 }
 void main() {
-  prevent_dce = acos_f47057();
+  v.tint_symbol = acos_f47057();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_f47057();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_f47057();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acos_f47057() {
   f16vec3 res = f16vec3(0.25048828125hf);
   return res;
 }
-void main() {
-  prevent_dce = acos_f47057();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_f47057();
+  v.tint_symbol = acos_f47057();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_f47057();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 acos_f47057() {
   f16vec3 res = f16vec3(0.25048828125hf);
   return res;
 }
-void main() {
-  prevent_dce = acos_f47057();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_f47057();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_f47057();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.glsl
index 298b06b..9232c07 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_17260e() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  acosh_17260e();
+}
+#version 310 es
+
+void acosh_17260e() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_17260e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_17260e() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  acosh_17260e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_17260e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_17260e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_17260e() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  acosh_17260e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_17260e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_17260e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_17260e() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  acosh_17260e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_17260e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_17260e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.glsl
index 31eb23e..f2d76b7 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_3433e8() {
+  float res = 1.0f;
+}
+void main() {
+  acosh_3433e8();
+}
+#version 310 es
+
+void acosh_3433e8() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_3433e8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_3433e8() {
   float res = 1.0f;
 }
-void main() {
-  acosh_3433e8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_3433e8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_3433e8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_3433e8() {
-  float res = 1.0f;
-}
 void main() {
-  acosh_3433e8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_3433e8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_3433e8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_3433e8() {
-  float res = 1.0f;
-}
-void main() {
-  acosh_3433e8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_3433e8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_3433e8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.glsl
index 49604ab..1bed89c 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_490aae() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  acosh_490aae();
+}
+#version 310 es
+
+void acosh_490aae() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_490aae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_490aae() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  acosh_490aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_490aae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_490aae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_490aae() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  acosh_490aae();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_490aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_490aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_490aae() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  acosh_490aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_490aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_490aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.glsl
index d9c1735..a8c5557 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acosh_5f49d8() {
   f16vec2 res = f16vec2(0.99951171875hf);
   return res;
 }
 void main() {
-  prevent_dce = acosh_5f49d8();
+  v.tint_symbol = acosh_5f49d8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_5f49d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acosh_5f49d8() {
   f16vec2 res = f16vec2(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_5f49d8();
+  v.tint_symbol = acosh_5f49d8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_5f49d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 acosh_5f49d8() {
   f16vec2 res = f16vec2(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_5f49d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.glsl
index 9500f5b..fcec510 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 acosh_640883() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = acosh_640883();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 acosh_640883() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acosh_640883();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 acosh_640883() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = acosh_640883();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_640883();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_640883();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 acosh_640883() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_640883();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_640883();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_640883();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 acosh_640883() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = acosh_640883();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_640883();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_640883();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.glsl
index e9dc64a..32e0851 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_9f213e() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  acosh_9f213e();
+}
+#version 310 es
+
+void acosh_9f213e() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_9f213e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_9f213e() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  acosh_9f213e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_9f213e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_9f213e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_9f213e() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  acosh_9f213e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_9f213e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_9f213e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_9f213e() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  acosh_9f213e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_9f213e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_9f213e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.glsl
index 1aa32f2..00ba479 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acosh_a37dfe() {
   float16_t res = 0.99951171875hf;
   return res;
 }
 void main() {
-  prevent_dce = acosh_a37dfe();
+  v.tint_symbol = acosh_a37dfe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_a37dfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acosh_a37dfe() {
   float16_t res = 0.99951171875hf;
   return res;
 }
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_a37dfe();
+  v.tint_symbol = acosh_a37dfe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_a37dfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t acosh_a37dfe() {
   float16_t res = 0.99951171875hf;
   return res;
 }
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_a37dfe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.glsl
index 3f0c91f7..0ed41d4 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 acosh_d51ccb() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = acosh_d51ccb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 acosh_d51ccb() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acosh_d51ccb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 acosh_d51ccb() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_d51ccb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 acosh_d51ccb() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_d51ccb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_d51ccb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 acosh_d51ccb() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_d51ccb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.glsl
index c3db214..95e5f0e 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acosh_de60d8() {
   f16vec4 res = f16vec4(0.99951171875hf);
   return res;
 }
 void main() {
-  prevent_dce = acosh_de60d8();
+  v.tint_symbol = acosh_de60d8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_de60d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_de60d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acosh_de60d8() {
   f16vec4 res = f16vec4(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = acosh_de60d8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_de60d8();
+  v.tint_symbol = acosh_de60d8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_de60d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 acosh_de60d8() {
   f16vec4 res = f16vec4(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = acosh_de60d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_de60d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_de60d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.glsl
index 6b9bd4b..f8d1fc2 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 acosh_e38f5c() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = acosh_e38f5c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 acosh_e38f5c() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acosh_e38f5c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 acosh_e38f5c() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_e38f5c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 acosh_e38f5c() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_e38f5c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_e38f5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 acosh_e38f5c() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_e38f5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.glsl
index 1cf9c7b..2fcd33d 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float acosh_ecf2d1() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = acosh_ecf2d1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float acosh_ecf2d1() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = acosh_ecf2d1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float acosh_ecf2d1() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_ecf2d1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float acosh_ecf2d1() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = acosh_ecf2d1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_ecf2d1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float acosh_ecf2d1() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_ecf2d1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.glsl
index b27d634..75e35b1 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acosh_f56574() {
   f16vec3 res = f16vec3(0.99951171875hf);
   return res;
 }
 void main() {
-  prevent_dce = acosh_f56574();
+  v.tint_symbol = acosh_f56574();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_f56574();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_f56574();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acosh_f56574() {
   f16vec3 res = f16vec3(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = acosh_f56574();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_f56574();
+  v.tint_symbol = acosh_f56574();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_f56574();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 acosh_f56574() {
   f16vec3 res = f16vec3(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = acosh_f56574();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_f56574();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_f56574();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.glsl
index 8d23fea..5ec0603 100644
--- a/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 asin_064953() {
+  vec4 res = vec4(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = asin_064953();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 asin_064953() {
+  vec4 res = vec4(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asin_064953();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 asin_064953() {
   vec4 res = vec4(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = asin_064953();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_064953();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_064953();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 asin_064953() {
-  vec4 res = vec4(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = asin_064953();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_064953();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_064953();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 asin_064953() {
-  vec4 res = vec4(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = asin_064953();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_064953();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_064953();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.glsl
index 5c0c217..1195fb0 100644
--- a/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_0bac07() {
+  vec3 res = vec3(0.5f);
+}
+void main() {
+  asin_0bac07();
+}
+#version 310 es
+
+void asin_0bac07() {
+  vec3 res = vec3(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_0bac07();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_0bac07() {
   vec3 res = vec3(0.5f);
 }
-void main() {
-  asin_0bac07();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_0bac07();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_0bac07();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_0bac07() {
-  vec3 res = vec3(0.5f);
-}
 void main() {
-  asin_0bac07();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_0bac07();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_0bac07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_0bac07() {
-  vec3 res = vec3(0.5f);
-}
-void main() {
-  asin_0bac07();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_0bac07();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_0bac07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.glsl
index 3980432..0f67f79 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asin_11dfda() {
   float16_t res = 0.499755859375hf;
   return res;
 }
 void main() {
-  prevent_dce = asin_11dfda();
+  v.tint_symbol = asin_11dfda();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_11dfda();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_11dfda();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asin_11dfda() {
   float16_t res = 0.499755859375hf;
   return res;
 }
-void main() {
-  prevent_dce = asin_11dfda();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_11dfda();
+  v.tint_symbol = asin_11dfda();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_11dfda();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t asin_11dfda() {
   float16_t res = 0.499755859375hf;
   return res;
 }
-void main() {
-  prevent_dce = asin_11dfda();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_11dfda();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_11dfda();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.glsl
index d72f43e..1daad91 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asin_2d8e29() {
   f16vec3 res = f16vec3(0.499755859375hf);
   return res;
 }
 void main() {
-  prevent_dce = asin_2d8e29();
+  v.tint_symbol = asin_2d8e29();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_2d8e29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_2d8e29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asin_2d8e29() {
   f16vec3 res = f16vec3(0.499755859375hf);
   return res;
 }
-void main() {
-  prevent_dce = asin_2d8e29();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_2d8e29();
+  v.tint_symbol = asin_2d8e29();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_2d8e29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 asin_2d8e29() {
   f16vec3 res = f16vec3(0.499755859375hf);
   return res;
 }
-void main() {
-  prevent_dce = asin_2d8e29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_2d8e29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_2d8e29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.glsl
index e2205e6..a6b92a4 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asin_3cfbd4() {
   f16vec4 res = f16vec4(0.499755859375hf);
   return res;
 }
 void main() {
-  prevent_dce = asin_3cfbd4();
+  v.tint_symbol = asin_3cfbd4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_3cfbd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asin_3cfbd4() {
   f16vec4 res = f16vec4(0.499755859375hf);
   return res;
 }
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_3cfbd4();
+  v.tint_symbol = asin_3cfbd4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_3cfbd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 asin_3cfbd4() {
   f16vec4 res = f16vec4(0.499755859375hf);
   return res;
 }
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_3cfbd4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.glsl
index 55d1161..2ac68c5 100644
--- a/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_64bb1f() {
+  vec4 res = vec4(0.5f);
+}
+void main() {
+  asin_64bb1f();
+}
+#version 310 es
+
+void asin_64bb1f() {
+  vec4 res = vec4(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_64bb1f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_64bb1f() {
   vec4 res = vec4(0.5f);
 }
-void main() {
-  asin_64bb1f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_64bb1f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_64bb1f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_64bb1f() {
-  vec4 res = vec4(0.5f);
-}
 void main() {
-  asin_64bb1f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_64bb1f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_64bb1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_64bb1f() {
-  vec4 res = vec4(0.5f);
-}
-void main() {
-  asin_64bb1f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_64bb1f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_64bb1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.glsl
index 285ccf9..aef15dc 100644
--- a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 asin_7b6a44() {
+  vec2 res = vec2(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = asin_7b6a44();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 asin_7b6a44() {
+  vec2 res = vec2(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asin_7b6a44();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 asin_7b6a44() {
   vec2 res = vec2(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_7b6a44();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 asin_7b6a44() {
-  vec2 res = vec2(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = asin_7b6a44();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_7b6a44();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 asin_7b6a44() {
-  vec2 res = vec2(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_7b6a44();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.glsl
index a0b2ae1..d730a31 100644
--- a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 asin_8cd9c9() {
+  vec3 res = vec3(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = asin_8cd9c9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 asin_8cd9c9() {
+  vec3 res = vec3(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asin_8cd9c9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 asin_8cd9c9() {
   vec3 res = vec3(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_8cd9c9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 asin_8cd9c9() {
-  vec3 res = vec3(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = asin_8cd9c9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_8cd9c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 asin_8cd9c9() {
-  vec3 res = vec3(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_8cd9c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.glsl
index 88b526d..048e94d 100644
--- a/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_a5dd88() {
+  vec2 res = vec2(0.5f);
+}
+void main() {
+  asin_a5dd88();
+}
+#version 310 es
+
+void asin_a5dd88() {
+  vec2 res = vec2(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_a5dd88();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_a5dd88() {
   vec2 res = vec2(0.5f);
 }
-void main() {
-  asin_a5dd88();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a5dd88();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_a5dd88();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a5dd88() {
-  vec2 res = vec2(0.5f);
-}
 void main() {
-  asin_a5dd88();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a5dd88();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a5dd88();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a5dd88() {
-  vec2 res = vec2(0.5f);
-}
-void main() {
-  asin_a5dd88();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a5dd88();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a5dd88();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.glsl
index 0de4fc2..a63b426 100644
--- a/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_a6d73a() {
+  float res = 0.5f;
+}
+void main() {
+  asin_a6d73a();
+}
+#version 310 es
+
+void asin_a6d73a() {
+  float res = 0.5f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_a6d73a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_a6d73a() {
   float res = 0.5f;
 }
-void main() {
-  asin_a6d73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a6d73a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_a6d73a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a6d73a() {
-  float res = 0.5f;
-}
 void main() {
-  asin_a6d73a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a6d73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a6d73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a6d73a() {
-  float res = 0.5f;
-}
-void main() {
-  asin_a6d73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a6d73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a6d73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.glsl
index ee74ba0..4e0df6b 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asin_b4aced() {
   f16vec2 res = f16vec2(0.499755859375hf);
   return res;
 }
 void main() {
-  prevent_dce = asin_b4aced();
+  v.tint_symbol = asin_b4aced();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_b4aced();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_b4aced();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asin_b4aced() {
   f16vec2 res = f16vec2(0.499755859375hf);
   return res;
 }
-void main() {
-  prevent_dce = asin_b4aced();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_b4aced();
+  v.tint_symbol = asin_b4aced();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_b4aced();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 asin_b4aced() {
   f16vec2 res = f16vec2(0.499755859375hf);
   return res;
 }
-void main() {
-  prevent_dce = asin_b4aced();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_b4aced();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_b4aced();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.glsl
index 69dbc09..7f7d675 100644
--- a/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float asin_c0c272() {
+  float res = 0.5f;
+  return res;
+}
+void main() {
+  v.tint_symbol = asin_c0c272();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float asin_c0c272() {
+  float res = 0.5f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asin_c0c272();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float asin_c0c272() {
   float res = 0.5f;
   return res;
 }
-void main() {
-  prevent_dce = asin_c0c272();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_c0c272();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_c0c272();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float asin_c0c272() {
-  float res = 0.5f;
-  return res;
-}
 void main() {
-  prevent_dce = asin_c0c272();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_c0c272();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_c0c272();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float asin_c0c272() {
-  float res = 0.5f;
-  return res;
-}
-void main() {
-  prevent_dce = asin_c0c272();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_c0c272();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_c0c272();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.glsl
index a32cf0e..720f4e0 100644
--- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float asinh_157447() {
+  float res = 0.88137358427047729492f;
+  return res;
+}
+void main() {
+  v.tint_symbol = asinh_157447();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float asinh_157447() {
+  float res = 0.88137358427047729492f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asinh_157447();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float asinh_157447() {
   float res = 0.88137358427047729492f;
   return res;
 }
-void main() {
-  prevent_dce = asinh_157447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_157447();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_157447();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float asinh_157447() {
-  float res = 0.88137358427047729492f;
-  return res;
-}
 void main() {
-  prevent_dce = asinh_157447();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_157447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_157447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float asinh_157447() {
-  float res = 0.88137358427047729492f;
-  return res;
-}
-void main() {
-  prevent_dce = asinh_157447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_157447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_157447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.glsl
index eca502c..01f1328 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_16b543() {
+  vec2 res = vec2(0.88137358427047729492f);
+}
+void main() {
+  asinh_16b543();
+}
+#version 310 es
+
+void asinh_16b543() {
+  vec2 res = vec2(0.88137358427047729492f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_16b543();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_16b543() {
   vec2 res = vec2(0.88137358427047729492f);
 }
-void main() {
-  asinh_16b543();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_16b543();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_16b543();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_16b543() {
-  vec2 res = vec2(0.88137358427047729492f);
-}
 void main() {
-  asinh_16b543();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_16b543();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_16b543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_16b543() {
-  vec2 res = vec2(0.88137358427047729492f);
-}
-void main() {
-  asinh_16b543();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_16b543();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_16b543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.glsl
index 0abd766..2deb7f4 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_180015() {
+  float res = 0.88137358427047729492f;
+}
+void main() {
+  asinh_180015();
+}
+#version 310 es
+
+void asinh_180015() {
+  float res = 0.88137358427047729492f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_180015();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_180015() {
   float res = 0.88137358427047729492f;
 }
-void main() {
-  asinh_180015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_180015();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_180015();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_180015() {
-  float res = 0.88137358427047729492f;
-}
 void main() {
-  asinh_180015();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_180015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_180015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_180015() {
-  float res = 0.88137358427047729492f;
-}
-void main() {
-  asinh_180015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_180015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_180015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.glsl
index ee4a784..654b77d 100644
--- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 asinh_2265ee() {
+  vec3 res = vec3(0.88137358427047729492f);
+  return res;
+}
+void main() {
+  v.tint_symbol = asinh_2265ee();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 asinh_2265ee() {
+  vec3 res = vec3(0.88137358427047729492f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asinh_2265ee();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 asinh_2265ee() {
   vec3 res = vec3(0.88137358427047729492f);
   return res;
 }
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_2265ee();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 asinh_2265ee() {
-  vec3 res = vec3(0.88137358427047729492f);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_2265ee();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_2265ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 asinh_2265ee() {
-  vec3 res = vec3(0.88137358427047729492f);
-  return res;
-}
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_2265ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.glsl
index 56bf7ce..9651d412 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asinh_468a48() {
   float16_t res = 0.88134765625hf;
   return res;
 }
 void main() {
-  prevent_dce = asinh_468a48();
+  v.tint_symbol = asinh_468a48();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_468a48();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_468a48();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asinh_468a48() {
   float16_t res = 0.88134765625hf;
   return res;
 }
-void main() {
-  prevent_dce = asinh_468a48();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_468a48();
+  v.tint_symbol = asinh_468a48();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_468a48();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t asinh_468a48() {
   float16_t res = 0.88134765625hf;
   return res;
 }
-void main() {
-  prevent_dce = asinh_468a48();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_468a48();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_468a48();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.glsl
index 57662fe..8148f34 100644
--- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 asinh_4a2226() {
+  vec2 res = vec2(0.88137358427047729492f);
+  return res;
+}
+void main() {
+  v.tint_symbol = asinh_4a2226();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 asinh_4a2226() {
+  vec2 res = vec2(0.88137358427047729492f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asinh_4a2226();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 asinh_4a2226() {
   vec2 res = vec2(0.88137358427047729492f);
   return res;
 }
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_4a2226();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 asinh_4a2226() {
-  vec2 res = vec2(0.88137358427047729492f);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_4a2226();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_4a2226();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 asinh_4a2226() {
-  vec2 res = vec2(0.88137358427047729492f);
-  return res;
-}
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_4a2226();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.glsl
index 5b40511..a917715 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_51079e() {
+  vec3 res = vec3(0.88137358427047729492f);
+}
+void main() {
+  asinh_51079e();
+}
+#version 310 es
+
+void asinh_51079e() {
+  vec3 res = vec3(0.88137358427047729492f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_51079e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_51079e() {
   vec3 res = vec3(0.88137358427047729492f);
 }
-void main() {
-  asinh_51079e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_51079e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_51079e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_51079e() {
-  vec3 res = vec3(0.88137358427047729492f);
-}
 void main() {
-  asinh_51079e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_51079e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_51079e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_51079e() {
-  vec3 res = vec3(0.88137358427047729492f);
-}
-void main() {
-  asinh_51079e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_51079e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_51079e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.glsl
index 128cf0e..2a00d06 100644
--- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 asinh_8d2e51() {
+  vec4 res = vec4(0.88137358427047729492f);
+  return res;
+}
+void main() {
+  v.tint_symbol = asinh_8d2e51();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 asinh_8d2e51() {
+  vec4 res = vec4(0.88137358427047729492f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = asinh_8d2e51();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 asinh_8d2e51() {
   vec4 res = vec4(0.88137358427047729492f);
   return res;
 }
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_8d2e51();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 asinh_8d2e51() {
-  vec4 res = vec4(0.88137358427047729492f);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_8d2e51();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_8d2e51();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 asinh_8d2e51() {
-  vec4 res = vec4(0.88137358427047729492f);
-  return res;
-}
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_8d2e51();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.glsl
index db020d0..4bb8233 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asinh_95ab2b() {
   f16vec4 res = f16vec4(0.88134765625hf);
   return res;
 }
 void main() {
-  prevent_dce = asinh_95ab2b();
+  v.tint_symbol = asinh_95ab2b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_95ab2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asinh_95ab2b() {
   f16vec4 res = f16vec4(0.88134765625hf);
   return res;
 }
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_95ab2b();
+  v.tint_symbol = asinh_95ab2b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_95ab2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 asinh_95ab2b() {
   f16vec4 res = f16vec4(0.88134765625hf);
   return res;
 }
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_95ab2b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.glsl
index a505dad..c19d7d0 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asinh_ad8f8b() {
   f16vec2 res = f16vec2(0.88134765625hf);
   return res;
 }
 void main() {
-  prevent_dce = asinh_ad8f8b();
+  v.tint_symbol = asinh_ad8f8b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_ad8f8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asinh_ad8f8b() {
   f16vec2 res = f16vec2(0.88134765625hf);
   return res;
 }
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_ad8f8b();
+  v.tint_symbol = asinh_ad8f8b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_ad8f8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 asinh_ad8f8b() {
   f16vec2 res = f16vec2(0.88134765625hf);
   return res;
 }
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_ad8f8b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.glsl
index 7cd71de..c4fcf26 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_cf8603() {
+  vec4 res = vec4(0.88137358427047729492f);
+}
+void main() {
+  asinh_cf8603();
+}
+#version 310 es
+
+void asinh_cf8603() {
+  vec4 res = vec4(0.88137358427047729492f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_cf8603();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_cf8603() {
   vec4 res = vec4(0.88137358427047729492f);
 }
-void main() {
-  asinh_cf8603();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_cf8603();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_cf8603();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_cf8603() {
-  vec4 res = vec4(0.88137358427047729492f);
-}
 void main() {
-  asinh_cf8603();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_cf8603();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_cf8603();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_cf8603() {
-  vec4 res = vec4(0.88137358427047729492f);
-}
-void main() {
-  asinh_cf8603();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_cf8603();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_cf8603();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.glsl
index 470e56c..1d2bc07 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asinh_fb5e8c() {
   f16vec3 res = f16vec3(0.88134765625hf);
   return res;
 }
 void main() {
-  prevent_dce = asinh_fb5e8c();
+  v.tint_symbol = asinh_fb5e8c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_fb5e8c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asinh_fb5e8c() {
   f16vec3 res = f16vec3(0.88134765625hf);
   return res;
 }
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_fb5e8c();
+  v.tint_symbol = asinh_fb5e8c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_fb5e8c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 asinh_fb5e8c() {
   f16vec3 res = f16vec3(0.88134765625hf);
   return res;
 }
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_fb5e8c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.glsl
index baa9d82..b5f6d63 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atan_02979a() {
+  float res = 0.78539818525314331055f;
+  return res;
+}
+void main() {
+  v.tint_symbol = atan_02979a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atan_02979a() {
+  float res = 0.78539818525314331055f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan_02979a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float atan_02979a() {
   float res = 0.78539818525314331055f;
   return res;
 }
-void main() {
-  prevent_dce = atan_02979a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_02979a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_02979a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atan_02979a() {
-  float res = 0.78539818525314331055f;
-  return res;
-}
 void main() {
-  prevent_dce = atan_02979a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_02979a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_02979a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atan_02979a() {
-  float res = 0.78539818525314331055f;
-  return res;
-}
-void main() {
-  prevent_dce = atan_02979a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_02979a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_02979a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.glsl
index 1ddd876..b0b6298 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan_19faea() {
   f16vec4 res = f16vec4(0.78515625hf);
   return res;
 }
 void main() {
-  prevent_dce = atan_19faea();
+  v.tint_symbol = atan_19faea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_19faea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_19faea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan_19faea() {
   f16vec4 res = f16vec4(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan_19faea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_19faea();
+  v.tint_symbol = atan_19faea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_19faea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 atan_19faea() {
   f16vec4 res = f16vec4(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan_19faea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_19faea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_19faea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.glsl
index 4854b14..f9dd4d8 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan_1e1764() {
   f16vec2 res = f16vec2(0.78515625hf);
   return res;
 }
 void main() {
-  prevent_dce = atan_1e1764();
+  v.tint_symbol = atan_1e1764();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_1e1764();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_1e1764();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan_1e1764() {
   f16vec2 res = f16vec2(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan_1e1764();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_1e1764();
+  v.tint_symbol = atan_1e1764();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_1e1764();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 atan_1e1764() {
   f16vec2 res = f16vec2(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan_1e1764();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_1e1764();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_1e1764();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.glsl
index 3accc32..05e3476 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atan_331e6d() {
+  vec3 res = vec3(0.78539818525314331055f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atan_331e6d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atan_331e6d() {
+  vec3 res = vec3(0.78539818525314331055f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan_331e6d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 atan_331e6d() {
   vec3 res = vec3(0.78539818525314331055f);
   return res;
 }
-void main() {
-  prevent_dce = atan_331e6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_331e6d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_331e6d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atan_331e6d() {
-  vec3 res = vec3(0.78539818525314331055f);
-  return res;
-}
 void main() {
-  prevent_dce = atan_331e6d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_331e6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_331e6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atan_331e6d() {
-  vec3 res = vec3(0.78539818525314331055f);
-  return res;
-}
-void main() {
-  prevent_dce = atan_331e6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_331e6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_331e6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.glsl
index cc25868..dcd81e9 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_5ca7b8() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+void main() {
+  atan_5ca7b8();
+}
+#version 310 es
+
+void atan_5ca7b8() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_5ca7b8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_5ca7b8() {
   vec2 res = vec2(0.78539818525314331055f);
 }
-void main() {
-  atan_5ca7b8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_5ca7b8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_5ca7b8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_5ca7b8() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
 void main() {
-  atan_5ca7b8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_5ca7b8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_5ca7b8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_5ca7b8() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
-void main() {
-  atan_5ca7b8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_5ca7b8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_5ca7b8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.glsl
index 914b192..907578a 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_749e1b() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+void main() {
+  atan_749e1b();
+}
+#version 310 es
+
+void atan_749e1b() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_749e1b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_749e1b() {
   vec3 res = vec3(0.78539818525314331055f);
 }
-void main() {
-  atan_749e1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_749e1b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_749e1b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_749e1b() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
 void main() {
-  atan_749e1b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_749e1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_749e1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_749e1b() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
-void main() {
-  atan_749e1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_749e1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_749e1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.glsl
index 04c59c4..8721302 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_7a2a75() {
+  float res = 0.78539818525314331055f;
+}
+void main() {
+  atan_7a2a75();
+}
+#version 310 es
+
+void atan_7a2a75() {
+  float res = 0.78539818525314331055f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_7a2a75();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_7a2a75() {
   float res = 0.78539818525314331055f;
 }
-void main() {
-  atan_7a2a75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_7a2a75();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_7a2a75();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_7a2a75() {
-  float res = 0.78539818525314331055f;
-}
 void main() {
-  atan_7a2a75();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_7a2a75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_7a2a75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_7a2a75() {
-  float res = 0.78539818525314331055f;
-}
-void main() {
-  atan_7a2a75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_7a2a75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_7a2a75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.glsl
index f3eca3f..23eb38b 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan_a5f421() {
   f16vec3 res = f16vec3(0.78515625hf);
   return res;
 }
 void main() {
-  prevent_dce = atan_a5f421();
+  v.tint_symbol = atan_a5f421();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a5f421();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a5f421();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan_a5f421() {
   f16vec3 res = f16vec3(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan_a5f421();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_a5f421();
+  v.tint_symbol = atan_a5f421();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a5f421();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 atan_a5f421() {
   f16vec3 res = f16vec3(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan_a5f421();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a5f421();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_a5f421();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.glsl
index aa98d97..e5accdc 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan_a7ba61() {
   float16_t res = 0.78515625hf;
   return res;
 }
 void main() {
-  prevent_dce = atan_a7ba61();
+  v.tint_symbol = atan_a7ba61();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a7ba61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a7ba61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan_a7ba61() {
   float16_t res = 0.78515625hf;
   return res;
 }
-void main() {
-  prevent_dce = atan_a7ba61();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_a7ba61();
+  v.tint_symbol = atan_a7ba61();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a7ba61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t atan_a7ba61() {
   float16_t res = 0.78515625hf;
   return res;
 }
-void main() {
-  prevent_dce = atan_a7ba61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a7ba61();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_a7ba61();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.glsl
index 0062e30..9763aa1 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atan_a8b696() {
+  vec4 res = vec4(0.78539818525314331055f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atan_a8b696();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atan_a8b696() {
+  vec4 res = vec4(0.78539818525314331055f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan_a8b696();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 atan_a8b696() {
   vec4 res = vec4(0.78539818525314331055f);
   return res;
 }
-void main() {
-  prevent_dce = atan_a8b696();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a8b696();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_a8b696();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atan_a8b696() {
-  vec4 res = vec4(0.78539818525314331055f);
-  return res;
-}
 void main() {
-  prevent_dce = atan_a8b696();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a8b696();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a8b696();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atan_a8b696() {
-  vec4 res = vec4(0.78539818525314331055f);
-  return res;
-}
-void main() {
-  prevent_dce = atan_a8b696();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a8b696();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a8b696();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.glsl
index 42e3398..051e173 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atan_ad96e4() {
+  vec2 res = vec2(0.78539818525314331055f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atan_ad96e4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atan_ad96e4() {
+  vec2 res = vec2(0.78539818525314331055f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan_ad96e4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 atan_ad96e4() {
   vec2 res = vec2(0.78539818525314331055f);
   return res;
 }
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_ad96e4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atan_ad96e4() {
-  vec2 res = vec2(0.78539818525314331055f);
-  return res;
-}
 void main() {
-  prevent_dce = atan_ad96e4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_ad96e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atan_ad96e4() {
-  vec2 res = vec2(0.78539818525314331055f);
-  return res;
-}
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_ad96e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.glsl
index 4308d79..cfd1eb2 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_d17fb2() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+void main() {
+  atan_d17fb2();
+}
+#version 310 es
+
+void atan_d17fb2() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_d17fb2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_d17fb2() {
   vec4 res = vec4(0.78539818525314331055f);
 }
-void main() {
-  atan_d17fb2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_d17fb2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_d17fb2() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
 void main() {
-  atan_d17fb2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_d17fb2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_d17fb2() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
-void main() {
-  atan_d17fb2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_d17fb2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.glsl
index d73b9c5..ab41168 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_034ace() {
+  float res = 0.78539818525314331055f;
+}
+void main() {
+  atan2_034ace();
+}
+#version 310 es
+
+void atan2_034ace() {
+  float res = 0.78539818525314331055f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_034ace();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_034ace() {
   float res = 0.78539818525314331055f;
 }
-void main() {
-  atan2_034ace();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_034ace();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_034ace();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_034ace() {
-  float res = 0.78539818525314331055f;
-}
 void main() {
-  atan2_034ace();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_034ace();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_034ace();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_034ace() {
-  float res = 0.78539818525314331055f;
-}
-void main() {
-  atan2_034ace();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_034ace();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_034ace();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.glsl
index 09471f2..e7330ed 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan2_21dfea() {
   f16vec3 res = f16vec3(0.78515625hf);
   return res;
 }
 void main() {
-  prevent_dce = atan2_21dfea();
+  v.tint_symbol = atan2_21dfea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_21dfea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_21dfea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan2_21dfea() {
   f16vec3 res = f16vec3(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan2_21dfea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_21dfea();
+  v.tint_symbol = atan2_21dfea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_21dfea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 atan2_21dfea() {
   f16vec3 res = f16vec3(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan2_21dfea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_21dfea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_21dfea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.glsl
index 1c8489b..fc3d9e3 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_3c2865() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+void main() {
+  atan2_3c2865();
+}
+#version 310 es
+
+void atan2_3c2865() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_3c2865();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_3c2865() {
   vec3 res = vec3(0.78539818525314331055f);
 }
-void main() {
-  atan2_3c2865();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_3c2865();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_3c2865();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_3c2865() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
 void main() {
-  atan2_3c2865();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_3c2865();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_3c2865();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_3c2865() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
-void main() {
-  atan2_3c2865();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_3c2865();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_3c2865();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.glsl
index b75d736..0215650 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atan2_57fb13() {
+  vec2 res = vec2(0.78539818525314331055f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atan2_57fb13();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atan2_57fb13() {
+  vec2 res = vec2(0.78539818525314331055f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan2_57fb13();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 atan2_57fb13() {
   vec2 res = vec2(0.78539818525314331055f);
   return res;
 }
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_57fb13();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atan2_57fb13() {
-  vec2 res = vec2(0.78539818525314331055f);
-  return res;
-}
 void main() {
-  prevent_dce = atan2_57fb13();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_57fb13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atan2_57fb13() {
-  vec2 res = vec2(0.78539818525314331055f);
-  return res;
-}
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_57fb13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.glsl
index 160fe53..c313f3b 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan2_93febc() {
   f16vec2 res = f16vec2(0.78515625hf);
   return res;
 }
 void main() {
-  prevent_dce = atan2_93febc();
+  v.tint_symbol = atan2_93febc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_93febc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_93febc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan2_93febc() {
   f16vec2 res = f16vec2(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan2_93febc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_93febc();
+  v.tint_symbol = atan2_93febc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_93febc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 atan2_93febc() {
   f16vec2 res = f16vec2(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan2_93febc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_93febc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_93febc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.glsl
index b9d9377..3dc532b 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atan2_96057c() {
+  float res = 0.78539818525314331055f;
+  return res;
+}
+void main() {
+  v.tint_symbol = atan2_96057c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atan2_96057c() {
+  float res = 0.78539818525314331055f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan2_96057c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float atan2_96057c() {
   float res = 0.78539818525314331055f;
   return res;
 }
-void main() {
-  prevent_dce = atan2_96057c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_96057c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_96057c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atan2_96057c() {
-  float res = 0.78539818525314331055f;
-  return res;
-}
 void main() {
-  prevent_dce = atan2_96057c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_96057c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_96057c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atan2_96057c() {
-  float res = 0.78539818525314331055f;
-  return res;
-}
-void main() {
-  prevent_dce = atan2_96057c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_96057c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_96057c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.glsl
index c33e7bd..9014757 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atan2_a70d0d() {
+  vec3 res = vec3(0.78539818525314331055f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atan2_a70d0d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atan2_a70d0d() {
+  vec3 res = vec3(0.78539818525314331055f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan2_a70d0d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 atan2_a70d0d() {
   vec3 res = vec3(0.78539818525314331055f);
   return res;
 }
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_a70d0d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atan2_a70d0d() {
-  vec3 res = vec3(0.78539818525314331055f);
-  return res;
-}
 void main() {
-  prevent_dce = atan2_a70d0d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_a70d0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atan2_a70d0d() {
-  vec3 res = vec3(0.78539818525314331055f);
-  return res;
-}
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_a70d0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.glsl
index 7c1d53d..dc8a462 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atan2_ae713e() {
+  vec4 res = vec4(0.78539818525314331055f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atan2_ae713e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atan2_ae713e() {
+  vec4 res = vec4(0.78539818525314331055f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atan2_ae713e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 atan2_ae713e() {
   vec4 res = vec4(0.78539818525314331055f);
   return res;
 }
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_ae713e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atan2_ae713e() {
-  vec4 res = vec4(0.78539818525314331055f);
-  return res;
-}
 void main() {
-  prevent_dce = atan2_ae713e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ae713e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atan2_ae713e() {
-  vec4 res = vec4(0.78539818525314331055f);
-  return res;
-}
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ae713e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.glsl
index e341891..31aa131 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_c19683() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+void main() {
+  atan2_c19683();
+}
+#version 310 es
+
+void atan2_c19683() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_c19683();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_c19683() {
   vec2 res = vec2(0.78539818525314331055f);
 }
-void main() {
-  atan2_c19683();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c19683();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_c19683();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c19683() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
 void main() {
-  atan2_c19683();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c19683();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c19683();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c19683() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
-void main() {
-  atan2_c19683();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c19683();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c19683();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.glsl
index e8f9d40..4a208d3 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_c4be45() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+void main() {
+  atan2_c4be45();
+}
+#version 310 es
+
+void atan2_c4be45() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_c4be45();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_c4be45() {
   vec4 res = vec4(0.78539818525314331055f);
 }
-void main() {
-  atan2_c4be45();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c4be45();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_c4be45();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c4be45() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
 void main() {
-  atan2_c4be45();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c4be45();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c4be45();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c4be45() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
-void main() {
-  atan2_c4be45();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c4be45();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c4be45();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.glsl
index caae10a..154fbbe 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan2_ca698e() {
   float16_t res = 0.78515625hf;
   return res;
 }
 void main() {
-  prevent_dce = atan2_ca698e();
+  v.tint_symbol = atan2_ca698e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ca698e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ca698e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan2_ca698e() {
   float16_t res = 0.78515625hf;
   return res;
 }
-void main() {
-  prevent_dce = atan2_ca698e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_ca698e();
+  v.tint_symbol = atan2_ca698e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ca698e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t atan2_ca698e() {
   float16_t res = 0.78515625hf;
   return res;
 }
-void main() {
-  prevent_dce = atan2_ca698e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ca698e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_ca698e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.glsl
index bde56bf..9bfad09 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan2_d983ab() {
   f16vec4 res = f16vec4(0.78515625hf);
   return res;
 }
 void main() {
-  prevent_dce = atan2_d983ab();
+  v.tint_symbol = atan2_d983ab();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_d983ab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_d983ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan2_d983ab() {
   f16vec4 res = f16vec4(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan2_d983ab();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_d983ab();
+  v.tint_symbol = atan2_d983ab();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_d983ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 atan2_d983ab() {
   f16vec4 res = f16vec4(0.78515625hf);
   return res;
 }
-void main() {
-  prevent_dce = atan2_d983ab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_d983ab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_d983ab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.glsl
index 7c9ac4b..2615585 100644
--- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atanh_440cca() {
+  vec3 res = vec3(0.54930615425109863281f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atanh_440cca();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atanh_440cca() {
+  vec3 res = vec3(0.54930615425109863281f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atanh_440cca();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 atanh_440cca() {
   vec3 res = vec3(0.54930615425109863281f);
   return res;
 }
-void main() {
-  prevent_dce = atanh_440cca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_440cca();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_440cca();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atanh_440cca() {
-  vec3 res = vec3(0.54930615425109863281f);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_440cca();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_440cca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_440cca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atanh_440cca() {
-  vec3 res = vec3(0.54930615425109863281f);
-  return res;
-}
-void main() {
-  prevent_dce = atanh_440cca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_440cca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_440cca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.glsl
index e627eed..2428d82 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atanh_5bf88d() {
   f16vec2 res = f16vec2(0.548828125hf);
   return res;
 }
 void main() {
-  prevent_dce = atanh_5bf88d();
+  v.tint_symbol = atanh_5bf88d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_5bf88d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atanh_5bf88d() {
   f16vec2 res = f16vec2(0.548828125hf);
   return res;
 }
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_5bf88d();
+  v.tint_symbol = atanh_5bf88d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_5bf88d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 atanh_5bf88d() {
   f16vec2 res = f16vec2(0.548828125hf);
   return res;
 }
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_5bf88d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.glsl
index 74280c6..1c3a757 100644
--- a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_70d5bd() {
+  vec2 res = vec2(0.54930615425109863281f);
+}
+void main() {
+  atanh_70d5bd();
+}
+#version 310 es
+
+void atanh_70d5bd() {
+  vec2 res = vec2(0.54930615425109863281f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_70d5bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_70d5bd() {
   vec2 res = vec2(0.54930615425109863281f);
 }
-void main() {
-  atanh_70d5bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_70d5bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_70d5bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_70d5bd() {
-  vec2 res = vec2(0.54930615425109863281f);
-}
 void main() {
-  atanh_70d5bd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_70d5bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_70d5bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_70d5bd() {
-  vec2 res = vec2(0.54930615425109863281f);
-}
-void main() {
-  atanh_70d5bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_70d5bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_70d5bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.glsl
index e8c9bc4..5342563 100644
--- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atanh_7997d8() {
+  float res = 0.54930615425109863281f;
+  return res;
+}
+void main() {
+  v.tint_symbol = atanh_7997d8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atanh_7997d8() {
+  float res = 0.54930615425109863281f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atanh_7997d8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float atanh_7997d8() {
   float res = 0.54930615425109863281f;
   return res;
 }
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_7997d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atanh_7997d8() {
-  float res = 0.54930615425109863281f;
-  return res;
-}
 void main() {
-  prevent_dce = atanh_7997d8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_7997d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atanh_7997d8() {
-  float res = 0.54930615425109863281f;
-  return res;
-}
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_7997d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.glsl
index 91a66c9..9129cb3 100644
--- a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_7f2874() {
+  vec3 res = vec3(0.54930615425109863281f);
+}
+void main() {
+  atanh_7f2874();
+}
+#version 310 es
+
+void atanh_7f2874() {
+  vec3 res = vec3(0.54930615425109863281f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_7f2874();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_7f2874() {
   vec3 res = vec3(0.54930615425109863281f);
 }
-void main() {
-  atanh_7f2874();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_7f2874();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_7f2874();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_7f2874() {
-  vec3 res = vec3(0.54930615425109863281f);
-}
 void main() {
-  atanh_7f2874();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_7f2874();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_7f2874();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_7f2874() {
-  vec3 res = vec3(0.54930615425109863281f);
-}
-void main() {
-  atanh_7f2874();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_7f2874();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_7f2874();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.glsl
index bc4bb60..9df7ca6 100644
--- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atanh_c0e634() {
+  vec2 res = vec2(0.54930615425109863281f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atanh_c0e634();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atanh_c0e634() {
+  vec2 res = vec2(0.54930615425109863281f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atanh_c0e634();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 atanh_c0e634() {
   vec2 res = vec2(0.54930615425109863281f);
   return res;
 }
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_c0e634();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atanh_c0e634() {
-  vec2 res = vec2(0.54930615425109863281f);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_c0e634();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_c0e634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atanh_c0e634() {
-  vec2 res = vec2(0.54930615425109863281f);
-  return res;
-}
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_c0e634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.glsl
index 50143f0..64cb96d 100644
--- a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_c5dc32() {
+  float res = 0.54930615425109863281f;
+}
+void main() {
+  atanh_c5dc32();
+}
+#version 310 es
+
+void atanh_c5dc32() {
+  float res = 0.54930615425109863281f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_c5dc32();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_c5dc32() {
   float res = 0.54930615425109863281f;
 }
-void main() {
-  atanh_c5dc32();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_c5dc32();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_c5dc32();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_c5dc32() {
-  float res = 0.54930615425109863281f;
-}
 void main() {
-  atanh_c5dc32();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_c5dc32();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_c5dc32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_c5dc32() {
-  float res = 0.54930615425109863281f;
-}
-void main() {
-  atanh_c5dc32();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_c5dc32();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_c5dc32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.glsl
index e6c3566..441472f 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atanh_d2d8cd() {
   float16_t res = 0.548828125hf;
   return res;
 }
 void main() {
-  prevent_dce = atanh_d2d8cd();
+  v.tint_symbol = atanh_d2d8cd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_d2d8cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atanh_d2d8cd() {
   float16_t res = 0.548828125hf;
   return res;
 }
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_d2d8cd();
+  v.tint_symbol = atanh_d2d8cd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_d2d8cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t atanh_d2d8cd() {
   float16_t res = 0.548828125hf;
   return res;
 }
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_d2d8cd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.glsl
index 67783c3..de100f9 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atanh_e3b450() {
   f16vec4 res = f16vec4(0.548828125hf);
   return res;
 }
 void main() {
-  prevent_dce = atanh_e3b450();
+  v.tint_symbol = atanh_e3b450();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_e3b450();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_e3b450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atanh_e3b450() {
   f16vec4 res = f16vec4(0.548828125hf);
   return res;
 }
-void main() {
-  prevent_dce = atanh_e3b450();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_e3b450();
+  v.tint_symbol = atanh_e3b450();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_e3b450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 atanh_e3b450() {
   f16vec4 res = f16vec4(0.548828125hf);
   return res;
 }
-void main() {
-  prevent_dce = atanh_e3b450();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_e3b450();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_e3b450();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.glsl
index 1e223c9..6c080bc 100644
--- a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_e431bb() {
+  vec4 res = vec4(0.54930615425109863281f);
+}
+void main() {
+  atanh_e431bb();
+}
+#version 310 es
+
+void atanh_e431bb() {
+  vec4 res = vec4(0.54930615425109863281f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_e431bb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_e431bb() {
   vec4 res = vec4(0.54930615425109863281f);
 }
-void main() {
-  atanh_e431bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_e431bb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_e431bb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_e431bb() {
-  vec4 res = vec4(0.54930615425109863281f);
-}
 void main() {
-  atanh_e431bb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_e431bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_e431bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_e431bb() {
-  vec4 res = vec4(0.54930615425109863281f);
-}
-void main() {
-  atanh_e431bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_e431bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_e431bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.glsl
index e4c710b..03f0830 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atanh_ec4b06() {
   f16vec3 res = f16vec3(0.548828125hf);
   return res;
 }
 void main() {
-  prevent_dce = atanh_ec4b06();
+  v.tint_symbol = atanh_ec4b06();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_ec4b06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atanh_ec4b06() {
   f16vec3 res = f16vec3(0.548828125hf);
   return res;
 }
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_ec4b06();
+  v.tint_symbol = atanh_ec4b06();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_ec4b06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 atanh_ec4b06() {
   f16vec3 res = f16vec3(0.548828125hf);
   return res;
 }
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_ec4b06();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.glsl
index 68437a8..6cbe023 100644
--- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atanh_f3e01b() {
+  vec4 res = vec4(0.54930615425109863281f);
+  return res;
+}
+void main() {
+  v.tint_symbol = atanh_f3e01b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atanh_f3e01b() {
+  vec4 res = vec4(0.54930615425109863281f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = atanh_f3e01b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 atanh_f3e01b() {
   vec4 res = vec4(0.54930615425109863281f);
   return res;
 }
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_f3e01b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atanh_f3e01b() {
-  vec4 res = vec4(0.54930615425109863281f);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_f3e01b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_f3e01b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atanh_f3e01b() {
-  vec4 res = vec4(0.54930615425109863281f);
-  return res;
-}
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_f3e01b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/0fe0c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/0fe0c9.wgsl.expected.ir.glsl
index 1db86fc..4dc94ba 100644
--- a/test/tint/builtins/gen/literal/bitcast/0fe0c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/0fe0c9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 bitcast_0fe0c9() {
+  vec3 res = vec3(1.40129846e-45f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_0fe0c9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 bitcast_0fe0c9() {
+  vec3 res = vec3(1.40129846e-45f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_0fe0c9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 bitcast_0fe0c9() {
   vec3 res = vec3(1.40129846e-45f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_0fe0c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_0fe0c9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_0fe0c9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 bitcast_0fe0c9() {
-  vec3 res = vec3(1.40129846e-45f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_0fe0c9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_0fe0c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_0fe0c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 bitcast_0fe0c9() {
-  vec3 res = vec3(1.40129846e-45f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_0fe0c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_0fe0c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_0fe0c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/160c09.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/160c09.wgsl.expected.ir.glsl
index 4643a17..68e23f2 100644
--- a/test/tint/builtins/gen/literal/bitcast/160c09.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/160c09.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_160c09() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_160c09();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_160c09() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_160c09();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 bitcast_160c09() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_160c09();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_160c09() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_160c09();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_160c09();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_160c09() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_160c09();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/16cba4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/16cba4.wgsl.expected.ir.glsl
index ecca92b..b8db9a9 100644
--- a/test/tint/builtins/gen/literal/bitcast/16cba4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/16cba4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_16cba4() {
+  int res = 1065353216;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_16cba4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_16cba4() {
+  int res = 1065353216;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_16cba4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int bitcast_16cba4() {
   int res = 1065353216;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_16cba4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_16cba4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_16cba4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_16cba4() {
-  int res = 1065353216;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_16cba4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_16cba4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_16cba4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_16cba4() {
-  int res = 1065353216;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_16cba4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_16cba4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_16cba4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/1c3b31.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/1c3b31.wgsl.expected.ir.glsl
index 0bff942..f6f1af0 100644
--- a/test/tint/builtins/gen/literal/bitcast/1c3b31.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/1c3b31.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_1c3b31() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_1c3b31();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_1c3b31() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_1c3b31();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 bitcast_1c3b31() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_1c3b31();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_1c3b31();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_1c3b31();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_1c3b31() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_1c3b31();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_1c3b31();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_1c3b31();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_1c3b31() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_1c3b31();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_1c3b31();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_1c3b31();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.glsl
index 7658872..7745646 100644
--- a/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/1df11f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_1df11f() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_1df11f();
+  v.tint_symbol = bitcast_1df11f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_1df11f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_1df11f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_1df11f() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_1df11f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_1df11f();
+  v.tint_symbol = bitcast_1df11f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_1df11f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 bitcast_1df11f() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_1df11f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_1df11f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_1df11f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/214f23.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/214f23.wgsl.expected.ir.glsl
index 7d11d11..808f574 100644
--- a/test/tint/builtins/gen/literal/bitcast/214f23.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/214f23.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_214f23() {
+  ivec2 res = ivec2(1006648320);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_214f23();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_214f23() {
+  ivec2 res = ivec2(1006648320);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_214f23();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 bitcast_214f23() {
   ivec2 res = ivec2(1006648320);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_214f23();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_214f23();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_214f23();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_214f23() {
-  ivec2 res = ivec2(1006648320);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_214f23();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_214f23();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_214f23();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_214f23() {
-  ivec2 res = ivec2(1006648320);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_214f23();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_214f23();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_214f23();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/23c8bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/23c8bd.wgsl.expected.ir.glsl
index 6e8c272..9eb8390 100644
--- a/test/tint/builtins/gen/literal/bitcast/23c8bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/23c8bd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_23c8bd() {
+  float res = 0.00782680511474609375f;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_23c8bd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_23c8bd() {
+  float res = 0.00782680511474609375f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_23c8bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float bitcast_23c8bd() {
   float res = 0.00782680511474609375f;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_23c8bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_23c8bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_23c8bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_23c8bd() {
-  float res = 0.00782680511474609375f;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_23c8bd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_23c8bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_23c8bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_23c8bd() {
-  float res = 0.00782680511474609375f;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_23c8bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_23c8bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_23c8bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/2421c8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/2421c8.wgsl.expected.ir.glsl
index d33410c..76d76df 100644
--- a/test/tint/builtins/gen/literal/bitcast/2421c8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/2421c8.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_2421c8() {
+  vec2 res = vec2(1.40129846e-45f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_2421c8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_2421c8() {
+  vec2 res = vec2(1.40129846e-45f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_2421c8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 bitcast_2421c8() {
   vec2 res = vec2(1.40129846e-45f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_2421c8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2421c8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_2421c8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_2421c8() {
-  vec2 res = vec2(1.40129846e-45f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_2421c8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2421c8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2421c8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_2421c8() {
-  vec2 res = vec2(1.40129846e-45f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_2421c8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2421c8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2421c8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/287bdf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/287bdf.wgsl.expected.ir.glsl
index 4ab8b54..393a59f 100644
--- a/test/tint/builtins/gen/literal/bitcast/287bdf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/287bdf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_287bdf() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_287bdf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_287bdf() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_287bdf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 bitcast_287bdf() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_287bdf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_287bdf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_287bdf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_287bdf() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_287bdf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_287bdf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_287bdf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_287bdf() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_287bdf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_287bdf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_287bdf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/2a6e58.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/2a6e58.wgsl.expected.ir.glsl
index 73147b9..41c9e3d 100644
--- a/test/tint/builtins/gen/literal/bitcast/2a6e58.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/2a6e58.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_2a6e58() {
+  vec2 res = vec2(0.00782680511474609375f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_2a6e58();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_2a6e58() {
+  vec2 res = vec2(0.00782680511474609375f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_2a6e58();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 bitcast_2a6e58() {
   vec2 res = vec2(0.00782680511474609375f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_2a6e58();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2a6e58();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_2a6e58();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_2a6e58() {
-  vec2 res = vec2(0.00782680511474609375f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_2a6e58();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2a6e58();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2a6e58();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_2a6e58() {
-  vec2 res = vec2(0.00782680511474609375f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_2a6e58();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2a6e58();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2a6e58();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/2b05b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/2b05b3.wgsl.expected.ir.glsl
index 0399682..598df72 100644
--- a/test/tint/builtins/gen/literal/bitcast/2b05b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/2b05b3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 bitcast_2b05b3() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_2b05b3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 bitcast_2b05b3() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_2b05b3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 bitcast_2b05b3() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_2b05b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2b05b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_2b05b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 bitcast_2b05b3() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_2b05b3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2b05b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2b05b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 bitcast_2b05b3() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_2b05b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2b05b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2b05b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/2b2738.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/2b2738.wgsl.expected.ir.glsl
index 2285742..8cdd6ed 100644
--- a/test/tint/builtins/gen/literal/bitcast/2b2738.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/2b2738.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_2b2738() {
+  uvec2 res = uvec2(1065353216u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_2b2738();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_2b2738() {
+  uvec2 res = uvec2(1065353216u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_2b2738();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 bitcast_2b2738() {
   uvec2 res = uvec2(1065353216u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_2b2738();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2b2738();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_2b2738();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_2b2738() {
-  uvec2 res = uvec2(1065353216u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_2b2738();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2b2738();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2b2738();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_2b2738() {
-  uvec2 res = uvec2(1065353216u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_2b2738();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_2b2738();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_2b2738();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/31c080.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/31c080.wgsl.expected.ir.glsl
index ef5ffb7..d81cee4 100644
--- a/test/tint/builtins/gen/literal/bitcast/31c080.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/31c080.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_31c080() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_31c080();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_31c080() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_31c080();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint bitcast_31c080() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_31c080();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_31c080();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_31c080();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_31c080() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_31c080();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_31c080();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_31c080();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_31c080() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_31c080();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_31c080();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_31c080();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/332f78.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/332f78.wgsl.expected.ir.glsl
index 9c3c82b..1d7584c 100644
--- a/test/tint/builtins/gen/literal/bitcast/332f78.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/332f78.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 bitcast_332f78() {
+  vec3 res = vec3(1.40129846e-45f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_332f78();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 bitcast_332f78() {
+  vec3 res = vec3(1.40129846e-45f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_332f78();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 bitcast_332f78() {
   vec3 res = vec3(1.40129846e-45f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_332f78();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_332f78();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_332f78();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 bitcast_332f78() {
-  vec3 res = vec3(1.40129846e-45f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_332f78();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_332f78();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_332f78();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 bitcast_332f78() {
-  vec3 res = vec3(1.40129846e-45f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_332f78();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_332f78();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_332f78();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.glsl
index e92fd9a..07759aa 100644
--- a/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/3e7b47.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_3e7b47() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_3e7b47();
+  v.tint_symbol = bitcast_3e7b47();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3e7b47();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_3e7b47();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_3e7b47() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_3e7b47();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_3e7b47();
+  v.tint_symbol = bitcast_3e7b47();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_3e7b47();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 bitcast_3e7b47() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_3e7b47();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3e7b47();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_3e7b47();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/3f7437.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/3f7437.wgsl.expected.ir.glsl
index 5ec7cf6..1efb3d0 100644
--- a/test/tint/builtins/gen/literal/bitcast/3f7437.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/3f7437.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 bitcast_3f7437() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_3f7437();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 bitcast_3f7437() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_3f7437();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 bitcast_3f7437() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_3f7437();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3f7437();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_3f7437();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 bitcast_3f7437() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_3f7437();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3f7437();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_3f7437();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 bitcast_3f7437() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_3f7437();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3f7437();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_3f7437();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/3fdacd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/3fdacd.wgsl.expected.ir.glsl
index 424155d..9ed7614 100644
--- a/test/tint/builtins/gen/literal/bitcast/3fdacd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/3fdacd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 bitcast_3fdacd() {
+  vec4 res = vec4(1.40129846e-45f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_3fdacd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 bitcast_3fdacd() {
+  vec4 res = vec4(1.40129846e-45f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_3fdacd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 bitcast_3fdacd() {
   vec4 res = vec4(1.40129846e-45f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_3fdacd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3fdacd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_3fdacd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 bitcast_3fdacd() {
-  vec4 res = vec4(1.40129846e-45f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_3fdacd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3fdacd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_3fdacd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 bitcast_3fdacd() {
-  vec4 res = vec4(1.40129846e-45f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_3fdacd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_3fdacd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_3fdacd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.glsl
index 2e2e533..027c051 100644
--- a/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/429d64.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_429d64() {
   f16vec4 res = f16vec4(0.0hf, 1.875hf, 0.0hf, 1.875hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_429d64();
+  v.tint_symbol = bitcast_429d64();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_429d64();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_429d64();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_429d64() {
   f16vec4 res = f16vec4(0.0hf, 1.875hf, 0.0hf, 1.875hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_429d64();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_429d64();
+  v.tint_symbol = bitcast_429d64();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_429d64();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 bitcast_429d64() {
   f16vec4 res = f16vec4(0.0hf, 1.875hf, 0.0hf, 1.875hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_429d64();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_429d64();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_429d64();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.glsl
index 7ebe1bf..7203585 100644
--- a/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/436211.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t bitcast_436211() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = bitcast_436211();
+  v.tint_symbol = bitcast_436211();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_436211();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_436211();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t bitcast_436211() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_436211();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_436211();
+  v.tint_symbol = bitcast_436211();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_436211();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t bitcast_436211() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_436211();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_436211();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_436211();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.glsl
index 426ec6a..deff4a0 100644
--- a/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/5081ed.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 bitcast_5081ed() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_5081ed();
+  v.tint_symbol = bitcast_5081ed();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_5081ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_5081ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 bitcast_5081ed() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_5081ed();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_5081ed();
+  v.tint_symbol = bitcast_5081ed();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_5081ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 bitcast_5081ed() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_5081ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_5081ed();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_5081ed();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/56266e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/56266e.wgsl.expected.ir.glsl
index 9ea1128..1a608a8 100644
--- a/test/tint/builtins/gen/literal/bitcast/56266e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/56266e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_56266e() {
+  uvec3 res = uvec3(1065353216u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_56266e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_56266e() {
+  uvec3 res = uvec3(1065353216u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_56266e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 bitcast_56266e() {
   uvec3 res = uvec3(1065353216u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_56266e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_56266e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_56266e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_56266e() {
-  uvec3 res = uvec3(1065353216u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_56266e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_56266e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_56266e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_56266e() {
-  uvec3 res = uvec3(1065353216u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_56266e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_56266e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_56266e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.glsl
index 20e475d..6fadc49 100644
--- a/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/66e93d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_66e93d() {
   f16vec2 res = f16vec2(0.00000005960464477539hf, 0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_66e93d();
+  v.tint_symbol = bitcast_66e93d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_66e93d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_66e93d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_66e93d() {
   f16vec2 res = f16vec2(0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_66e93d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_66e93d();
+  v.tint_symbol = bitcast_66e93d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_66e93d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 bitcast_66e93d() {
   f16vec2 res = f16vec2(0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_66e93d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_66e93d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_66e93d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.glsl
index 636f805..e28f258 100644
--- a/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/674557.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_674557() {
   f16vec2 res = f16vec2(0.00000005960464477539hf, 0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_674557();
+  v.tint_symbol = bitcast_674557();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_674557();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_674557();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_674557() {
   f16vec2 res = f16vec2(0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_674557();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_674557();
+  v.tint_symbol = bitcast_674557();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_674557();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 bitcast_674557() {
   f16vec2 res = f16vec2(0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_674557();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_674557();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_674557();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/6ac6f9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/6ac6f9.wgsl.expected.ir.glsl
index 760c171..7ed2c59 100644
--- a/test/tint/builtins/gen/literal/bitcast/6ac6f9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/6ac6f9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_6ac6f9() {
+  int res = 1006648320;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_6ac6f9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_6ac6f9() {
+  int res = 1006648320;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_6ac6f9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int bitcast_6ac6f9() {
   int res = 1006648320;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_6ac6f9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_6ac6f9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_6ac6f9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_6ac6f9() {
-  int res = 1006648320;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_6ac6f9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_6ac6f9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_6ac6f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_6ac6f9() {
-  int res = 1006648320;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_6ac6f9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_6ac6f9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_6ac6f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/6de2bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/6de2bd.wgsl.expected.ir.glsl
index 1ecb123..c66d8de0 100644
--- a/test/tint/builtins/gen/literal/bitcast/6de2bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/6de2bd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 bitcast_6de2bd() {
+  ivec4 res = ivec4(1065353216);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_6de2bd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 bitcast_6de2bd() {
+  ivec4 res = ivec4(1065353216);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_6de2bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 bitcast_6de2bd() {
   ivec4 res = ivec4(1065353216);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_6de2bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_6de2bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_6de2bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 bitcast_6de2bd() {
-  ivec4 res = ivec4(1065353216);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_6de2bd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_6de2bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_6de2bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 bitcast_6de2bd() {
-  ivec4 res = ivec4(1065353216);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_6de2bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_6de2bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_6de2bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/70b121.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/70b121.wgsl.expected.ir.glsl
index 8f7979c..09df200 100644
--- a/test/tint/builtins/gen/literal/bitcast/70b121.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/70b121.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_70b121() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_70b121();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_70b121() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_70b121();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 bitcast_70b121() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_70b121();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_70b121() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_70b121();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_70b121();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_70b121() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_70b121();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.glsl
index bed5873..089ffa5 100644
--- a/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/71c92a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_71c92a() {
   f16vec4 res = f16vec4(0.00000005960464477539hf, 0.0hf, 0.00000005960464477539hf, 0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_71c92a();
+  v.tint_symbol = bitcast_71c92a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_71c92a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_71c92a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_71c92a() {
   f16vec4 res = f16vec4(0.00000005960464477539hf, 0.0hf, 0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_71c92a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_71c92a();
+  v.tint_symbol = bitcast_71c92a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_71c92a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 bitcast_71c92a() {
   f16vec4 res = f16vec4(0.00000005960464477539hf, 0.0hf, 0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_71c92a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_71c92a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_71c92a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/745b27.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/745b27.wgsl.expected.ir.glsl
index a204d87..ba4b8cb 100644
--- a/test/tint/builtins/gen/literal/bitcast/745b27.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/745b27.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 bitcast_745b27() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_745b27();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 bitcast_745b27() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_745b27();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 bitcast_745b27() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_745b27();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_745b27();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_745b27();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 bitcast_745b27() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_745b27();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_745b27();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_745b27();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 bitcast_745b27() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_745b27();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_745b27();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_745b27();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/7e67cc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/7e67cc.wgsl.expected.ir.glsl
index 5a6aa61..23cd74f 100644
--- a/test/tint/builtins/gen/literal/bitcast/7e67cc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/7e67cc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_7e67cc() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_7e67cc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_7e67cc() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_7e67cc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int bitcast_7e67cc() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_7e67cc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_7e67cc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_7e67cc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_7e67cc() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_7e67cc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_7e67cc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_7e67cc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_7e67cc() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_7e67cc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_7e67cc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_7e67cc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/7ffa9c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/7ffa9c.wgsl.expected.ir.glsl
index d403ed2..da0ac23 100644
--- a/test/tint/builtins/gen/literal/bitcast/7ffa9c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/7ffa9c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_7ffa9c() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_7ffa9c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_7ffa9c() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_7ffa9c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 bitcast_7ffa9c() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_7ffa9c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_7ffa9c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_7ffa9c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_7ffa9c() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_7ffa9c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_7ffa9c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_7ffa9c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_7ffa9c() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_7ffa9c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_7ffa9c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_7ffa9c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/81c5f5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/81c5f5.wgsl.expected.ir.glsl
index 852cd81..6e155fa 100644
--- a/test/tint/builtins/gen/literal/bitcast/81c5f5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/81c5f5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_81c5f5() {
+  uvec2 res = uvec2(1006648320u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_81c5f5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_81c5f5() {
+  uvec2 res = uvec2(1006648320u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_81c5f5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 bitcast_81c5f5() {
   uvec2 res = uvec2(1006648320u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_81c5f5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_81c5f5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_81c5f5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_81c5f5() {
-  uvec2 res = uvec2(1006648320u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_81c5f5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_81c5f5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_81c5f5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_81c5f5() {
-  uvec2 res = uvec2(1006648320u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_81c5f5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_81c5f5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_81c5f5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/8318a8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/8318a8.wgsl.expected.ir.glsl
index 2ca5887..7bdb364 100644
--- a/test/tint/builtins/gen/literal/bitcast/8318a8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/8318a8.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_8318a8() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_8318a8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_8318a8() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_8318a8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 bitcast_8318a8() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_8318a8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_8318a8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_8318a8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_8318a8() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_8318a8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_8318a8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_8318a8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_8318a8() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_8318a8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_8318a8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_8318a8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/879dc9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/879dc9.wgsl.expected.ir.glsl
index 737a284..45e65f4 100644
--- a/test/tint/builtins/gen/literal/bitcast/879dc9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/879dc9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_879dc9() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_879dc9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_879dc9() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_879dc9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint bitcast_879dc9() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_879dc9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_879dc9() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_879dc9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_879dc9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_879dc9() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_879dc9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/899e50.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/899e50.wgsl.expected.ir.glsl
index f8762a6..192f6d4 100644
--- a/test/tint/builtins/gen/literal/bitcast/899e50.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/899e50.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_899e50() {
+  ivec2 res = ivec2(1065353216);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_899e50();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_899e50() {
+  ivec2 res = ivec2(1065353216);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_899e50();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 bitcast_899e50() {
   ivec2 res = ivec2(1065353216);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_899e50();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_899e50();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_899e50();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_899e50() {
-  ivec2 res = ivec2(1065353216);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_899e50();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_899e50();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_899e50();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_899e50() {
-  ivec2 res = ivec2(1065353216);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_899e50();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_899e50();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_899e50();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/8d184c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/8d184c.wgsl.expected.ir.glsl
index 04ecf29..267f3d7 100644
--- a/test/tint/builtins/gen/literal/bitcast/8d184c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/8d184c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_8d184c() {
+  uvec4 res = uvec4(1065353216u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_8d184c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_8d184c() {
+  uvec4 res = uvec4(1065353216u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_8d184c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 bitcast_8d184c() {
   uvec4 res = uvec4(1065353216u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_8d184c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_8d184c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_8d184c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_8d184c() {
-  uvec4 res = uvec4(1065353216u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_8d184c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_8d184c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_8d184c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_8d184c() {
-  uvec4 res = uvec4(1065353216u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_8d184c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_8d184c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_8d184c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/9bcf71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/9bcf71.wgsl.expected.ir.glsl
index e15b0b8..e566778 100644
--- a/test/tint/builtins/gen/literal/bitcast/9bcf71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/9bcf71.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_9bcf71() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_9bcf71();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_9bcf71() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_9bcf71();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 bitcast_9bcf71() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_9bcf71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9bcf71();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_9bcf71();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_9bcf71() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_9bcf71();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9bcf71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_9bcf71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_9bcf71() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_9bcf71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9bcf71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_9bcf71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.glsl
index 66ec7e6..7554348 100644
--- a/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/9ca42c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_9ca42c() {
   f16vec2 res = f16vec2(0.0hf, 1.875hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_9ca42c();
+  v.tint_symbol = bitcast_9ca42c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9ca42c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_9ca42c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 bitcast_9ca42c() {
   f16vec2 res = f16vec2(0.0hf, 1.875hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_9ca42c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_9ca42c();
+  v.tint_symbol = bitcast_9ca42c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_9ca42c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 bitcast_9ca42c() {
   f16vec2 res = f16vec2(0.0hf, 1.875hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_9ca42c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9ca42c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_9ca42c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/9eee21.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/9eee21.wgsl.expected.ir.glsl
index bf61e97..b05e639 100644
--- a/test/tint/builtins/gen/literal/bitcast/9eee21.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/9eee21.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 bitcast_9eee21() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_9eee21();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 bitcast_9eee21() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_9eee21();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 bitcast_9eee21() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_9eee21();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9eee21();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_9eee21();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 bitcast_9eee21() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_9eee21();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9eee21();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_9eee21();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 bitcast_9eee21() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_9eee21();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_9eee21();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_9eee21();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/a4b290.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/a4b290.wgsl.expected.ir.glsl
index 26b4f4f..5c6339d 100644
--- a/test/tint/builtins/gen/literal/bitcast/a4b290.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/a4b290.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 bitcast_a4b290() {
+  vec4 res = vec4(1.40129846e-45f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_a4b290();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 bitcast_a4b290() {
+  vec4 res = vec4(1.40129846e-45f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_a4b290();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 bitcast_a4b290() {
   vec4 res = vec4(1.40129846e-45f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_a4b290();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a4b290();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_a4b290();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 bitcast_a4b290() {
-  vec4 res = vec4(1.40129846e-45f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_a4b290();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a4b290();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a4b290();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 bitcast_a4b290() {
-  vec4 res = vec4(1.40129846e-45f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_a4b290();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a4b290();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a4b290();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/a58b50.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/a58b50.wgsl.expected.ir.glsl
index c9eaba0..6b6aae6 100644
--- a/test/tint/builtins/gen/literal/bitcast/a58b50.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/a58b50.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_a58b50() {
+  uint res = 1006648320u;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_a58b50();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_a58b50() {
+  uint res = 1006648320u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_a58b50();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint bitcast_a58b50() {
   uint res = 1006648320u;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_a58b50();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a58b50();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_a58b50();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_a58b50() {
-  uint res = 1006648320u;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_a58b50();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a58b50();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a58b50();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_a58b50() {
-  uint res = 1006648320u;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_a58b50();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a58b50();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a58b50();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/a5c539.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/a5c539.wgsl.expected.ir.glsl
index d3a92cd..c8db5a3 100644
--- a/test/tint/builtins/gen/literal/bitcast/a5c539.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/a5c539.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 bitcast_a5c539() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_a5c539();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 bitcast_a5c539() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_a5c539();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 bitcast_a5c539() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_a5c539();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a5c539();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_a5c539();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 bitcast_a5c539() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_a5c539();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a5c539();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a5c539();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 bitcast_a5c539() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_a5c539();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a5c539();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a5c539();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/a8c93f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/a8c93f.wgsl.expected.ir.glsl
index 3430134..f335d5f 100644
--- a/test/tint/builtins/gen/literal/bitcast/a8c93f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/a8c93f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_a8c93f() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_a8c93f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_a8c93f() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_a8c93f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 bitcast_a8c93f() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_a8c93f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a8c93f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_a8c93f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_a8c93f() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_a8c93f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a8c93f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a8c93f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_a8c93f() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_a8c93f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a8c93f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a8c93f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/a8ea1b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/a8ea1b.wgsl.expected.ir.glsl
index 803b733..5986bee 100644
--- a/test/tint/builtins/gen/literal/bitcast/a8ea1b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/a8ea1b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 bitcast_a8ea1b() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_a8ea1b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 bitcast_a8ea1b() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_a8ea1b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 bitcast_a8ea1b() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_a8ea1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a8ea1b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_a8ea1b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 bitcast_a8ea1b() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_a8ea1b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a8ea1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a8ea1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 bitcast_a8ea1b() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_a8ea1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_a8ea1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_a8ea1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/ac09d0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/ac09d0.wgsl.expected.ir.glsl
index ea24cd7..d326e89 100644
--- a/test/tint/builtins/gen/literal/bitcast/ac09d0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/ac09d0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_ac09d0() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_ac09d0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_ac09d0() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_ac09d0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float bitcast_ac09d0() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_ac09d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ac09d0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_ac09d0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_ac09d0() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_ac09d0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ac09d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_ac09d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_ac09d0() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_ac09d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ac09d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_ac09d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/ad4b05.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/ad4b05.wgsl.expected.ir.glsl
index 1029f34..587f603 100644
--- a/test/tint/builtins/gen/literal/bitcast/ad4b05.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/ad4b05.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_ad4b05() {
+  float res = 1.40129846e-45f;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_ad4b05();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_ad4b05() {
+  float res = 1.40129846e-45f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_ad4b05();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float bitcast_ad4b05() {
   float res = 1.40129846e-45f;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_ad4b05();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ad4b05();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_ad4b05();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_ad4b05() {
-  float res = 1.40129846e-45f;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_ad4b05();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ad4b05();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_ad4b05();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_ad4b05() {
-  float res = 1.40129846e-45f;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_ad4b05();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ad4b05();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_ad4b05();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/b28cbd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/b28cbd.wgsl.expected.ir.glsl
index 9b5fa34..06eb6b2 100644
--- a/test/tint/builtins/gen/literal/bitcast/b28cbd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/b28cbd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 bitcast_b28cbd() {
+  ivec3 res = ivec3(1065353216);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_b28cbd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 bitcast_b28cbd() {
+  ivec3 res = ivec3(1065353216);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_b28cbd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 bitcast_b28cbd() {
   ivec3 res = ivec3(1065353216);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_b28cbd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_b28cbd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_b28cbd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 bitcast_b28cbd() {
-  ivec3 res = ivec3(1065353216);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_b28cbd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_b28cbd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_b28cbd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 bitcast_b28cbd() {
-  ivec3 res = ivec3(1065353216);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_b28cbd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_b28cbd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_b28cbd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/b77573.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/b77573.wgsl.expected.ir.glsl
index e9332fa..8410ffc 100644
--- a/test/tint/builtins/gen/literal/bitcast/b77573.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/b77573.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_b77573() {
+  vec2 res = vec2(1.40129846e-45f);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_b77573();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 bitcast_b77573() {
+  vec2 res = vec2(1.40129846e-45f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_b77573();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 bitcast_b77573() {
   vec2 res = vec2(1.40129846e-45f);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_b77573();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_b77573();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_b77573();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_b77573() {
-  vec2 res = vec2(1.40129846e-45f);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_b77573();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_b77573();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_b77573();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 bitcast_b77573() {
-  vec2 res = vec2(1.40129846e-45f);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_b77573();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_b77573();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_b77573();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.glsl
index c7ed5a2..298a11e 100644
--- a/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/bc3994.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_bc3994() {
   f16vec4 res = f16vec4(0.00000005960464477539hf, 0.0hf, 0.00000005960464477539hf, 0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = bitcast_bc3994();
+  v.tint_symbol = bitcast_bc3994();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_bc3994();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_bc3994();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 bitcast_bc3994() {
   f16vec4 res = f16vec4(0.00000005960464477539hf, 0.0hf, 0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_bc3994();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = bitcast_bc3994();
+  v.tint_symbol = bitcast_bc3994();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_bc3994();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 bitcast_bc3994() {
   f16vec4 res = f16vec4(0.00000005960464477539hf, 0.0hf, 0.00000005960464477539hf, 0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_bc3994();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_bc3994();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_bc3994();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/bitcast/c69aaf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/c69aaf.wgsl.expected.ir.glsl
index fda7b45..d6fa1b7 100644
--- a/test/tint/builtins/gen/literal/bitcast/c69aaf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/c69aaf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_c69aaf() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_c69aaf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_c69aaf() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_c69aaf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 bitcast_c69aaf() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_c69aaf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_c69aaf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_c69aaf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_c69aaf() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_c69aaf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_c69aaf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_c69aaf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_c69aaf() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_c69aaf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_c69aaf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_c69aaf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/ca5c3f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/ca5c3f.wgsl.expected.ir.glsl
index c8acfb1..3d3bf90 100644
--- a/test/tint/builtins/gen/literal/bitcast/ca5c3f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/ca5c3f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_ca5c3f() {
+  float res = 1.40129846e-45f;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_ca5c3f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float bitcast_ca5c3f() {
+  float res = 1.40129846e-45f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_ca5c3f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float bitcast_ca5c3f() {
   float res = 1.40129846e-45f;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_ca5c3f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ca5c3f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_ca5c3f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_ca5c3f() {
-  float res = 1.40129846e-45f;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_ca5c3f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ca5c3f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_ca5c3f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float bitcast_ca5c3f() {
-  float res = 1.40129846e-45f;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_ca5c3f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_ca5c3f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_ca5c3f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/cc7aa7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/cc7aa7.wgsl.expected.ir.glsl
index 5ea86b0..31b775a 100644
--- a/test/tint/builtins/gen/literal/bitcast/cc7aa7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/cc7aa7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_cc7aa7() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_cc7aa7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 bitcast_cc7aa7() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_cc7aa7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 bitcast_cc7aa7() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_cc7aa7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_cc7aa7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_cc7aa7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_cc7aa7() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_cc7aa7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_cc7aa7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_cc7aa7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 bitcast_cc7aa7() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_cc7aa7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_cc7aa7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_cc7aa7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/d29765.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/d29765.wgsl.expected.ir.glsl
index 4246554..4a7fe9e 100644
--- a/test/tint/builtins/gen/literal/bitcast/d29765.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/d29765.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_d29765() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_d29765();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_d29765() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_d29765();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 bitcast_d29765() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_d29765();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_d29765();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_d29765();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_d29765() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_d29765();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_d29765();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_d29765();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_d29765() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_d29765();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_d29765();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_d29765();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/dce842.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/dce842.wgsl.expected.ir.glsl
index cc0b25b..70d14ba 100644
--- a/test/tint/builtins/gen/literal/bitcast/dce842.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/dce842.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_dce842() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_dce842();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_dce842() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_dce842();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint bitcast_dce842() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_dce842();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_dce842();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_dce842();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_dce842() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_dce842();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_dce842();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_dce842();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_dce842() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_dce842();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_dce842();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_dce842();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/e61c57.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/e61c57.wgsl.expected.ir.glsl
index efa2af8..a59f885 100644
--- a/test/tint/builtins/gen/literal/bitcast/e61c57.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/e61c57.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_e61c57() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_e61c57();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int bitcast_e61c57() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_e61c57();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int bitcast_e61c57() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_e61c57();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_e61c57();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_e61c57();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_e61c57() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_e61c57();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_e61c57();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_e61c57();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int bitcast_e61c57() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_e61c57();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_e61c57();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_e61c57();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/e6c18f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/e6c18f.wgsl.expected.ir.glsl
index 973822a..b452153 100644
--- a/test/tint/builtins/gen/literal/bitcast/e6c18f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/e6c18f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_e6c18f() {
+  uint res = 1065353216u;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_e6c18f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_e6c18f() {
+  uint res = 1065353216u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_e6c18f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint bitcast_e6c18f() {
   uint res = 1065353216u;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_e6c18f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_e6c18f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_e6c18f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_e6c18f() {
-  uint res = 1065353216u;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_e6c18f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_e6c18f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_e6c18f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_e6c18f() {
-  uint res = 1065353216u;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_e6c18f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_e6c18f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_e6c18f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/bitcast/f756cd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/bitcast/f756cd.wgsl.expected.ir.glsl
index a00140c..31fcfdc 100644
--- a/test/tint/builtins/gen/literal/bitcast/f756cd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/bitcast/f756cd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_f756cd() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_f756cd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_f756cd() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_f756cd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 bitcast_f756cd() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_f756cd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_f756cd() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_f756cd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_f756cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_f756cd() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_f756cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.glsl
index 74296f9..af7cf5a 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ceil_09bf52() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ceil_09bf52();
+  v.tint_symbol = ceil_09bf52();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_09bf52();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_09bf52();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ceil_09bf52() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ceil_09bf52();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_09bf52();
+  v.tint_symbol = ceil_09bf52();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_09bf52();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 ceil_09bf52() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ceil_09bf52();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_09bf52();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_09bf52();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.glsl
index 8c8bbfb..ad89344 100644
--- a/test/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/11b1dc.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_11b1dc() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  ceil_11b1dc();
+}
+#version 310 es
+
+void ceil_11b1dc() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_11b1dc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_11b1dc() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  ceil_11b1dc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_11b1dc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_11b1dc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_11b1dc() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  ceil_11b1dc();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_11b1dc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_11b1dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_11b1dc() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  ceil_11b1dc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_11b1dc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_11b1dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.glsl
index 51ba696..fd4ba03 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ceil_18c240() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ceil_18c240();
+  v.tint_symbol = ceil_18c240();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_18c240();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_18c240();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ceil_18c240() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ceil_18c240();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_18c240();
+  v.tint_symbol = ceil_18c240();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_18c240();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 ceil_18c240() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ceil_18c240();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_18c240();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_18c240();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.glsl
index 0564c87..dbfe5d1 100644
--- a/test/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/32c946.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_32c946() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  ceil_32c946();
+}
+#version 310 es
+
+void ceil_32c946() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_32c946();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_32c946() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  ceil_32c946();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_32c946();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_32c946();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_32c946() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  ceil_32c946();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_32c946();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_32c946();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_32c946() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  ceil_32c946();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_32c946();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_32c946();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.glsl
index 3760272..1557085 100644
--- a/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/34064b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ceil_34064b() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ceil_34064b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ceil_34064b() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ceil_34064b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 ceil_34064b() {
   vec3 res = vec3(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ceil_34064b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_34064b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_34064b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ceil_34064b() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_34064b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_34064b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_34064b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ceil_34064b() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ceil_34064b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_34064b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_34064b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.glsl
index 1cd2ff6..f4a51dc 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ceil_4bca2a() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ceil_4bca2a();
+  v.tint_symbol = ceil_4bca2a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_4bca2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ceil_4bca2a() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_4bca2a();
+  v.tint_symbol = ceil_4bca2a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_4bca2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 ceil_4bca2a() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_4bca2a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.glsl
index 7e45ffa..f4f6eb6 100644
--- a/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/678655.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ceil_678655() {
+  float res = 2.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = ceil_678655();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ceil_678655() {
+  float res = 2.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ceil_678655();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float ceil_678655() {
   float res = 2.0f;
   return res;
 }
-void main() {
-  prevent_dce = ceil_678655();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_678655();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_678655();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ceil_678655() {
-  float res = 2.0f;
-  return res;
-}
 void main() {
-  prevent_dce = ceil_678655();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_678655();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_678655();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ceil_678655() {
-  float res = 2.0f;
-  return res;
-}
-void main() {
-  prevent_dce = ceil_678655();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_678655();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_678655();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.glsl
index 019695f..b8b391d 100644
--- a/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/96f597.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ceil_96f597() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ceil_96f597();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ceil_96f597() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ceil_96f597();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 ceil_96f597() {
   vec2 res = vec2(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ceil_96f597();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_96f597();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_96f597();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ceil_96f597() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_96f597();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_96f597();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_96f597();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ceil_96f597() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ceil_96f597();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_96f597();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_96f597();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.glsl
index 371b8b3..bd74828 100644
--- a/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/b74c16.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ceil_b74c16() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ceil_b74c16();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ceil_b74c16() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ceil_b74c16();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 ceil_b74c16() {
   vec4 res = vec4(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_b74c16();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ceil_b74c16() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_b74c16();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_b74c16();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ceil_b74c16() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_b74c16();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.glsl
index eeb9c34..45e1857 100644
--- a/test/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/bb2ca2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_bb2ca2() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  ceil_bb2ca2();
+}
+#version 310 es
+
+void ceil_bb2ca2() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_bb2ca2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_bb2ca2() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  ceil_bb2ca2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_bb2ca2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_bb2ca2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_bb2ca2() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  ceil_bb2ca2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_bb2ca2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_bb2ca2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_bb2ca2() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  ceil_bb2ca2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_bb2ca2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_bb2ca2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.glsl
index bb8ea8e..f7dc596 100644
--- a/test/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/e0b70a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_e0b70a() {
+  float res = 2.0f;
+}
+void main() {
+  ceil_e0b70a();
+}
+#version 310 es
+
+void ceil_e0b70a() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_e0b70a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_e0b70a() {
   float res = 2.0f;
 }
-void main() {
-  ceil_e0b70a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_e0b70a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_e0b70a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_e0b70a() {
-  float res = 2.0f;
-}
 void main() {
-  ceil_e0b70a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_e0b70a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_e0b70a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_e0b70a() {
-  float res = 2.0f;
-}
-void main() {
-  ceil_e0b70a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_e0b70a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_e0b70a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.glsl
index 4237b0c..1940dc0 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ceil_f3f889() {
   float16_t res = 2.0hf;
   return res;
 }
 void main() {
-  prevent_dce = ceil_f3f889();
+  v.tint_symbol = ceil_f3f889();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_f3f889();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_f3f889();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ceil_f3f889() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = ceil_f3f889();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_f3f889();
+  v.tint_symbol = ceil_f3f889();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_f3f889();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t ceil_f3f889() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = ceil_f3f889();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_f3f889();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_f3f889();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.glsl
index 9ddc316..5d7f050 100644
--- a/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/0acf8f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 clamp_0acf8f() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_0acf8f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 clamp_0acf8f() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_0acf8f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 clamp_0acf8f() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_0acf8f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 clamp_0acf8f() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_0acf8f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_0acf8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 clamp_0acf8f() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_0acf8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.glsl
index 9dd57ef..2407c92 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_177548() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  clamp_177548();
+}
+#version 310 es
+
+void clamp_177548() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_177548();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_177548() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  clamp_177548();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_177548();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_177548();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_177548() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  clamp_177548();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_177548();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_177548();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_177548() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  clamp_177548();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_177548();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_177548();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.glsl
index 6f49cbc..b92dc45 100644
--- a/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/1a32e3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 clamp_1a32e3() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_1a32e3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 clamp_1a32e3() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_1a32e3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 clamp_1a32e3() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_1a32e3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 clamp_1a32e3() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_1a32e3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_1a32e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 clamp_1a32e3() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_1a32e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.glsl
index 1d60378..bd4efc8 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 clamp_235b29() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = clamp_235b29();
+  v.tint_symbol = clamp_235b29();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_235b29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_235b29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 clamp_235b29() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = clamp_235b29();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_235b29();
+  v.tint_symbol = clamp_235b29();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_235b29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 clamp_235b29() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = clamp_235b29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_235b29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_235b29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.glsl
index fa40ad9..61c510c 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_23aa4f() {
+  float res = 1.0f;
+}
+void main() {
+  clamp_23aa4f();
+}
+#version 310 es
+
+void clamp_23aa4f() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_23aa4f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_23aa4f() {
   float res = 1.0f;
 }
-void main() {
-  clamp_23aa4f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_23aa4f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_23aa4f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_23aa4f() {
-  float res = 1.0f;
-}
 void main() {
-  clamp_23aa4f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_23aa4f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_23aa4f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_23aa4f() {
-  float res = 1.0f;
-}
-void main() {
-  clamp_23aa4f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_23aa4f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_23aa4f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.glsl
index 76107d4..3b91bba 100644
--- a/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/2bd567.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float clamp_2bd567() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_2bd567();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float clamp_2bd567() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_2bd567();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float clamp_2bd567() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_2bd567();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float clamp_2bd567() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = clamp_2bd567();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bd567();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float clamp_2bd567() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bd567();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.glsl
index 0504537..641a533 100644
--- a/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/2bde41.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 clamp_2bde41() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_2bde41();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 clamp_2bde41() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_2bde41();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 clamp_2bde41() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_2bde41();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 clamp_2bde41() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_2bde41();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bde41();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 clamp_2bde41() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bde41();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.glsl
index 4b3f709..0843db1 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 clamp_2c251b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = clamp_2c251b();
+  v.tint_symbol = clamp_2c251b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2c251b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2c251b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 clamp_2c251b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2c251b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_2c251b();
+  v.tint_symbol = clamp_2c251b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2c251b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 clamp_2c251b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2c251b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2c251b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_2c251b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.glsl
index 6b35ca2..8452199 100644
--- a/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/548fc7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 clamp_548fc7() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_548fc7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 clamp_548fc7() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_548fc7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 clamp_548fc7() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_548fc7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 clamp_548fc7() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_548fc7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_548fc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 clamp_548fc7() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_548fc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.glsl
index 0f963a5..b4d8213 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t clamp_553ffb() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = clamp_553ffb();
+  v.tint_symbol = clamp_553ffb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_553ffb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_553ffb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t clamp_553ffb() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = clamp_553ffb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_553ffb();
+  v.tint_symbol = clamp_553ffb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_553ffb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t clamp_553ffb() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = clamp_553ffb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_553ffb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_553ffb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.glsl
index 6261458..2f2d285 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_5cf700() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  clamp_5cf700();
+}
+#version 310 es
+
+void clamp_5cf700() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_5cf700();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_5cf700() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  clamp_5cf700();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_5cf700();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_5cf700();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_5cf700() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  clamp_5cf700();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_5cf700();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_5cf700();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_5cf700() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  clamp_5cf700();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_5cf700();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_5cf700();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.glsl
index ee75004..0f7f7b8 100644
--- a/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/5f0819.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 clamp_5f0819() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_5f0819();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 clamp_5f0819() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_5f0819();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 clamp_5f0819() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_5f0819();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 clamp_5f0819() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_5f0819();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_5f0819();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 clamp_5f0819() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_5f0819();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.glsl
index 213b5d7..b0d1d35 100644
--- a/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/6c1749.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 clamp_6c1749() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_6c1749();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 clamp_6c1749() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_6c1749();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 clamp_6c1749() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_6c1749();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 clamp_6c1749() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_6c1749();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_6c1749();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 clamp_6c1749() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_6c1749();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.glsl
index 160dee9..26f0cf2 100644
--- a/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/7706d7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 clamp_7706d7() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_7706d7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 clamp_7706d7() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_7706d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 clamp_7706d7() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_7706d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 clamp_7706d7() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_7706d7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_7706d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 clamp_7706d7() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_7706d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.glsl
index 3130046..4b01a35 100644
--- a/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/867397.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 clamp_867397() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_867397();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 clamp_867397() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_867397();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 clamp_867397() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = clamp_867397();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_867397();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_867397();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 clamp_867397() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_867397();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_867397();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_867397();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 clamp_867397() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_867397();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_867397();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_867397();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.glsl
index c4f5f9d..c45827e 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_87df46() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  clamp_87df46();
+}
+#version 310 es
+
+void clamp_87df46() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_87df46();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_87df46() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  clamp_87df46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_87df46();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_87df46();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_87df46() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  clamp_87df46();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_87df46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_87df46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_87df46() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  clamp_87df46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_87df46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_87df46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.glsl
index 82e8452..257a806 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_8b1eaa() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  clamp_8b1eaa();
+}
+#version 310 es
+
+void clamp_8b1eaa() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_8b1eaa();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_8b1eaa() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  clamp_8b1eaa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_8b1eaa();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_8b1eaa();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_8b1eaa() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  clamp_8b1eaa();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_8b1eaa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_8b1eaa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_8b1eaa() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  clamp_8b1eaa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_8b1eaa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_8b1eaa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.glsl
index a14a9ab..01b8938 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_96e56a() {
+  int res = 1;
+}
+void main() {
+  clamp_96e56a();
+}
+#version 310 es
+
+void clamp_96e56a() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_96e56a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_96e56a() {
   int res = 1;
 }
-void main() {
-  clamp_96e56a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_96e56a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_96e56a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_96e56a() {
-  int res = 1;
-}
 void main() {
-  clamp_96e56a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_96e56a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_96e56a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_96e56a() {
-  int res = 1;
-}
-void main() {
-  clamp_96e56a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_96e56a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_96e56a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.glsl
index f15e975..b3bb823 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_9d731c() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  clamp_9d731c();
+}
+#version 310 es
+
+void clamp_9d731c() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_9d731c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_9d731c() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  clamp_9d731c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_9d731c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_9d731c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_9d731c() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  clamp_9d731c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_9d731c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_9d731c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_9d731c() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  clamp_9d731c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_9d731c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_9d731c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.glsl
index 404e234..a016e75 100644
--- a/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/a2de25.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint clamp_a2de25() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_a2de25();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint clamp_a2de25() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_a2de25();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint clamp_a2de25() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_a2de25();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint clamp_a2de25() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = clamp_a2de25();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_a2de25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint clamp_a2de25() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_a2de25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.glsl
index 4eb5ea5..92922a6 100644
--- a/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/b07c65.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int clamp_b07c65() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_b07c65();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int clamp_b07c65() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_b07c65();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int clamp_b07c65() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_b07c65();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int clamp_b07c65() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = clamp_b07c65();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b07c65();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int clamp_b07c65() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b07c65();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.glsl
index e65a2be..48aeee5 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 clamp_b195eb() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = clamp_b195eb();
+  v.tint_symbol = clamp_b195eb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b195eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b195eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 clamp_b195eb() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = clamp_b195eb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_b195eb();
+  v.tint_symbol = clamp_b195eb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b195eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 clamp_b195eb() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = clamp_b195eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b195eb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_b195eb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.glsl
index 283df2a..016307b 100644
--- a/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/bd43ce.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 clamp_bd43ce() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_bd43ce();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 clamp_bd43ce() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_bd43ce();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 clamp_bd43ce() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_bd43ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 clamp_bd43ce() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_bd43ce();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_bd43ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 clamp_bd43ce() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_bd43ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.glsl
index 3719724..d1f3afe 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_d396af() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  clamp_d396af();
+}
+#version 310 es
+
+void clamp_d396af() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_d396af();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_d396af() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  clamp_d396af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_d396af();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_d396af();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_d396af() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  clamp_d396af();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_d396af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_d396af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_d396af() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  clamp_d396af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_d396af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_d396af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.glsl
index 8304558..a738c98 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cos_0835a8() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cos_0835a8();
+  v.tint_symbol = cos_0835a8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0835a8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0835a8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cos_0835a8() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cos_0835a8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_0835a8();
+  v.tint_symbol = cos_0835a8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0835a8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 cos_0835a8() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cos_0835a8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0835a8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_0835a8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.glsl
index 2d01971..68603b6 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cos_0a89f7() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cos_0a89f7();
+  v.tint_symbol = cos_0a89f7();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0a89f7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0a89f7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cos_0a89f7() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cos_0a89f7();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_0a89f7();
+  v.tint_symbol = cos_0a89f7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0a89f7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 cos_0a89f7() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cos_0a89f7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0a89f7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_0a89f7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.glsl
index d9aa72d..b3d4bfa 100644
--- a/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/16dc15.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cos_16dc15() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cos_16dc15();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cos_16dc15() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cos_16dc15();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 cos_16dc15() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = cos_16dc15();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_16dc15();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_16dc15();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cos_16dc15() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cos_16dc15();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_16dc15();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_16dc15();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cos_16dc15() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cos_16dc15();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_16dc15();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_16dc15();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.glsl
index cfd8d29..17c5386 100644
--- a/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/29d66d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 cos_29d66d() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cos_29d66d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 cos_29d66d() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cos_29d66d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 cos_29d66d() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = cos_29d66d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_29d66d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_29d66d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 cos_29d66d() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cos_29d66d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_29d66d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_29d66d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 cos_29d66d() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cos_29d66d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_29d66d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_29d66d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.glsl
index d144a55..a42bf44 100644
--- a/test/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/47d768.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_47d768() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  cos_47d768();
+}
+#version 310 es
+
+void cos_47d768() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_47d768();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_47d768() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  cos_47d768();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_47d768();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_47d768();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_47d768() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  cos_47d768();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_47d768();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_47d768();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_47d768() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  cos_47d768();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_47d768();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_47d768();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.glsl
index 66f3825..ed4f1e4 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cos_5bc2c6() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cos_5bc2c6();
+  v.tint_symbol = cos_5bc2c6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_5bc2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cos_5bc2c6() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_5bc2c6();
+  v.tint_symbol = cos_5bc2c6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_5bc2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 cos_5bc2c6() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_5bc2c6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.glsl
index 5060e8e..ba87cf9 100644
--- a/test/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/6b1fdf.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_6b1fdf() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  cos_6b1fdf();
+}
+#version 310 es
+
+void cos_6b1fdf() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_6b1fdf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_6b1fdf() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  cos_6b1fdf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_6b1fdf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_6b1fdf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_6b1fdf() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  cos_6b1fdf();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_6b1fdf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_6b1fdf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_6b1fdf() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  cos_6b1fdf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_6b1fdf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_6b1fdf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.glsl
index 9ad0502..5d443c2 100644
--- a/test/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/a297d4.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_a297d4() {
+  float res = 1.0f;
+}
+void main() {
+  cos_a297d4();
+}
+#version 310 es
+
+void cos_a297d4() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_a297d4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_a297d4() {
   float res = 1.0f;
 }
-void main() {
-  cos_a297d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_a297d4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_a297d4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_a297d4() {
-  float res = 1.0f;
-}
 void main() {
-  cos_a297d4();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_a297d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_a297d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_a297d4() {
-  float res = 1.0f;
-}
-void main() {
-  cos_a297d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_a297d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_a297d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.glsl
index bad4bc0..fcd3506 100644
--- a/test/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/af7447.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_af7447() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  cos_af7447();
+}
+#version 310 es
+
+void cos_af7447() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_af7447();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_af7447() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  cos_af7447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_af7447();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_af7447();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_af7447() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  cos_af7447();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_af7447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_af7447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_af7447() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  cos_af7447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_af7447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_af7447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.glsl
index 1f8e64e..1218060 100644
--- a/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/c3b486.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 cos_c3b486() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cos_c3b486();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 cos_c3b486() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cos_c3b486();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 cos_c3b486() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = cos_c3b486();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c3b486();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_c3b486();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 cos_c3b486() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cos_c3b486();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c3b486();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c3b486();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 cos_c3b486() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cos_c3b486();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c3b486();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c3b486();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.glsl
index ef65f3f..c0ae20e 100644
--- a/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/c5c28e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float cos_c5c28e() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = cos_c5c28e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float cos_c5c28e() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cos_c5c28e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float cos_c5c28e() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_c5c28e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float cos_c5c28e() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = cos_c5c28e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c5c28e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float cos_c5c28e() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c5c28e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.glsl
index 315f0fa..929f492 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cos_fc047d() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = cos_fc047d();
+  v.tint_symbol = cos_fc047d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_fc047d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_fc047d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cos_fc047d() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = cos_fc047d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_fc047d();
+  v.tint_symbol = cos_fc047d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_fc047d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t cos_fc047d() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = cos_fc047d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_fc047d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_fc047d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.glsl
index 54aaa41..93c8e1b 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cosh_2ed778() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = cosh_2ed778();
+  v.tint_symbol = cosh_2ed778();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_2ed778();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_2ed778();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cosh_2ed778() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = cosh_2ed778();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_2ed778();
+  v.tint_symbol = cosh_2ed778();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_2ed778();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t cosh_2ed778() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = cosh_2ed778();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_2ed778();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_2ed778();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.glsl
index 8afc742..6fc5f01 100644
--- a/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/377652.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cosh_377652() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cosh_377652();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cosh_377652() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cosh_377652();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 cosh_377652() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = cosh_377652();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_377652();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_377652();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cosh_377652() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_377652();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_377652();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_377652();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cosh_377652() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cosh_377652();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_377652();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_377652();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.glsl
index 9817fab..cd32006 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cosh_3b7bbf() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cosh_3b7bbf();
+  v.tint_symbol = cosh_3b7bbf();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_3b7bbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cosh_3b7bbf() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_3b7bbf();
+  v.tint_symbol = cosh_3b7bbf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_3b7bbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 cosh_3b7bbf() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_3b7bbf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.glsl
index 9729501..ffc07e7 100644
--- a/test/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/432645.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_432645() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  cosh_432645();
+}
+#version 310 es
+
+void cosh_432645() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_432645();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_432645() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  cosh_432645();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_432645();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_432645();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_432645() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  cosh_432645();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_432645();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_432645();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_432645() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  cosh_432645();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_432645();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_432645();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.glsl
index ba43f84..ef8512e 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cosh_43b672() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cosh_43b672();
+  v.tint_symbol = cosh_43b672();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_43b672();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_43b672();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cosh_43b672() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cosh_43b672();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_43b672();
+  v.tint_symbol = cosh_43b672();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_43b672();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 cosh_43b672() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cosh_43b672();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_43b672();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_43b672();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.glsl
index d4cbc1d..d03a86b 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cosh_b1b8a0() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cosh_b1b8a0();
+  v.tint_symbol = cosh_b1b8a0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_b1b8a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cosh_b1b8a0() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_b1b8a0();
+  v.tint_symbol = cosh_b1b8a0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_b1b8a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 cosh_b1b8a0() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_b1b8a0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.glsl
index 874e127..09bbe79 100644
--- a/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/c13756.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 cosh_c13756() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cosh_c13756();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 cosh_c13756() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cosh_c13756();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 cosh_c13756() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = cosh_c13756();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_c13756();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_c13756();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 cosh_c13756() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_c13756();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_c13756();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_c13756();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 cosh_c13756() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cosh_c13756();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_c13756();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_c13756();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.glsl
index f1206eb..6942ec7 100644
--- a/test/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/c892bb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_c892bb() {
+  float res = 1.0f;
+}
+void main() {
+  cosh_c892bb();
+}
+#version 310 es
+
+void cosh_c892bb() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_c892bb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_c892bb() {
   float res = 1.0f;
 }
-void main() {
-  cosh_c892bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_c892bb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_c892bb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_c892bb() {
-  float res = 1.0f;
-}
 void main() {
-  cosh_c892bb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_c892bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_c892bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_c892bb() {
-  float res = 1.0f;
-}
-void main() {
-  cosh_c892bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_c892bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_c892bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.glsl
index 40d9f9c..9345395 100644
--- a/test/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/d8dee7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_d8dee7() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  cosh_d8dee7();
+}
+#version 310 es
+
+void cosh_d8dee7() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_d8dee7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_d8dee7() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  cosh_d8dee7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_d8dee7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_d8dee7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_d8dee7() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  cosh_d8dee7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_d8dee7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_d8dee7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_d8dee7() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  cosh_d8dee7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_d8dee7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_d8dee7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.glsl
index 176e299..04dc934 100644
--- a/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/da92dd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float cosh_da92dd() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = cosh_da92dd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float cosh_da92dd() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cosh_da92dd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float cosh_da92dd() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_da92dd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float cosh_da92dd() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = cosh_da92dd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_da92dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float cosh_da92dd() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_da92dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.glsl
index f0b28de..3451c82 100644
--- a/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/e0c1de.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 cosh_e0c1de() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cosh_e0c1de();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 cosh_e0c1de() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cosh_e0c1de();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 cosh_e0c1de() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_e0c1de();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 cosh_e0c1de() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_e0c1de();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_e0c1de();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 cosh_e0c1de() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_e0c1de();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.glsl
index d89ed06..834a361 100644
--- a/test/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cosh/f67ff1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_f67ff1() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  cosh_f67ff1();
+}
+#version 310 es
+
+void cosh_f67ff1() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_f67ff1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_f67ff1() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  cosh_f67ff1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_f67ff1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_f67ff1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_f67ff1() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  cosh_f67ff1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_f67ff1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_f67ff1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_f67ff1() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  cosh_f67ff1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_f67ff1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_f67ff1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.glsl
index 383cf15..f1b5644 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/208d46.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint countLeadingZeros_208d46() {
+  uint res = 31u;
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_208d46();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint countLeadingZeros_208d46() {
+  uint res = 31u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_208d46();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint countLeadingZeros_208d46() {
   uint res = 31u;
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_208d46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_208d46();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_208d46();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint countLeadingZeros_208d46() {
-  uint res = 31u;
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_208d46();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_208d46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_208d46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint countLeadingZeros_208d46() {
-  uint res = 31u;
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_208d46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_208d46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_208d46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.glsl
index 2636598..a41336b 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/6d4656.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countLeadingZeros_6d4656() {
+  int res = 31;
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_6d4656();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countLeadingZeros_6d4656() {
+  int res = 31;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_6d4656();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int countLeadingZeros_6d4656() {
   int res = 31;
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_6d4656();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_6d4656();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_6d4656();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countLeadingZeros_6d4656() {
-  int res = 31;
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_6d4656();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_6d4656();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_6d4656();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countLeadingZeros_6d4656() {
-  int res = 31;
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_6d4656();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_6d4656();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_6d4656();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.glsl
index 23a1fde..584e3f0 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/70783f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 countLeadingZeros_70783f() {
+  uvec2 res = uvec2(31u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_70783f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 countLeadingZeros_70783f() {
+  uvec2 res = uvec2(31u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_70783f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 countLeadingZeros_70783f() {
   uvec2 res = uvec2(31u);
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_70783f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_70783f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_70783f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 countLeadingZeros_70783f() {
-  uvec2 res = uvec2(31u);
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_70783f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_70783f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_70783f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 countLeadingZeros_70783f() {
-  uvec2 res = uvec2(31u);
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_70783f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_70783f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_70783f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.glsl
index 0165486..f9d2342 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/7c38a6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countLeadingZeros_7c38a6() {
+  ivec3 res = ivec3(31);
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_7c38a6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countLeadingZeros_7c38a6() {
+  ivec3 res = ivec3(31);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_7c38a6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 countLeadingZeros_7c38a6() {
   ivec3 res = ivec3(31);
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_7c38a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_7c38a6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_7c38a6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countLeadingZeros_7c38a6() {
-  ivec3 res = ivec3(31);
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_7c38a6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_7c38a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_7c38a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countLeadingZeros_7c38a6() {
-  ivec3 res = ivec3(31);
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_7c38a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_7c38a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_7c38a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.glsl
index 6b99ef6..7a1f59b 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/858d40.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countLeadingZeros_858d40() {
+  ivec2 res = ivec2(31);
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_858d40();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countLeadingZeros_858d40() {
+  ivec2 res = ivec2(31);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_858d40();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 countLeadingZeros_858d40() {
   ivec2 res = ivec2(31);
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_858d40();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_858d40();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_858d40();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countLeadingZeros_858d40() {
-  ivec2 res = ivec2(31);
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_858d40();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_858d40();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_858d40();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countLeadingZeros_858d40() {
-  ivec2 res = ivec2(31);
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_858d40();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_858d40();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_858d40();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.glsl
index 9614752..cdc90bc 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/ab6345.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 countLeadingZeros_ab6345() {
+  uvec3 res = uvec3(31u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_ab6345();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 countLeadingZeros_ab6345() {
+  uvec3 res = uvec3(31u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_ab6345();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 countLeadingZeros_ab6345() {
   uvec3 res = uvec3(31u);
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_ab6345();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_ab6345();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_ab6345();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 countLeadingZeros_ab6345() {
-  uvec3 res = uvec3(31u);
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_ab6345();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_ab6345();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_ab6345();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 countLeadingZeros_ab6345() {
-  uvec3 res = uvec3(31u);
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_ab6345();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_ab6345();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_ab6345();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.glsl
index 9b2360d..8764c77 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/eab32b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countLeadingZeros_eab32b() {
+  ivec4 res = ivec4(31);
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_eab32b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countLeadingZeros_eab32b() {
+  ivec4 res = ivec4(31);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_eab32b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 countLeadingZeros_eab32b() {
   ivec4 res = ivec4(31);
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_eab32b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_eab32b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_eab32b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countLeadingZeros_eab32b() {
-  ivec4 res = ivec4(31);
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_eab32b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_eab32b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_eab32b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countLeadingZeros_eab32b() {
-  ivec4 res = ivec4(31);
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_eab32b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_eab32b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_eab32b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.glsl
index 4ce1354..88785c2 100644
--- a/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countLeadingZeros/f70103.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 countLeadingZeros_f70103() {
+  uvec4 res = uvec4(31u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countLeadingZeros_f70103();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 countLeadingZeros_f70103() {
+  uvec4 res = uvec4(31u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countLeadingZeros_f70103();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 countLeadingZeros_f70103() {
   uvec4 res = uvec4(31u);
   return res;
 }
-void main() {
-  prevent_dce = countLeadingZeros_f70103();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_f70103();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countLeadingZeros_f70103();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 countLeadingZeros_f70103() {
-  uvec4 res = uvec4(31u);
-  return res;
-}
 void main() {
-  prevent_dce = countLeadingZeros_f70103();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_f70103();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_f70103();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 countLeadingZeros_f70103() {
-  uvec4 res = uvec4(31u);
-  return res;
-}
-void main() {
-  prevent_dce = countLeadingZeros_f70103();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countLeadingZeros_f70103();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countLeadingZeros_f70103();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.glsl
index d4538f1..943c3fa 100644
--- a/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/0d0e46.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 countOneBits_0d0e46() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_0d0e46();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 countOneBits_0d0e46() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_0d0e46();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 countOneBits_0d0e46() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_0d0e46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0d0e46();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_0d0e46();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 countOneBits_0d0e46() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_0d0e46();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0d0e46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_0d0e46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 countOneBits_0d0e46() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_0d0e46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0d0e46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_0d0e46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.glsl
index 9a773b2..c1e7fb8 100644
--- a/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/0f7980.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countOneBits_0f7980() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_0f7980();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countOneBits_0f7980() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_0f7980();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 countOneBits_0f7980() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_0f7980();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countOneBits_0f7980() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_0f7980();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_0f7980();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countOneBits_0f7980() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_0f7980();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.glsl
index 6f94e13..96df5df 100644
--- a/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/65d2ae.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countOneBits_65d2ae() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_65d2ae();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countOneBits_65d2ae() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_65d2ae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 countOneBits_65d2ae() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_65d2ae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countOneBits_65d2ae() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_65d2ae();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_65d2ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countOneBits_65d2ae() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_65d2ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.glsl
index ad80a16..debf36c 100644
--- a/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/690cfc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 countOneBits_690cfc() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_690cfc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 countOneBits_690cfc() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_690cfc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 countOneBits_690cfc() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_690cfc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_690cfc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_690cfc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 countOneBits_690cfc() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_690cfc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_690cfc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_690cfc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 countOneBits_690cfc() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_690cfc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_690cfc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_690cfc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.glsl
index 9b72a40..03e91eb 100644
--- a/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/94fd81.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 countOneBits_94fd81() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_94fd81();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 countOneBits_94fd81() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_94fd81();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 countOneBits_94fd81() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_94fd81();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_94fd81();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_94fd81();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 countOneBits_94fd81() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_94fd81();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_94fd81();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_94fd81();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 countOneBits_94fd81() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_94fd81();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_94fd81();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_94fd81();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.glsl
index ffd8ed4..95da575 100644
--- a/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/ae44f9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint countOneBits_ae44f9() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_ae44f9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint countOneBits_ae44f9() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_ae44f9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint countOneBits_ae44f9() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_ae44f9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_ae44f9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_ae44f9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint countOneBits_ae44f9() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_ae44f9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_ae44f9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_ae44f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint countOneBits_ae44f9() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_ae44f9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_ae44f9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_ae44f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.glsl
index 6de8985..ccfa710 100644
--- a/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/af90e2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countOneBits_af90e2() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_af90e2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countOneBits_af90e2() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_af90e2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 countOneBits_af90e2() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_af90e2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countOneBits_af90e2() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_af90e2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_af90e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countOneBits_af90e2() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_af90e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.glsl
index 2c1e9b7..2c7ee82 100644
--- a/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countOneBits/fd88b2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countOneBits_fd88b2() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = countOneBits_fd88b2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countOneBits_fd88b2() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countOneBits_fd88b2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int countOneBits_fd88b2() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_fd88b2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countOneBits_fd88b2() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_fd88b2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_fd88b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countOneBits_fd88b2() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_fd88b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.glsl
index 615b187..68f50b6 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1ad138.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 countTrailingZeros_1ad138() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_1ad138();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 countTrailingZeros_1ad138() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_1ad138();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 countTrailingZeros_1ad138() {
   uvec2 res = uvec2(0u);
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_1ad138();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_1ad138();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_1ad138();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 countTrailingZeros_1ad138() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_1ad138();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_1ad138();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_1ad138();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 countTrailingZeros_1ad138() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_1ad138();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_1ad138();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_1ad138();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.glsl
index d9259ad..1e43705 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/1dc84a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countTrailingZeros_1dc84a() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_1dc84a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countTrailingZeros_1dc84a() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_1dc84a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 countTrailingZeros_1dc84a() {
   ivec4 res = ivec4(0);
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_1dc84a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_1dc84a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_1dc84a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countTrailingZeros_1dc84a() {
-  ivec4 res = ivec4(0);
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_1dc84a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_1dc84a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_1dc84a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countTrailingZeros_1dc84a() {
-  ivec4 res = ivec4(0);
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_1dc84a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_1dc84a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_1dc84a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.glsl
index d99d157..e312aac 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/21e394.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint countTrailingZeros_21e394() {
+  uint res = 0u;
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_21e394();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint countTrailingZeros_21e394() {
+  uint res = 0u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_21e394();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint countTrailingZeros_21e394() {
   uint res = 0u;
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_21e394();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_21e394();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_21e394();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint countTrailingZeros_21e394() {
-  uint res = 0u;
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_21e394();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_21e394();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_21e394();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint countTrailingZeros_21e394() {
-  uint res = 0u;
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_21e394();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_21e394();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_21e394();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.glsl
index 487b843..30530b8 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/327c37.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countTrailingZeros_327c37() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_327c37();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countTrailingZeros_327c37() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_327c37();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 countTrailingZeros_327c37() {
   ivec2 res = ivec2(0);
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_327c37();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_327c37();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_327c37();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countTrailingZeros_327c37() {
-  ivec2 res = ivec2(0);
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_327c37();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_327c37();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_327c37();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countTrailingZeros_327c37() {
-  ivec2 res = ivec2(0);
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_327c37();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_327c37();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_327c37();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.glsl
index da282bf..33f308d 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/42fed6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countTrailingZeros_42fed6() {
+  int res = 0;
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_42fed6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countTrailingZeros_42fed6() {
+  int res = 0;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_42fed6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int countTrailingZeros_42fed6() {
   int res = 0;
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_42fed6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_42fed6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_42fed6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countTrailingZeros_42fed6() {
-  int res = 0;
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_42fed6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_42fed6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_42fed6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countTrailingZeros_42fed6() {
-  int res = 0;
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_42fed6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_42fed6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_42fed6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.glsl
index 476807c..858df09 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/8ed26f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 countTrailingZeros_8ed26f() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_8ed26f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 countTrailingZeros_8ed26f() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_8ed26f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 countTrailingZeros_8ed26f() {
   uvec3 res = uvec3(0u);
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_8ed26f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_8ed26f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_8ed26f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 countTrailingZeros_8ed26f() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_8ed26f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_8ed26f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_8ed26f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 countTrailingZeros_8ed26f() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_8ed26f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_8ed26f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_8ed26f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.glsl
index a361a09..45deeea 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/acfacb.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countTrailingZeros_acfacb() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_acfacb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countTrailingZeros_acfacb() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_acfacb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 countTrailingZeros_acfacb() {
   ivec3 res = ivec3(0);
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_acfacb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_acfacb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_acfacb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countTrailingZeros_acfacb() {
-  ivec3 res = ivec3(0);
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_acfacb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_acfacb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_acfacb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countTrailingZeros_acfacb() {
-  ivec3 res = ivec3(0);
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_acfacb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_acfacb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_acfacb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.glsl
index 1d17ed0..abf556f 100644
--- a/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/countTrailingZeros/d2b4a0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 countTrailingZeros_d2b4a0() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = countTrailingZeros_d2b4a0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 countTrailingZeros_d2b4a0() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = countTrailingZeros_d2b4a0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 countTrailingZeros_d2b4a0() {
   uvec4 res = uvec4(0u);
   return res;
 }
-void main() {
-  prevent_dce = countTrailingZeros_d2b4a0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_d2b4a0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countTrailingZeros_d2b4a0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 countTrailingZeros_d2b4a0() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
 void main() {
-  prevent_dce = countTrailingZeros_d2b4a0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_d2b4a0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_d2b4a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 countTrailingZeros_d2b4a0() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
-void main() {
-  prevent_dce = countTrailingZeros_d2b4a0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countTrailingZeros_d2b4a0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countTrailingZeros_d2b4a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.glsl
index 88fa080..d5c24a5 100644
--- a/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cross/041cb0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cross_041cb0() {
+  vec3 res = vec3(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = cross_041cb0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cross_041cb0() {
+  vec3 res = vec3(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = cross_041cb0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 cross_041cb0() {
   vec3 res = vec3(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = cross_041cb0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_041cb0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cross_041cb0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cross_041cb0() {
-  vec3 res = vec3(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = cross_041cb0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_041cb0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_041cb0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cross_041cb0() {
-  vec3 res = vec3(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = cross_041cb0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_041cb0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_041cb0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.glsl
index eff3ab4..0319980 100644
--- a/test/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cross/1d7933.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cross_1d7933() {
+  vec3 res = vec3(0.0f);
+}
+void main() {
+  cross_1d7933();
+}
+#version 310 es
+
+void cross_1d7933() {
+  vec3 res = vec3(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cross_1d7933();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cross_1d7933() {
   vec3 res = vec3(0.0f);
 }
-void main() {
-  cross_1d7933();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cross_1d7933();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cross_1d7933();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cross_1d7933() {
-  vec3 res = vec3(0.0f);
-}
 void main() {
-  cross_1d7933();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cross_1d7933();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cross_1d7933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cross_1d7933() {
-  vec3 res = vec3(0.0f);
-}
-void main() {
-  cross_1d7933();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cross_1d7933();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cross_1d7933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.glsl
index d9bfd26..a2a7f5a 100644
--- a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cross_9857cb() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = cross_9857cb();
+  v.tint_symbol = cross_9857cb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_9857cb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_9857cb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cross_9857cb() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cross_9857cb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cross_9857cb();
+  v.tint_symbol = cross_9857cb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_9857cb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 cross_9857cb() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = cross_9857cb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_9857cb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cross_9857cb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.glsl
index 93b6f54..4af1ed0 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 degrees_0d170c() {
+  vec4 res = vec4(57.2957763671875f);
+  return res;
+}
+void main() {
+  v.tint_symbol = degrees_0d170c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 degrees_0d170c() {
+  vec4 res = vec4(57.2957763671875f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = degrees_0d170c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 degrees_0d170c() {
   vec4 res = vec4(57.2957763671875f);
   return res;
 }
-void main() {
-  prevent_dce = degrees_0d170c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_0d170c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_0d170c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 degrees_0d170c() {
-  vec4 res = vec4(57.2957763671875f);
-  return res;
-}
 void main() {
-  prevent_dce = degrees_0d170c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_0d170c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_0d170c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 degrees_0d170c() {
-  vec4 res = vec4(57.2957763671875f);
-  return res;
-}
-void main() {
-  prevent_dce = degrees_0d170c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_0d170c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_0d170c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.glsl
index 846fca9..da8e056 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 degrees_1ad5df() {
+  vec2 res = vec2(57.2957763671875f);
+  return res;
+}
+void main() {
+  v.tint_symbol = degrees_1ad5df();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 degrees_1ad5df() {
+  vec2 res = vec2(57.2957763671875f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = degrees_1ad5df();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 degrees_1ad5df() {
   vec2 res = vec2(57.2957763671875f);
   return res;
 }
-void main() {
-  prevent_dce = degrees_1ad5df();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_1ad5df();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_1ad5df();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 degrees_1ad5df() {
-  vec2 res = vec2(57.2957763671875f);
-  return res;
-}
 void main() {
-  prevent_dce = degrees_1ad5df();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_1ad5df();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_1ad5df();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 degrees_1ad5df() {
-  vec2 res = vec2(57.2957763671875f);
-  return res;
-}
-void main() {
-  prevent_dce = degrees_1ad5df();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_1ad5df();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_1ad5df();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.glsl
index d965bf5..9574cd3 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 degrees_2af623() {
+  vec3 res = vec3(57.2957763671875f);
+  return res;
+}
+void main() {
+  v.tint_symbol = degrees_2af623();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 degrees_2af623() {
+  vec3 res = vec3(57.2957763671875f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = degrees_2af623();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 degrees_2af623() {
   vec3 res = vec3(57.2957763671875f);
   return res;
 }
-void main() {
-  prevent_dce = degrees_2af623();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_2af623();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_2af623();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 degrees_2af623() {
-  vec3 res = vec3(57.2957763671875f);
-  return res;
-}
 void main() {
-  prevent_dce = degrees_2af623();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_2af623();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_2af623();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 degrees_2af623() {
-  vec3 res = vec3(57.2957763671875f);
-  return res;
-}
-void main() {
-  prevent_dce = degrees_2af623();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_2af623();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_2af623();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.glsl
index cd583c4..48ab43c 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 degrees_3055d3() {
   f16vec4 res = f16vec4(57.3125hf);
   return res;
 }
 void main() {
-  prevent_dce = degrees_3055d3();
+  v.tint_symbol = degrees_3055d3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_3055d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_3055d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 degrees_3055d3() {
   f16vec4 res = f16vec4(57.3125hf);
   return res;
 }
-void main() {
-  prevent_dce = degrees_3055d3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = degrees_3055d3();
+  v.tint_symbol = degrees_3055d3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_3055d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 degrees_3055d3() {
   f16vec4 res = f16vec4(57.3125hf);
   return res;
 }
-void main() {
-  prevent_dce = degrees_3055d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_3055d3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_3055d3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.glsl
index 1e2d9d7..e34c1f8 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float degrees_51f705() {
+  float res = 57.2957763671875f;
+  return res;
+}
+void main() {
+  v.tint_symbol = degrees_51f705();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float degrees_51f705() {
+  float res = 57.2957763671875f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = degrees_51f705();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float degrees_51f705() {
   float res = 57.2957763671875f;
   return res;
 }
-void main() {
-  prevent_dce = degrees_51f705();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_51f705();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_51f705();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float degrees_51f705() {
-  float res = 57.2957763671875f;
-  return res;
-}
 void main() {
-  prevent_dce = degrees_51f705();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_51f705();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_51f705();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float degrees_51f705() {
-  float res = 57.2957763671875f;
-  return res;
-}
-void main() {
-  prevent_dce = degrees_51f705();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_51f705();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_51f705();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.glsl
index fd90232..3c3f18b 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t degrees_5e9805() {
   float16_t res = 57.3125hf;
   return res;
 }
 void main() {
-  prevent_dce = degrees_5e9805();
+  v.tint_symbol = degrees_5e9805();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_5e9805();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_5e9805();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t degrees_5e9805() {
   float16_t res = 57.3125hf;
   return res;
 }
-void main() {
-  prevent_dce = degrees_5e9805();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = degrees_5e9805();
+  v.tint_symbol = degrees_5e9805();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_5e9805();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t degrees_5e9805() {
   float16_t res = 57.3125hf;
   return res;
 }
-void main() {
-  prevent_dce = degrees_5e9805();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_5e9805();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_5e9805();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.glsl
index 46b4385..4b38a57 100644
--- a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_810467() {
+  vec2 res = vec2(57.295780181884765625f);
+}
+void main() {
+  degrees_810467();
+}
+#version 310 es
+
+void degrees_810467() {
+  vec2 res = vec2(57.295780181884765625f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_810467();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_810467() {
   vec2 res = vec2(57.295780181884765625f);
 }
-void main() {
-  degrees_810467();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_810467();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_810467();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_810467() {
-  vec2 res = vec2(57.295780181884765625f);
-}
 void main() {
-  degrees_810467();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_810467();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_810467();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_810467() {
-  vec2 res = vec2(57.295780181884765625f);
-}
-void main() {
-  degrees_810467();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_810467();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_810467();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.glsl
index f9d9eb0..621bdf7 100644
--- a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_c0880c() {
+  vec3 res = vec3(57.295780181884765625f);
+}
+void main() {
+  degrees_c0880c();
+}
+#version 310 es
+
+void degrees_c0880c() {
+  vec3 res = vec3(57.295780181884765625f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_c0880c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_c0880c() {
   vec3 res = vec3(57.295780181884765625f);
 }
-void main() {
-  degrees_c0880c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_c0880c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_c0880c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_c0880c() {
-  vec3 res = vec3(57.295780181884765625f);
-}
 void main() {
-  degrees_c0880c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_c0880c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_c0880c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_c0880c() {
-  vec3 res = vec3(57.295780181884765625f);
-}
-void main() {
-  degrees_c0880c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_c0880c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_c0880c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.glsl
index e81ceb4..82e4e29 100644
--- a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_d43a49() {
+  vec4 res = vec4(57.295780181884765625f);
+}
+void main() {
+  degrees_d43a49();
+}
+#version 310 es
+
+void degrees_d43a49() {
+  vec4 res = vec4(57.295780181884765625f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_d43a49();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_d43a49() {
   vec4 res = vec4(57.295780181884765625f);
 }
-void main() {
-  degrees_d43a49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_d43a49();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_d43a49();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_d43a49() {
-  vec4 res = vec4(57.295780181884765625f);
-}
 void main() {
-  degrees_d43a49();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_d43a49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_d43a49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_d43a49() {
-  vec4 res = vec4(57.295780181884765625f);
-}
-void main() {
-  degrees_d43a49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_d43a49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_d43a49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.glsl
index 95da02f..bafec75 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 degrees_dfe8f4() {
   f16vec3 res = f16vec3(57.3125hf);
   return res;
 }
 void main() {
-  prevent_dce = degrees_dfe8f4();
+  v.tint_symbol = degrees_dfe8f4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_dfe8f4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_dfe8f4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 degrees_dfe8f4() {
   f16vec3 res = f16vec3(57.3125hf);
   return res;
 }
-void main() {
-  prevent_dce = degrees_dfe8f4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = degrees_dfe8f4();
+  v.tint_symbol = degrees_dfe8f4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_dfe8f4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 degrees_dfe8f4() {
   f16vec3 res = f16vec3(57.3125hf);
   return res;
 }
-void main() {
-  prevent_dce = degrees_dfe8f4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_dfe8f4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_dfe8f4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.glsl
index c11e455..b3c059f 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 degrees_f59715() {
   f16vec2 res = f16vec2(57.3125hf);
   return res;
 }
 void main() {
-  prevent_dce = degrees_f59715();
+  v.tint_symbol = degrees_f59715();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_f59715();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_f59715();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 degrees_f59715() {
   f16vec2 res = f16vec2(57.3125hf);
   return res;
 }
-void main() {
-  prevent_dce = degrees_f59715();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = degrees_f59715();
+  v.tint_symbol = degrees_f59715();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = degrees_f59715();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 degrees_f59715() {
   f16vec2 res = f16vec2(57.3125hf);
   return res;
 }
-void main() {
-  prevent_dce = degrees_f59715();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = degrees_f59715();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = degrees_f59715();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.glsl
index 67eac30..fc2ebbb 100644
--- a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_fafa7e() {
+  float res = 57.295780181884765625f;
+}
+void main() {
+  degrees_fafa7e();
+}
+#version 310 es
+
+void degrees_fafa7e() {
+  float res = 57.295780181884765625f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_fafa7e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_fafa7e() {
   float res = 57.295780181884765625f;
 }
-void main() {
-  degrees_fafa7e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_fafa7e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_fafa7e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_fafa7e() {
-  float res = 57.295780181884765625f;
-}
 void main() {
-  degrees_fafa7e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_fafa7e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_fafa7e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_fafa7e() {
-  float res = 57.295780181884765625f;
-}
-void main() {
-  degrees_fafa7e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_fafa7e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_fafa7e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.glsl
index 48848f5..63a43b6 100644
--- a/test/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/1bf6e7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void determinant_1bf6e7() {
+  float res = 0.0f;
+}
+void main() {
+  determinant_1bf6e7();
+}
+#version 310 es
+
+void determinant_1bf6e7() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  determinant_1bf6e7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void determinant_1bf6e7() {
   float res = 0.0f;
 }
-void main() {
-  determinant_1bf6e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_1bf6e7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   determinant_1bf6e7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_1bf6e7() {
-  float res = 0.0f;
-}
 void main() {
-  determinant_1bf6e7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_1bf6e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_1bf6e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_1bf6e7() {
-  float res = 0.0f;
-}
-void main() {
-  determinant_1bf6e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_1bf6e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_1bf6e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.glsl
index 2979e8f..07adb64 100644
--- a/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/2b62ba.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_2b62ba() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = determinant_2b62ba();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_2b62ba() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = determinant_2b62ba();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float determinant_2b62ba() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_2b62ba();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_2b62ba() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = determinant_2b62ba();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_2b62ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_2b62ba() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_2b62ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.glsl
index cc0f348..e395d76 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_32bfde() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = determinant_32bfde();
+  v.tint_symbol = determinant_32bfde();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_32bfde();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_32bfde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_32bfde() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = determinant_32bfde();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_32bfde();
+  v.tint_symbol = determinant_32bfde();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_32bfde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t determinant_32bfde() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = determinant_32bfde();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_32bfde();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_32bfde();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.glsl
index c18ec98..87cc6b5 100644
--- a/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/a0a87c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_a0a87c() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = determinant_a0a87c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_a0a87c() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = determinant_a0a87c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float determinant_a0a87c() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_a0a87c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_a0a87c() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = determinant_a0a87c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_a0a87c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_a0a87c() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_a0a87c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.glsl
index ce134ab..b2998c2 100644
--- a/test/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/c8251d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void determinant_c8251d() {
+  float res = 0.0f;
+}
+void main() {
+  determinant_c8251d();
+}
+#version 310 es
+
+void determinant_c8251d() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  determinant_c8251d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void determinant_c8251d() {
   float res = 0.0f;
 }
-void main() {
-  determinant_c8251d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_c8251d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   determinant_c8251d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_c8251d() {
-  float res = 0.0f;
-}
 void main() {
-  determinant_c8251d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_c8251d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_c8251d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_c8251d() {
-  float res = 0.0f;
-}
-void main() {
-  determinant_c8251d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_c8251d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_c8251d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.glsl
index b1c4084..32f7b21 100644
--- a/test/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/cefdf3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void determinant_cefdf3() {
+  float res = 0.0f;
+}
+void main() {
+  determinant_cefdf3();
+}
+#version 310 es
+
+void determinant_cefdf3() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  determinant_cefdf3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void determinant_cefdf3() {
   float res = 0.0f;
 }
-void main() {
-  determinant_cefdf3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_cefdf3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   determinant_cefdf3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_cefdf3() {
-  float res = 0.0f;
-}
 void main() {
-  determinant_cefdf3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_cefdf3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_cefdf3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_cefdf3() {
-  float res = 0.0f;
-}
-void main() {
-  determinant_cefdf3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_cefdf3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_cefdf3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.glsl
index a2d620d..859e559 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_d7c86f() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = determinant_d7c86f();
+  v.tint_symbol = determinant_d7c86f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_d7c86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_d7c86f() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_d7c86f();
+  v.tint_symbol = determinant_d7c86f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_d7c86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t determinant_d7c86f() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_d7c86f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.glsl
index b308c26..1eaa65f 100644
--- a/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/e19305.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_e19305() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = determinant_e19305();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_e19305() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = determinant_e19305();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float determinant_e19305() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = determinant_e19305();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_e19305();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_e19305();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_e19305() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = determinant_e19305();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_e19305();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_e19305();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_e19305() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = determinant_e19305();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_e19305();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_e19305();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.glsl
index 5d0dbcc..7d503c5 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_fc12a5() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = determinant_fc12a5();
+  v.tint_symbol = determinant_fc12a5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_fc12a5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_fc12a5() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_fc12a5();
+  v.tint_symbol = determinant_fc12a5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_fc12a5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t determinant_fc12a5() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_fc12a5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.glsl
index 0590075..11566a8 100644
--- a/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/0657d4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_0657d4() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = distance_0657d4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_0657d4() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = distance_0657d4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_0657d4() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = distance_0657d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_0657d4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_0657d4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_0657d4() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = distance_0657d4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_0657d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_0657d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_0657d4() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = distance_0657d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_0657d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_0657d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.glsl
index 1537526..16815c0 100644
--- a/test/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/3a175a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_3a175a() {
+  float res = 0.0f;
+}
+void main() {
+  distance_3a175a();
+}
+#version 310 es
+
+void distance_3a175a() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_3a175a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_3a175a() {
   float res = 0.0f;
 }
-void main() {
-  distance_3a175a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_3a175a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_3a175a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_3a175a() {
-  float res = 0.0f;
-}
 void main() {
-  distance_3a175a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_3a175a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_3a175a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_3a175a() {
-  float res = 0.0f;
-}
-void main() {
-  distance_3a175a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_3a175a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_3a175a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.glsl
index c3b2693..23bed9f 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7272f3() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = distance_7272f3();
+  v.tint_symbol = distance_7272f3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7272f3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7272f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7272f3() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_7272f3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_7272f3();
+  v.tint_symbol = distance_7272f3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7272f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_7272f3() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_7272f3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7272f3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_7272f3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.glsl
index 0ca633f..7fdcd05 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7d201f() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = distance_7d201f();
+  v.tint_symbol = distance_7d201f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7d201f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7d201f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7d201f() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_7d201f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_7d201f();
+  v.tint_symbol = distance_7d201f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7d201f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_7d201f() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_7d201f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7d201f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_7d201f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.glsl
index 56f3409..f44d9db 100644
--- a/test/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/83911f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_83911f() {
+  float res = 0.0f;
+}
+void main() {
+  distance_83911f();
+}
+#version 310 es
+
+void distance_83911f() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_83911f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_83911f() {
   float res = 0.0f;
 }
-void main() {
-  distance_83911f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_83911f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_83911f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_83911f() {
-  float res = 0.0f;
-}
 void main() {
-  distance_83911f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_83911f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_83911f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_83911f() {
-  float res = 0.0f;
-}
-void main() {
-  distance_83911f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_83911f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_83911f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.glsl
index db7e834..2e5fbdf 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_892a5d() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = distance_892a5d();
+  v.tint_symbol = distance_892a5d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_892a5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_892a5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_892a5d() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_892a5d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_892a5d();
+  v.tint_symbol = distance_892a5d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_892a5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_892a5d() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_892a5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_892a5d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_892a5d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.glsl
index c406e44..2a147aa 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_928fa0() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = distance_928fa0();
+  v.tint_symbol = distance_928fa0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_928fa0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_928fa0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_928fa0() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_928fa0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_928fa0();
+  v.tint_symbol = distance_928fa0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_928fa0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_928fa0() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = distance_928fa0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_928fa0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_928fa0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.glsl
index 81af98e..f4a5946 100644
--- a/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/9646ea.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_9646ea() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = distance_9646ea();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_9646ea() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = distance_9646ea();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_9646ea() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = distance_9646ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_9646ea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_9646ea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_9646ea() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = distance_9646ea();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_9646ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_9646ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_9646ea() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = distance_9646ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_9646ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_9646ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.glsl
index 3e12014..e0eb565 100644
--- a/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/aa4055.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_aa4055() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = distance_aa4055();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_aa4055() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = distance_aa4055();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_aa4055() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = distance_aa4055();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_aa4055();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_aa4055();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_aa4055() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = distance_aa4055();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_aa4055();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_aa4055();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_aa4055() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = distance_aa4055();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_aa4055();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_aa4055();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.glsl
index c1583f9..62bb225 100644
--- a/test/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/ac5535.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_ac5535() {
+  float res = 0.0f;
+}
+void main() {
+  distance_ac5535();
+}
+#version 310 es
+
+void distance_ac5535() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_ac5535();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_ac5535() {
   float res = 0.0f;
 }
-void main() {
-  distance_ac5535();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_ac5535();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_ac5535();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_ac5535() {
-  float res = 0.0f;
-}
 void main() {
-  distance_ac5535();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_ac5535();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_ac5535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_ac5535() {
-  float res = 0.0f;
-}
-void main() {
-  distance_ac5535();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_ac5535();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_ac5535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.glsl
index bb86b30..7115a4a 100644
--- a/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/cfed73.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_cfed73() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = distance_cfed73();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float distance_cfed73() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = distance_cfed73();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_cfed73() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = distance_cfed73();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_cfed73();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_cfed73();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_cfed73() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = distance_cfed73();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_cfed73();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_cfed73();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float distance_cfed73() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = distance_cfed73();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_cfed73();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_cfed73();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.glsl
index 88b2f6a..68c43dc 100644
--- a/test/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/distance/f9c9ee.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_f9c9ee() {
+  float res = 0.0f;
+}
+void main() {
+  distance_f9c9ee();
+}
+#version 310 es
+
+void distance_f9c9ee() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_f9c9ee();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_f9c9ee() {
   float res = 0.0f;
 }
-void main() {
-  distance_f9c9ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_f9c9ee();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_f9c9ee();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_f9c9ee() {
-  float res = 0.0f;
-}
 void main() {
-  distance_f9c9ee();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_f9c9ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_f9c9ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_f9c9ee() {
-  float res = 0.0f;
-}
-void main() {
-  distance_f9c9ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_f9c9ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_f9c9ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.glsl
index 89d5b1e..f1c3cfd 100644
--- a/test/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/08eb56.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_08eb56() {
+  float res = 4.0f;
+}
+void main() {
+  dot_08eb56();
+}
+#version 310 es
+
+void dot_08eb56() {
+  float res = 4.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_08eb56();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_08eb56() {
   float res = 4.0f;
 }
-void main() {
-  dot_08eb56();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_08eb56();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_08eb56();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_08eb56() {
-  float res = 4.0f;
-}
 void main() {
-  dot_08eb56();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_08eb56();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_08eb56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_08eb56() {
-  float res = 4.0f;
-}
-void main() {
-  dot_08eb56();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_08eb56();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_08eb56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.glsl
index 1e59902..329e156 100644
--- a/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/0c577b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float dot_0c577b() {
+  float res = 4.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_0c577b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float dot_0c577b() {
+  float res = 4.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_0c577b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float dot_0c577b() {
   float res = 4.0f;
   return res;
 }
-void main() {
-  prevent_dce = dot_0c577b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_0c577b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_0c577b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float dot_0c577b() {
-  float res = 4.0f;
-  return res;
-}
 void main() {
-  prevent_dce = dot_0c577b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_0c577b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_0c577b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float dot_0c577b() {
-  float res = 4.0f;
-  return res;
-}
-void main() {
-  prevent_dce = dot_0c577b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_0c577b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_0c577b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.glsl
index 944e72a..d008c5a 100644
--- a/test/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/0d2c2e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_0d2c2e() {
+  float res = 2.0f;
+}
+void main() {
+  dot_0d2c2e();
+}
+#version 310 es
+
+void dot_0d2c2e() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_0d2c2e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_0d2c2e() {
   float res = 2.0f;
 }
-void main() {
-  dot_0d2c2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_0d2c2e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_0d2c2e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_0d2c2e() {
-  float res = 2.0f;
-}
 void main() {
-  dot_0d2c2e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_0d2c2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_0d2c2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_0d2c2e() {
-  float res = 2.0f;
-}
-void main() {
-  dot_0d2c2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_0d2c2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_0d2c2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.glsl
index daf4ac5..6e8ead4 100644
--- a/test/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/14bc63.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_14bc63() {
+  int res = 2;
+}
+void main() {
+  dot_14bc63();
+}
+#version 310 es
+
+void dot_14bc63() {
+  int res = 2;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_14bc63();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_14bc63() {
   int res = 2;
 }
-void main() {
-  dot_14bc63();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_14bc63();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_14bc63();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_14bc63() {
-  int res = 2;
-}
 void main() {
-  dot_14bc63();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_14bc63();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_14bc63();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_14bc63() {
-  int res = 2;
-}
-void main() {
-  dot_14bc63();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_14bc63();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_14bc63();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.glsl
index be30155..148c019 100644
--- a/test/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/5a4c8f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_5a4c8f() {
+  float res = 3.0f;
+}
+void main() {
+  dot_5a4c8f();
+}
+#version 310 es
+
+void dot_5a4c8f() {
+  float res = 3.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_5a4c8f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_5a4c8f() {
   float res = 3.0f;
 }
-void main() {
-  dot_5a4c8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_5a4c8f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_5a4c8f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_5a4c8f() {
-  float res = 3.0f;
-}
 void main() {
-  dot_5a4c8f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_5a4c8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_5a4c8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_5a4c8f() {
-  float res = 3.0f;
-}
-void main() {
-  dot_5a4c8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_5a4c8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_5a4c8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.glsl
index 6684f33..1b962d3 100644
--- a/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/7548a0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot_7548a0() {
+  uint res = 3u;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_7548a0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot_7548a0() {
+  uint res = 3u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_7548a0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint dot_7548a0() {
   uint res = 3u;
   return res;
 }
-void main() {
-  prevent_dce = dot_7548a0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_7548a0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_7548a0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot_7548a0() {
-  uint res = 3u;
-  return res;
-}
 void main() {
-  prevent_dce = dot_7548a0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_7548a0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_7548a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot_7548a0() {
-  uint res = 3u;
-  return res;
-}
-void main() {
-  prevent_dce = dot_7548a0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_7548a0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_7548a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.glsl
index ec27091..a08936f 100644
--- a/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/883f0e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float dot_883f0e() {
+  float res = 2.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_883f0e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float dot_883f0e() {
+  float res = 2.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_883f0e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float dot_883f0e() {
   float res = 2.0f;
   return res;
 }
-void main() {
-  prevent_dce = dot_883f0e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_883f0e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_883f0e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float dot_883f0e() {
-  float res = 2.0f;
-  return res;
-}
 void main() {
-  prevent_dce = dot_883f0e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_883f0e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_883f0e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float dot_883f0e() {
-  float res = 2.0f;
-  return res;
-}
-void main() {
-  prevent_dce = dot_883f0e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_883f0e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_883f0e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.glsl
index 94583cc..ab95e9d 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_8e40f1() {
   float16_t res = 3.0hf;
   return res;
 }
 void main() {
-  prevent_dce = dot_8e40f1();
+  v.tint_symbol = dot_8e40f1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_8e40f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_8e40f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_8e40f1() {
   float16_t res = 3.0hf;
   return res;
 }
-void main() {
-  prevent_dce = dot_8e40f1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_8e40f1();
+  v.tint_symbol = dot_8e40f1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_8e40f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t dot_8e40f1() {
   float16_t res = 3.0hf;
   return res;
 }
-void main() {
-  prevent_dce = dot_8e40f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_8e40f1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_8e40f1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.glsl
index c2f3909..b7cde11 100644
--- a/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/97c7ee.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot_97c7ee() {
+  uint res = 2u;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_97c7ee();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot_97c7ee() {
+  uint res = 2u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_97c7ee();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint dot_97c7ee() {
   uint res = 2u;
   return res;
 }
-void main() {
-  prevent_dce = dot_97c7ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_97c7ee();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_97c7ee();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot_97c7ee() {
-  uint res = 2u;
-  return res;
-}
 void main() {
-  prevent_dce = dot_97c7ee();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_97c7ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_97c7ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot_97c7ee() {
-  uint res = 2u;
-  return res;
-}
-void main() {
-  prevent_dce = dot_97c7ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_97c7ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_97c7ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.glsl
index 8964a7e..b9f44e2 100644
--- a/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/ba4246.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float dot_ba4246() {
+  float res = 3.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_ba4246();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float dot_ba4246() {
+  float res = 3.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_ba4246();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float dot_ba4246() {
   float res = 3.0f;
   return res;
 }
-void main() {
-  prevent_dce = dot_ba4246();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ba4246();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_ba4246();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float dot_ba4246() {
-  float res = 3.0f;
-  return res;
-}
 void main() {
-  prevent_dce = dot_ba4246();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ba4246();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_ba4246();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float dot_ba4246() {
-  float res = 3.0f;
-  return res;
-}
-void main() {
-  prevent_dce = dot_ba4246();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ba4246();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_ba4246();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.glsl
index 51ffb9c..95df9db 100644
--- a/test/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/c11efe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_c11efe() {
+  int res = 3;
+}
+void main() {
+  dot_c11efe();
+}
+#version 310 es
+
+void dot_c11efe() {
+  int res = 3;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_c11efe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_c11efe() {
   int res = 3;
 }
-void main() {
-  dot_c11efe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_c11efe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_c11efe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_c11efe() {
-  int res = 3;
-}
 void main() {
-  dot_c11efe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_c11efe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_c11efe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_c11efe() {
-  int res = 3;
-}
-void main() {
-  dot_c11efe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_c11efe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_c11efe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.glsl
index f9e1b86..8c07152 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_cd5a04() {
   float16_t res = 2.0hf;
   return res;
 }
 void main() {
-  prevent_dce = dot_cd5a04();
+  v.tint_symbol = dot_cd5a04();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_cd5a04();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_cd5a04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_cd5a04() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = dot_cd5a04();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_cd5a04();
+  v.tint_symbol = dot_cd5a04();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_cd5a04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t dot_cd5a04() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = dot_cd5a04();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_cd5a04();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_cd5a04();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.glsl
index f99a4ba..7ae5e1f 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_d0d179() {
   float16_t res = 4.0hf;
   return res;
 }
 void main() {
-  prevent_dce = dot_d0d179();
+  v.tint_symbol = dot_d0d179();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_d0d179();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_d0d179();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_d0d179() {
   float16_t res = 4.0hf;
   return res;
 }
-void main() {
-  prevent_dce = dot_d0d179();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_d0d179();
+  v.tint_symbol = dot_d0d179();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_d0d179();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t dot_d0d179() {
   float16_t res = 4.0hf;
   return res;
 }
-void main() {
-  prevent_dce = dot_d0d179();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_d0d179();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_d0d179();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.glsl
index 3bbc561..aade8ce 100644
--- a/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/e994c7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot_e994c7() {
+  uint res = 4u;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_e994c7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot_e994c7() {
+  uint res = 4u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_e994c7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint dot_e994c7() {
   uint res = 4u;
   return res;
 }
-void main() {
-  prevent_dce = dot_e994c7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_e994c7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_e994c7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot_e994c7() {
-  uint res = 4u;
-  return res;
-}
 void main() {
-  prevent_dce = dot_e994c7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_e994c7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_e994c7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot_e994c7() {
-  uint res = 4u;
-  return res;
-}
-void main() {
-  prevent_dce = dot_e994c7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_e994c7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_e994c7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.glsl
index 4abca94..fa9e75a 100644
--- a/test/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/eb9fbf.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_eb9fbf() {
+  int res = 4;
+}
+void main() {
+  dot_eb9fbf();
+}
+#version 310 es
+
+void dot_eb9fbf() {
+  int res = 4;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_eb9fbf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_eb9fbf() {
   int res = 4;
 }
-void main() {
-  dot_eb9fbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_eb9fbf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_eb9fbf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_eb9fbf() {
-  int res = 4;
-}
 void main() {
-  dot_eb9fbf();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_eb9fbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_eb9fbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_eb9fbf() {
-  int res = 4;
-}
-void main() {
-  dot_eb9fbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_eb9fbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_eb9fbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.glsl
index b90f702..4ca2fce 100644
--- a/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/ef6b1d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot_ef6b1d() {
+  int res = 4;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_ef6b1d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot_ef6b1d() {
+  int res = 4;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_ef6b1d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int dot_ef6b1d() {
   int res = 4;
   return res;
 }
-void main() {
-  prevent_dce = dot_ef6b1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ef6b1d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_ef6b1d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot_ef6b1d() {
-  int res = 4;
-  return res;
-}
 void main() {
-  prevent_dce = dot_ef6b1d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ef6b1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_ef6b1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot_ef6b1d() {
-  int res = 4;
-  return res;
-}
-void main() {
-  prevent_dce = dot_ef6b1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ef6b1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_ef6b1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.glsl
index 7ccdf63..96c09da 100644
--- a/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/f1312c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot_f1312c() {
+  int res = 3;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_f1312c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot_f1312c() {
+  int res = 3;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_f1312c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int dot_f1312c() {
   int res = 3;
   return res;
 }
-void main() {
-  prevent_dce = dot_f1312c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_f1312c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_f1312c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot_f1312c() {
-  int res = 3;
-  return res;
-}
 void main() {
-  prevent_dce = dot_f1312c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_f1312c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_f1312c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot_f1312c() {
-  int res = 3;
-  return res;
-}
-void main() {
-  prevent_dce = dot_f1312c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_f1312c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_f1312c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.glsl
index 174e178..46a99e5 100644
--- a/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot/fc5f7c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot_fc5f7c() {
+  int res = 2;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot_fc5f7c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot_fc5f7c() {
+  int res = 2;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot_fc5f7c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int dot_fc5f7c() {
   int res = 2;
   return res;
 }
-void main() {
-  prevent_dce = dot_fc5f7c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_fc5f7c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_fc5f7c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot_fc5f7c() {
-  int res = 2;
-  return res;
-}
 void main() {
-  prevent_dce = dot_fc5f7c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_fc5f7c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_fc5f7c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot_fc5f7c() {
-  int res = 2;
-  return res;
-}
-void main() {
-  prevent_dce = dot_fc5f7c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_fc5f7c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_fc5f7c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.glsl
index 79312c7..4881d25 100644
--- a/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot4I8Packed/881e62.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot4I8Packed_881e62() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot4I8Packed_881e62();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int dot4I8Packed_881e62() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot4I8Packed_881e62();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int dot4I8Packed_881e62() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = dot4I8Packed_881e62();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot4I8Packed_881e62();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot4I8Packed_881e62();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot4I8Packed_881e62() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = dot4I8Packed_881e62();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot4I8Packed_881e62();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot4I8Packed_881e62();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int dot4I8Packed_881e62() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = dot4I8Packed_881e62();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot4I8Packed_881e62();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot4I8Packed_881e62();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.glsl
index e09cfce..5d7d7a6 100644
--- a/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/dot4U8Packed/fbed7b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot4U8Packed_fbed7b() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = dot4U8Packed_fbed7b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint dot4U8Packed_fbed7b() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = dot4U8Packed_fbed7b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint dot4U8Packed_fbed7b() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = dot4U8Packed_fbed7b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot4U8Packed_fbed7b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot4U8Packed_fbed7b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot4U8Packed_fbed7b() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = dot4U8Packed_fbed7b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot4U8Packed_fbed7b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot4U8Packed_fbed7b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint dot4U8Packed_fbed7b() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = dot4U8Packed_fbed7b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot4U8Packed_fbed7b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot4U8Packed_fbed7b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.glsl
index f86676e..7657154 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 exp_0f70eb() {
+  vec4 res = vec4(2.71828174591064453125f);
+  return res;
+}
+void main() {
+  v.tint_symbol = exp_0f70eb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 exp_0f70eb() {
+  vec4 res = vec4(2.71828174591064453125f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp_0f70eb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 exp_0f70eb() {
   vec4 res = vec4(2.71828174591064453125f);
   return res;
 }
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_0f70eb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 exp_0f70eb() {
-  vec4 res = vec4(2.71828174591064453125f);
-  return res;
-}
 void main() {
-  prevent_dce = exp_0f70eb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_0f70eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 exp_0f70eb() {
-  vec4 res = vec4(2.71828174591064453125f);
-  return res;
-}
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_0f70eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.glsl
index f31f360..4233b58 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp_13806d() {
   f16vec3 res = f16vec3(2.716796875hf);
   return res;
 }
 void main() {
-  prevent_dce = exp_13806d();
+  v.tint_symbol = exp_13806d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_13806d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_13806d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp_13806d() {
   f16vec3 res = f16vec3(2.716796875hf);
   return res;
 }
-void main() {
-  prevent_dce = exp_13806d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_13806d();
+  v.tint_symbol = exp_13806d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_13806d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 exp_13806d() {
   f16vec3 res = f16vec3(2.716796875hf);
   return res;
 }
-void main() {
-  prevent_dce = exp_13806d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_13806d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_13806d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.glsl
index 6a07e56..20e7562 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 exp_1951e7() {
+  vec2 res = vec2(2.71828174591064453125f);
+  return res;
+}
+void main() {
+  v.tint_symbol = exp_1951e7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 exp_1951e7() {
+  vec2 res = vec2(2.71828174591064453125f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp_1951e7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 exp_1951e7() {
   vec2 res = vec2(2.71828174591064453125f);
   return res;
 }
-void main() {
-  prevent_dce = exp_1951e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_1951e7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_1951e7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 exp_1951e7() {
-  vec2 res = vec2(2.71828174591064453125f);
-  return res;
-}
 void main() {
-  prevent_dce = exp_1951e7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_1951e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_1951e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 exp_1951e7() {
-  vec2 res = vec2(2.71828174591064453125f);
-  return res;
-}
-void main() {
-  prevent_dce = exp_1951e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_1951e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_1951e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.glsl
index e9f9b30..94a82ca 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp_2e08e2() {
   f16vec2 res = f16vec2(2.716796875hf);
   return res;
 }
 void main() {
-  prevent_dce = exp_2e08e2();
+  v.tint_symbol = exp_2e08e2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_2e08e2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_2e08e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp_2e08e2() {
   f16vec2 res = f16vec2(2.716796875hf);
   return res;
 }
-void main() {
-  prevent_dce = exp_2e08e2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_2e08e2();
+  v.tint_symbol = exp_2e08e2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_2e08e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 exp_2e08e2() {
   f16vec2 res = f16vec2(2.716796875hf);
   return res;
 }
-void main() {
-  prevent_dce = exp_2e08e2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_2e08e2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_2e08e2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.glsl
index 48a4a80..899a782 100644
--- a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_49e4c5() {
+  float res = 2.71828174591064453125f;
+}
+void main() {
+  exp_49e4c5();
+}
+#version 310 es
+
+void exp_49e4c5() {
+  float res = 2.71828174591064453125f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_49e4c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_49e4c5() {
   float res = 2.71828174591064453125f;
 }
-void main() {
-  exp_49e4c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_49e4c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_49e4c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_49e4c5() {
-  float res = 2.71828174591064453125f;
-}
 void main() {
-  exp_49e4c5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_49e4c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_49e4c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_49e4c5() {
-  float res = 2.71828174591064453125f;
-}
-void main() {
-  exp_49e4c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_49e4c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_49e4c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.glsl
index 5607fc7..98c0412 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp_611a87() {
   f16vec4 res = f16vec4(2.716796875hf);
   return res;
 }
 void main() {
-  prevent_dce = exp_611a87();
+  v.tint_symbol = exp_611a87();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_611a87();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_611a87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp_611a87() {
   f16vec4 res = f16vec4(2.716796875hf);
   return res;
 }
-void main() {
-  prevent_dce = exp_611a87();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_611a87();
+  v.tint_symbol = exp_611a87();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_611a87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 exp_611a87() {
   f16vec4 res = f16vec4(2.716796875hf);
   return res;
 }
-void main() {
-  prevent_dce = exp_611a87();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_611a87();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_611a87();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.glsl
index 3ae81c8..1e3ec9f 100644
--- a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_699629() {
+  vec2 res = vec2(2.71828174591064453125f);
+}
+void main() {
+  exp_699629();
+}
+#version 310 es
+
+void exp_699629() {
+  vec2 res = vec2(2.71828174591064453125f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_699629();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_699629() {
   vec2 res = vec2(2.71828174591064453125f);
 }
-void main() {
-  exp_699629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_699629();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_699629();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_699629() {
-  vec2 res = vec2(2.71828174591064453125f);
-}
 void main() {
-  exp_699629();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_699629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_699629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_699629() {
-  vec2 res = vec2(2.71828174591064453125f);
-}
-void main() {
-  exp_699629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_699629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_699629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.glsl
index 9e89fbb..20a6396 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float exp_771fd2() {
+  float res = 2.71828174591064453125f;
+  return res;
+}
+void main() {
+  v.tint_symbol = exp_771fd2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float exp_771fd2() {
+  float res = 2.71828174591064453125f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp_771fd2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float exp_771fd2() {
   float res = 2.71828174591064453125f;
   return res;
 }
-void main() {
-  prevent_dce = exp_771fd2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_771fd2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_771fd2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float exp_771fd2() {
-  float res = 2.71828174591064453125f;
-  return res;
-}
 void main() {
-  prevent_dce = exp_771fd2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_771fd2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_771fd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float exp_771fd2() {
-  float res = 2.71828174591064453125f;
-  return res;
-}
-void main() {
-  prevent_dce = exp_771fd2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_771fd2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_771fd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.glsl
index 6f9e1c9..907fa03 100644
--- a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_bda5bb() {
+  vec3 res = vec3(2.71828174591064453125f);
+}
+void main() {
+  exp_bda5bb();
+}
+#version 310 es
+
+void exp_bda5bb() {
+  vec3 res = vec3(2.71828174591064453125f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_bda5bb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_bda5bb() {
   vec3 res = vec3(2.71828174591064453125f);
 }
-void main() {
-  exp_bda5bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_bda5bb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_bda5bb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_bda5bb() {
-  vec3 res = vec3(2.71828174591064453125f);
-}
 void main() {
-  exp_bda5bb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_bda5bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_bda5bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_bda5bb() {
-  vec3 res = vec3(2.71828174591064453125f);
-}
-void main() {
-  exp_bda5bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_bda5bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_bda5bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.glsl
index 1180588..f090b18 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp_c18fe9() {
   float16_t res = 2.716796875hf;
   return res;
 }
 void main() {
-  prevent_dce = exp_c18fe9();
+  v.tint_symbol = exp_c18fe9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_c18fe9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_c18fe9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp_c18fe9() {
   float16_t res = 2.716796875hf;
   return res;
 }
-void main() {
-  prevent_dce = exp_c18fe9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_c18fe9();
+  v.tint_symbol = exp_c18fe9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_c18fe9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t exp_c18fe9() {
   float16_t res = 2.716796875hf;
   return res;
 }
-void main() {
-  prevent_dce = exp_c18fe9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_c18fe9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_c18fe9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.glsl
index 8609796..7f28655 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 exp_d98450() {
+  vec3 res = vec3(2.71828174591064453125f);
+  return res;
+}
+void main() {
+  v.tint_symbol = exp_d98450();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 exp_d98450() {
+  vec3 res = vec3(2.71828174591064453125f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp_d98450();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 exp_d98450() {
   vec3 res = vec3(2.71828174591064453125f);
   return res;
 }
-void main() {
-  prevent_dce = exp_d98450();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_d98450();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_d98450();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 exp_d98450() {
-  vec3 res = vec3(2.71828174591064453125f);
-  return res;
-}
 void main() {
-  prevent_dce = exp_d98450();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_d98450();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_d98450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 exp_d98450() {
-  vec3 res = vec3(2.71828174591064453125f);
-  return res;
-}
-void main() {
-  prevent_dce = exp_d98450();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_d98450();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_d98450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.glsl
index 3db102c..73d7d5e 100644
--- a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_dad791() {
+  vec4 res = vec4(2.71828174591064453125f);
+}
+void main() {
+  exp_dad791();
+}
+#version 310 es
+
+void exp_dad791() {
+  vec4 res = vec4(2.71828174591064453125f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_dad791();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_dad791() {
   vec4 res = vec4(2.71828174591064453125f);
 }
-void main() {
-  exp_dad791();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_dad791();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_dad791();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_dad791() {
-  vec4 res = vec4(2.71828174591064453125f);
-}
 void main() {
-  exp_dad791();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_dad791();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_dad791();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_dad791() {
-  vec4 res = vec4(2.71828174591064453125f);
-}
-void main() {
-  exp_dad791();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_dad791();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_dad791();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.glsl
index 4f67a2c..7acbf7e 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp2_151a4c() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = exp2_151a4c();
+  v.tint_symbol = exp2_151a4c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_151a4c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_151a4c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp2_151a4c() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = exp2_151a4c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_151a4c();
+  v.tint_symbol = exp2_151a4c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_151a4c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 exp2_151a4c() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = exp2_151a4c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_151a4c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_151a4c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.glsl
index 6d43169..9657de4 100644
--- a/test/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/18aa76.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_18aa76() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  exp2_18aa76();
+}
+#version 310 es
+
+void exp2_18aa76() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_18aa76();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_18aa76() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  exp2_18aa76();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_18aa76();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_18aa76();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_18aa76() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  exp2_18aa76();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_18aa76();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_18aa76();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_18aa76() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  exp2_18aa76();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_18aa76();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_18aa76();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.glsl
index ff60960..5763736 100644
--- a/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/1f8680.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 exp2_1f8680() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = exp2_1f8680();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 exp2_1f8680() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp2_1f8680();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 exp2_1f8680() {
   vec3 res = vec3(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_1f8680();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 exp2_1f8680() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_1f8680();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_1f8680();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 exp2_1f8680() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_1f8680();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.glsl
index 0339ef4..afa55ca 100644
--- a/test/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/303753.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_303753() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  exp2_303753();
+}
+#version 310 es
+
+void exp2_303753() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_303753();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_303753() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  exp2_303753();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_303753();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_303753();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_303753() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  exp2_303753();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_303753();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_303753();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_303753() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  exp2_303753();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_303753();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_303753();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.glsl
index 8ff92f3..10bb7bc 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp2_751377() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = exp2_751377();
+  v.tint_symbol = exp2_751377();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_751377();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_751377();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp2_751377() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = exp2_751377();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_751377();
+  v.tint_symbol = exp2_751377();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_751377();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 exp2_751377() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = exp2_751377();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_751377();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_751377();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.glsl
index aefd542..dceb6d9 100644
--- a/test/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/8bd72d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_8bd72d() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  exp2_8bd72d();
+}
+#version 310 es
+
+void exp2_8bd72d() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_8bd72d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_8bd72d() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  exp2_8bd72d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_8bd72d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_8bd72d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_8bd72d() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  exp2_8bd72d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_8bd72d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_8bd72d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_8bd72d() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  exp2_8bd72d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_8bd72d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_8bd72d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.glsl
index a36232d..114e50c 100644
--- a/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/a9d0a7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 exp2_a9d0a7() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = exp2_a9d0a7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 exp2_a9d0a7() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp2_a9d0a7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 exp2_a9d0a7() {
   vec4 res = vec4(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_a9d0a7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 exp2_a9d0a7() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_a9d0a7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_a9d0a7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 exp2_a9d0a7() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_a9d0a7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.glsl
index 55bf132..cfacd69 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp2_b408e4() {
   float16_t res = 2.0hf;
   return res;
 }
 void main() {
-  prevent_dce = exp2_b408e4();
+  v.tint_symbol = exp2_b408e4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_b408e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_b408e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp2_b408e4() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = exp2_b408e4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_b408e4();
+  v.tint_symbol = exp2_b408e4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_b408e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t exp2_b408e4() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = exp2_b408e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_b408e4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_b408e4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.glsl
index 60e4b43..5bbff5e 100644
--- a/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/d6777c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 exp2_d6777c() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = exp2_d6777c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 exp2_d6777c() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp2_d6777c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 exp2_d6777c() {
   vec2 res = vec2(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_d6777c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 exp2_d6777c() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_d6777c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_d6777c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 exp2_d6777c() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_d6777c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.glsl
index d22ad53..a18d374 100644
--- a/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/dea523.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float exp2_dea523() {
+  float res = 2.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = exp2_dea523();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float exp2_dea523() {
+  float res = 2.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = exp2_dea523();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float exp2_dea523() {
   float res = 2.0f;
   return res;
 }
-void main() {
-  prevent_dce = exp2_dea523();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_dea523();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_dea523();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float exp2_dea523() {
-  float res = 2.0f;
-  return res;
-}
 void main() {
-  prevent_dce = exp2_dea523();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_dea523();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_dea523();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float exp2_dea523() {
-  float res = 2.0f;
-  return res;
-}
-void main() {
-  prevent_dce = exp2_dea523();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_dea523();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_dea523();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.glsl
index 8970162..ca387e9 100644
--- a/test/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/f4f0f1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_f4f0f1() {
+  float res = 2.0f;
+}
+void main() {
+  exp2_f4f0f1();
+}
+#version 310 es
+
+void exp2_f4f0f1() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_f4f0f1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_f4f0f1() {
   float res = 2.0f;
 }
-void main() {
-  exp2_f4f0f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_f4f0f1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_f4f0f1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_f4f0f1() {
-  float res = 2.0f;
-}
 void main() {
-  exp2_f4f0f1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_f4f0f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_f4f0f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_f4f0f1() {
-  float res = 2.0f;
-}
-void main() {
-  exp2_f4f0f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_f4f0f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_f4f0f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.glsl
index dad2f6b..3cc38f4 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp2_ffa827() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = exp2_ffa827();
+  v.tint_symbol = exp2_ffa827();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_ffa827();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_ffa827();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp2_ffa827() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = exp2_ffa827();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_ffa827();
+  v.tint_symbol = exp2_ffa827();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_ffa827();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 exp2_ffa827() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = exp2_ffa827();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_ffa827();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_ffa827();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.glsl
index 9907be1..35cfc25 100644
--- a/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/12b197.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 extractBits_12b197() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_12b197();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 extractBits_12b197() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_12b197();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 extractBits_12b197() {
   uvec3 res = uvec3(0u);
   return res;
 }
-void main() {
-  prevent_dce = extractBits_12b197();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_12b197();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_12b197();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 extractBits_12b197() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_12b197();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_12b197();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_12b197();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 extractBits_12b197() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_12b197();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_12b197();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_12b197();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.glsl
index d5f6175..caeb964 100644
--- a/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/249874.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int extractBits_249874() {
+  int res = 0;
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_249874();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int extractBits_249874() {
+  int res = 0;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_249874();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int extractBits_249874() {
   int res = 0;
   return res;
 }
-void main() {
-  prevent_dce = extractBits_249874();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_249874();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_249874();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int extractBits_249874() {
-  int res = 0;
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_249874();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_249874();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_249874();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int extractBits_249874() {
-  int res = 0;
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_249874();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_249874();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_249874();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.glsl
index b80d999..f702919 100644
--- a/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/631377.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 extractBits_631377() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_631377();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 extractBits_631377() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_631377();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 extractBits_631377() {
   uvec4 res = uvec4(0u);
   return res;
 }
-void main() {
-  prevent_dce = extractBits_631377();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_631377();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_631377();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 extractBits_631377() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_631377();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_631377();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_631377();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 extractBits_631377() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_631377();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_631377();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_631377();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.glsl
index 58cf6ff..610e5ee 100644
--- a/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/a99a8d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 extractBits_a99a8d() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_a99a8d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 extractBits_a99a8d() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_a99a8d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 extractBits_a99a8d() {
   ivec2 res = ivec2(0);
   return res;
 }
-void main() {
-  prevent_dce = extractBits_a99a8d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_a99a8d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_a99a8d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 extractBits_a99a8d() {
-  ivec2 res = ivec2(0);
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_a99a8d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_a99a8d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_a99a8d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 extractBits_a99a8d() {
-  ivec2 res = ivec2(0);
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_a99a8d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_a99a8d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_a99a8d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.glsl
index 0c37a13..22c3b4a 100644
--- a/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/ce81f8.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint extractBits_ce81f8() {
+  uint res = 0u;
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_ce81f8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint extractBits_ce81f8() {
+  uint res = 0u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_ce81f8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint extractBits_ce81f8() {
   uint res = 0u;
   return res;
 }
-void main() {
-  prevent_dce = extractBits_ce81f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_ce81f8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_ce81f8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint extractBits_ce81f8() {
-  uint res = 0u;
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_ce81f8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_ce81f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_ce81f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint extractBits_ce81f8() {
-  uint res = 0u;
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_ce81f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_ce81f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_ce81f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.glsl
index bc15a01..b5d9132 100644
--- a/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/e04f5d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 extractBits_e04f5d() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_e04f5d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 extractBits_e04f5d() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_e04f5d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 extractBits_e04f5d() {
   ivec3 res = ivec3(0);
   return res;
 }
-void main() {
-  prevent_dce = extractBits_e04f5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_e04f5d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_e04f5d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 extractBits_e04f5d() {
-  ivec3 res = ivec3(0);
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_e04f5d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_e04f5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_e04f5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 extractBits_e04f5d() {
-  ivec3 res = ivec3(0);
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_e04f5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_e04f5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_e04f5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.glsl
index af1342f..0b9dfda 100644
--- a/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/f28f69.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 extractBits_f28f69() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_f28f69();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 extractBits_f28f69() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_f28f69();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 extractBits_f28f69() {
   uvec2 res = uvec2(0u);
   return res;
 }
-void main() {
-  prevent_dce = extractBits_f28f69();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_f28f69();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_f28f69();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 extractBits_f28f69() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_f28f69();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_f28f69();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_f28f69();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 extractBits_f28f69() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_f28f69();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_f28f69();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_f28f69();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.glsl
index 26e108f..23eecf0 100644
--- a/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/extractBits/fb850f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 extractBits_fb850f() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = extractBits_fb850f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 extractBits_fb850f() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = extractBits_fb850f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 extractBits_fb850f() {
   ivec4 res = ivec4(0);
   return res;
 }
-void main() {
-  prevent_dce = extractBits_fb850f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_fb850f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = extractBits_fb850f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 extractBits_fb850f() {
-  ivec4 res = ivec4(0);
-  return res;
-}
 void main() {
-  prevent_dce = extractBits_fb850f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_fb850f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_fb850f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 extractBits_fb850f() {
-  ivec4 res = ivec4(0);
-  return res;
-}
-void main() {
-  prevent_dce = extractBits_fb850f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = extractBits_fb850f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = extractBits_fb850f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.glsl
index f78da9d..6a87694 100644
--- a/test/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/2c4d14.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void faceForward_2c4d14() {
+  vec4 res = vec4(-1.0f);
+}
+void main() {
+  faceForward_2c4d14();
+}
+#version 310 es
+
+void faceForward_2c4d14() {
+  vec4 res = vec4(-1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  faceForward_2c4d14();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void faceForward_2c4d14() {
   vec4 res = vec4(-1.0f);
 }
-void main() {
-  faceForward_2c4d14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_2c4d14();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   faceForward_2c4d14();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_2c4d14() {
-  vec4 res = vec4(-1.0f);
-}
 void main() {
-  faceForward_2c4d14();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_2c4d14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_2c4d14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_2c4d14() {
-  vec4 res = vec4(-1.0f);
-}
-void main() {
-  faceForward_2c4d14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_2c4d14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_2c4d14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.glsl
index aa7821c..f37f932 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 faceForward_524986() {
   f16vec3 res = f16vec3(-1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = faceForward_524986();
+  v.tint_symbol = faceForward_524986();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_524986();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_524986();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 faceForward_524986() {
   f16vec3 res = f16vec3(-1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_524986();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_524986();
+  v.tint_symbol = faceForward_524986();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_524986();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 faceForward_524986() {
   f16vec3 res = f16vec3(-1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_524986();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_524986();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_524986();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.glsl
index 507475b..88d3f96 100644
--- a/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/5afbd5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 faceForward_5afbd5() {
+  vec3 res = vec3(-1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = faceForward_5afbd5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 faceForward_5afbd5() {
+  vec3 res = vec3(-1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = faceForward_5afbd5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 faceForward_5afbd5() {
   vec3 res = vec3(-1.0f);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_5afbd5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 faceForward_5afbd5() {
-  vec3 res = vec3(-1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = faceForward_5afbd5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_5afbd5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 faceForward_5afbd5() {
-  vec3 res = vec3(-1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_5afbd5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.glsl
index d65164b..edfa6f3 100644
--- a/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/b316e5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 faceForward_b316e5() {
+  vec4 res = vec4(-1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = faceForward_b316e5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 faceForward_b316e5() {
+  vec4 res = vec4(-1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = faceForward_b316e5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 faceForward_b316e5() {
   vec4 res = vec4(-1.0f);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_b316e5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 faceForward_b316e5() {
-  vec4 res = vec4(-1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = faceForward_b316e5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_b316e5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 faceForward_b316e5() {
-  vec4 res = vec4(-1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_b316e5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.glsl
index 13f6f98..45192cb 100644
--- a/test/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/b42ef3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void faceForward_b42ef3() {
+  vec2 res = vec2(-1.0f);
+}
+void main() {
+  faceForward_b42ef3();
+}
+#version 310 es
+
+void faceForward_b42ef3() {
+  vec2 res = vec2(-1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  faceForward_b42ef3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void faceForward_b42ef3() {
   vec2 res = vec2(-1.0f);
 }
-void main() {
-  faceForward_b42ef3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_b42ef3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   faceForward_b42ef3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_b42ef3() {
-  vec2 res = vec2(-1.0f);
-}
 void main() {
-  faceForward_b42ef3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_b42ef3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_b42ef3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_b42ef3() {
-  vec2 res = vec2(-1.0f);
-}
-void main() {
-  faceForward_b42ef3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_b42ef3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_b42ef3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.glsl
index 2be88c2..d5a6309 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 faceForward_cc63dc() {
   f16vec4 res = f16vec4(-1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = faceForward_cc63dc();
+  v.tint_symbol = faceForward_cc63dc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_cc63dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 faceForward_cc63dc() {
   f16vec4 res = f16vec4(-1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_cc63dc();
+  v.tint_symbol = faceForward_cc63dc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_cc63dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 faceForward_cc63dc() {
   f16vec4 res = f16vec4(-1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_cc63dc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.glsl
index 13531bd..e7ef0b5 100644
--- a/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/e6908b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 faceForward_e6908b() {
+  vec2 res = vec2(-1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = faceForward_e6908b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 faceForward_e6908b() {
+  vec2 res = vec2(-1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = faceForward_e6908b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 faceForward_e6908b() {
   vec2 res = vec2(-1.0f);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_e6908b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 faceForward_e6908b() {
-  vec2 res = vec2(-1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = faceForward_e6908b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_e6908b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 faceForward_e6908b() {
-  vec2 res = vec2(-1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_e6908b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.glsl
index 4af4233..63c6a25 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 faceForward_fb0f2e() {
   f16vec2 res = f16vec2(-1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = faceForward_fb0f2e();
+  v.tint_symbol = faceForward_fb0f2e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_fb0f2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 faceForward_fb0f2e() {
   f16vec2 res = f16vec2(-1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_fb0f2e();
+  v.tint_symbol = faceForward_fb0f2e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_fb0f2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 faceForward_fb0f2e() {
   f16vec2 res = f16vec2(-1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_fb0f2e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.glsl
index 9fa0a75..b1aeb5d 100644
--- a/test/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/fe522b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void faceForward_fe522b() {
+  vec3 res = vec3(-1.0f);
+}
+void main() {
+  faceForward_fe522b();
+}
+#version 310 es
+
+void faceForward_fe522b() {
+  vec3 res = vec3(-1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  faceForward_fe522b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void faceForward_fe522b() {
   vec3 res = vec3(-1.0f);
 }
-void main() {
-  faceForward_fe522b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_fe522b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   faceForward_fe522b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_fe522b() {
-  vec3 res = vec3(-1.0f);
-}
 void main() {
-  faceForward_fe522b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_fe522b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_fe522b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_fe522b() {
-  vec3 res = vec3(-1.0f);
-}
-void main() {
-  faceForward_fe522b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_fe522b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_fe522b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.glsl
index 677c324..d6b3893 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/000ff3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 firstLeadingBit_000ff3() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_000ff3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 firstLeadingBit_000ff3() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_000ff3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 firstLeadingBit_000ff3() {
   uvec4 res = uvec4(0u);
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_000ff3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_000ff3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_000ff3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 firstLeadingBit_000ff3() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_000ff3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_000ff3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_000ff3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 firstLeadingBit_000ff3() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_000ff3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_000ff3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_000ff3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.glsl
index 20ad773..c29e650 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/35053e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 firstLeadingBit_35053e() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_35053e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 firstLeadingBit_35053e() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_35053e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 firstLeadingBit_35053e() {
   ivec3 res = ivec3(0);
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_35053e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_35053e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_35053e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 firstLeadingBit_35053e() {
-  ivec3 res = ivec3(0);
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_35053e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_35053e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_35053e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 firstLeadingBit_35053e() {
-  ivec3 res = ivec3(0);
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_35053e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_35053e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_35053e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.glsl
index d923e3d..05d2cb7 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/3fd7d0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 firstLeadingBit_3fd7d0() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_3fd7d0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 firstLeadingBit_3fd7d0() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_3fd7d0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 firstLeadingBit_3fd7d0() {
   uvec3 res = uvec3(0u);
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_3fd7d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_3fd7d0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_3fd7d0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 firstLeadingBit_3fd7d0() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_3fd7d0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_3fd7d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_3fd7d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 firstLeadingBit_3fd7d0() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_3fd7d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_3fd7d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_3fd7d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.glsl
index 798883b..74f7033 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/57a1a3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int firstLeadingBit_57a1a3() {
+  int res = 0;
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_57a1a3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int firstLeadingBit_57a1a3() {
+  int res = 0;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_57a1a3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int firstLeadingBit_57a1a3() {
   int res = 0;
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_57a1a3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_57a1a3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_57a1a3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int firstLeadingBit_57a1a3() {
-  int res = 0;
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_57a1a3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_57a1a3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_57a1a3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int firstLeadingBit_57a1a3() {
-  int res = 0;
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_57a1a3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_57a1a3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_57a1a3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.glsl
index 0085c40..2eca1cc 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/6fe804.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 firstLeadingBit_6fe804() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_6fe804();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 firstLeadingBit_6fe804() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_6fe804();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 firstLeadingBit_6fe804() {
   uvec2 res = uvec2(0u);
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_6fe804();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_6fe804();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_6fe804();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 firstLeadingBit_6fe804() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_6fe804();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_6fe804();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_6fe804();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 firstLeadingBit_6fe804() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_6fe804();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_6fe804();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_6fe804();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.glsl
index d6488bb..524215e 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/a622c2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 firstLeadingBit_a622c2() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_a622c2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 firstLeadingBit_a622c2() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_a622c2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 firstLeadingBit_a622c2() {
   ivec2 res = ivec2(0);
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_a622c2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_a622c2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_a622c2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 firstLeadingBit_a622c2() {
-  ivec2 res = ivec2(0);
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_a622c2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_a622c2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_a622c2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 firstLeadingBit_a622c2() {
-  ivec2 res = ivec2(0);
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_a622c2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_a622c2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_a622c2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.glsl
index 9f66477..92ef757 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/c1f940.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 firstLeadingBit_c1f940() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_c1f940();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 firstLeadingBit_c1f940() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_c1f940();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 firstLeadingBit_c1f940() {
   ivec4 res = ivec4(0);
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_c1f940();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_c1f940();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_c1f940();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 firstLeadingBit_c1f940() {
-  ivec4 res = ivec4(0);
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_c1f940();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_c1f940();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_c1f940();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 firstLeadingBit_c1f940() {
-  ivec4 res = ivec4(0);
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_c1f940();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_c1f940();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_c1f940();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.glsl
index 7fb1336..0696526 100644
--- a/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstLeadingBit/f0779d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint firstLeadingBit_f0779d() {
+  uint res = 0u;
+  return res;
+}
+void main() {
+  v.tint_symbol = firstLeadingBit_f0779d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint firstLeadingBit_f0779d() {
+  uint res = 0u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstLeadingBit_f0779d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint firstLeadingBit_f0779d() {
   uint res = 0u;
   return res;
 }
-void main() {
-  prevent_dce = firstLeadingBit_f0779d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_f0779d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstLeadingBit_f0779d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint firstLeadingBit_f0779d() {
-  uint res = 0u;
-  return res;
-}
 void main() {
-  prevent_dce = firstLeadingBit_f0779d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_f0779d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_f0779d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint firstLeadingBit_f0779d() {
-  uint res = 0u;
-  return res;
-}
-void main() {
-  prevent_dce = firstLeadingBit_f0779d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstLeadingBit_f0779d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstLeadingBit_f0779d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.glsl
index 01b1b36..1cde18f 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/110f2c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 firstTrailingBit_110f2c() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_110f2c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 firstTrailingBit_110f2c() {
+  uvec4 res = uvec4(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_110f2c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 firstTrailingBit_110f2c() {
   uvec4 res = uvec4(0u);
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_110f2c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_110f2c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_110f2c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 firstTrailingBit_110f2c() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_110f2c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_110f2c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_110f2c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 firstTrailingBit_110f2c() {
-  uvec4 res = uvec4(0u);
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_110f2c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_110f2c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_110f2c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.glsl
index 8737ed8..9ee09ce 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/3a2acc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int firstTrailingBit_3a2acc() {
+  int res = 0;
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_3a2acc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int firstTrailingBit_3a2acc() {
+  int res = 0;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_3a2acc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int firstTrailingBit_3a2acc() {
   int res = 0;
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_3a2acc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_3a2acc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_3a2acc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int firstTrailingBit_3a2acc() {
-  int res = 0;
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_3a2acc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_3a2acc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_3a2acc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int firstTrailingBit_3a2acc() {
-  int res = 0;
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_3a2acc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_3a2acc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_3a2acc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.glsl
index 189bd70..f1d399c 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/45eb10.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 firstTrailingBit_45eb10() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_45eb10();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 firstTrailingBit_45eb10() {
+  uvec2 res = uvec2(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_45eb10();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 firstTrailingBit_45eb10() {
   uvec2 res = uvec2(0u);
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_45eb10();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_45eb10();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_45eb10();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 firstTrailingBit_45eb10() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_45eb10();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_45eb10();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_45eb10();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 firstTrailingBit_45eb10() {
-  uvec2 res = uvec2(0u);
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_45eb10();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_45eb10();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_45eb10();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.glsl
index 659f19a..5706092 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/47d475.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint firstTrailingBit_47d475() {
+  uint res = 0u;
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_47d475();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint firstTrailingBit_47d475() {
+  uint res = 0u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_47d475();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint firstTrailingBit_47d475() {
   uint res = 0u;
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_47d475();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_47d475();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_47d475();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint firstTrailingBit_47d475() {
-  uint res = 0u;
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_47d475();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_47d475();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_47d475();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint firstTrailingBit_47d475() {
-  uint res = 0u;
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_47d475();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_47d475();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_47d475();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.glsl
index 3170f6d..9266d8e 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/50c072.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 firstTrailingBit_50c072() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_50c072();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 firstTrailingBit_50c072() {
+  ivec2 res = ivec2(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_50c072();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 firstTrailingBit_50c072() {
   ivec2 res = ivec2(0);
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_50c072();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_50c072();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_50c072();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 firstTrailingBit_50c072() {
-  ivec2 res = ivec2(0);
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_50c072();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_50c072();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_50c072();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 firstTrailingBit_50c072() {
-  ivec2 res = ivec2(0);
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_50c072();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_50c072();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_50c072();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.glsl
index 430505a..5e9934d 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/7496d6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 firstTrailingBit_7496d6() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_7496d6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 firstTrailingBit_7496d6() {
+  ivec3 res = ivec3(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_7496d6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 firstTrailingBit_7496d6() {
   ivec3 res = ivec3(0);
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_7496d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_7496d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_7496d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 firstTrailingBit_7496d6() {
-  ivec3 res = ivec3(0);
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_7496d6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_7496d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_7496d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 firstTrailingBit_7496d6() {
-  ivec3 res = ivec3(0);
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_7496d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_7496d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_7496d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.glsl
index c2cf278..78b8eb5 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/86551b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 firstTrailingBit_86551b() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_86551b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 firstTrailingBit_86551b() {
+  ivec4 res = ivec4(0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_86551b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 firstTrailingBit_86551b() {
   ivec4 res = ivec4(0);
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_86551b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_86551b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_86551b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 firstTrailingBit_86551b() {
-  ivec4 res = ivec4(0);
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_86551b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_86551b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_86551b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 firstTrailingBit_86551b() {
-  ivec4 res = ivec4(0);
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_86551b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_86551b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_86551b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.glsl
index 396e9e8..a58a498 100644
--- a/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/firstTrailingBit/cb51ce.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 firstTrailingBit_cb51ce() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = firstTrailingBit_cb51ce();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 firstTrailingBit_cb51ce() {
+  uvec3 res = uvec3(0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = firstTrailingBit_cb51ce();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 firstTrailingBit_cb51ce() {
   uvec3 res = uvec3(0u);
   return res;
 }
-void main() {
-  prevent_dce = firstTrailingBit_cb51ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_cb51ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = firstTrailingBit_cb51ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 firstTrailingBit_cb51ce() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
 void main() {
-  prevent_dce = firstTrailingBit_cb51ce();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_cb51ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_cb51ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 firstTrailingBit_cb51ce() {
-  uvec3 res = uvec3(0u);
-  return res;
-}
-void main() {
-  prevent_dce = firstTrailingBit_cb51ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = firstTrailingBit_cb51ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = firstTrailingBit_cb51ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.glsl
index 34fac5a..6d8ad58 100644
--- a/test/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/218952.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_218952() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  floor_218952();
+}
+#version 310 es
+
+void floor_218952() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_218952();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_218952() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  floor_218952();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_218952();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_218952();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_218952() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  floor_218952();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_218952();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_218952();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_218952() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  floor_218952();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_218952();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_218952();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.glsl
index dc7d194..b4ea450 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 floor_3802c0() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = floor_3802c0();
+  v.tint_symbol = floor_3802c0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3802c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3802c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 floor_3802c0() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = floor_3802c0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_3802c0();
+  v.tint_symbol = floor_3802c0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3802c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 floor_3802c0() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = floor_3802c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3802c0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_3802c0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.glsl
index e4048ca..0e83592 100644
--- a/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/3bccc4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 floor_3bccc4() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = floor_3bccc4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 floor_3bccc4() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = floor_3bccc4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 floor_3bccc4() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_3bccc4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 floor_3bccc4() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = floor_3bccc4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3bccc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 floor_3bccc4() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3bccc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.glsl
index 79c2507..e45ddec 100644
--- a/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/5fc9ac.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 floor_5fc9ac() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = floor_5fc9ac();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 floor_5fc9ac() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = floor_5fc9ac();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 floor_5fc9ac() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_5fc9ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 floor_5fc9ac() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = floor_5fc9ac();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_5fc9ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 floor_5fc9ac() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_5fc9ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.glsl
index 822ea55..ae7ed25 100644
--- a/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/60d7ea.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 floor_60d7ea() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = floor_60d7ea();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 floor_60d7ea() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = floor_60d7ea();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 floor_60d7ea() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_60d7ea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 floor_60d7ea() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = floor_60d7ea();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_60d7ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 floor_60d7ea() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_60d7ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.glsl
index 50d7be5..301e73d 100644
--- a/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/66f154.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float floor_66f154() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = floor_66f154();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float floor_66f154() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = floor_66f154();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float floor_66f154() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = floor_66f154();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_66f154();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_66f154();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float floor_66f154() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = floor_66f154();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_66f154();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_66f154();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float floor_66f154() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = floor_66f154();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_66f154();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_66f154();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.glsl
index 0d41e43..4bbfe09 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 floor_84658c() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = floor_84658c();
+  v.tint_symbol = floor_84658c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_84658c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_84658c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 floor_84658c() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = floor_84658c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_84658c();
+  v.tint_symbol = floor_84658c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_84658c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 floor_84658c() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = floor_84658c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_84658c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_84658c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.glsl
index 4a575c5..d8f482e 100644
--- a/test/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/953774.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_953774() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  floor_953774();
+}
+#version 310 es
+
+void floor_953774() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_953774();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_953774() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  floor_953774();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_953774();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_953774();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_953774() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  floor_953774();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_953774();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_953774();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_953774() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  floor_953774();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_953774();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_953774();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.glsl
index 3e58b0d..0043121 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 floor_a2d31b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = floor_a2d31b();
+  v.tint_symbol = floor_a2d31b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_a2d31b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_a2d31b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 floor_a2d31b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = floor_a2d31b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_a2d31b();
+  v.tint_symbol = floor_a2d31b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_a2d31b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 floor_a2d31b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = floor_a2d31b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_a2d31b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_a2d31b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.glsl
index 00a7313..6147f65 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t floor_b6e09c() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = floor_b6e09c();
+  v.tint_symbol = floor_b6e09c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_b6e09c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_b6e09c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t floor_b6e09c() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = floor_b6e09c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_b6e09c();
+  v.tint_symbol = floor_b6e09c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_b6e09c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t floor_b6e09c() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = floor_b6e09c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_b6e09c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_b6e09c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.glsl
index c408af5..f802c7d 100644
--- a/test/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/dcd5a2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_dcd5a2() {
+  float res = 1.0f;
+}
+void main() {
+  floor_dcd5a2();
+}
+#version 310 es
+
+void floor_dcd5a2() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_dcd5a2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_dcd5a2() {
   float res = 1.0f;
 }
-void main() {
-  floor_dcd5a2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_dcd5a2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_dcd5a2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_dcd5a2() {
-  float res = 1.0f;
-}
 void main() {
-  floor_dcd5a2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_dcd5a2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_dcd5a2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_dcd5a2() {
-  float res = 1.0f;
-}
-void main() {
-  floor_dcd5a2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_dcd5a2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_dcd5a2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.glsl
index cf6416a..dfc52a1 100644
--- a/test/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/floor/e585ef.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_e585ef() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  floor_e585ef();
+}
+#version 310 es
+
+void floor_e585ef() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_e585ef();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_e585ef() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  floor_e585ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_e585ef();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_e585ef();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_e585ef() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  floor_e585ef();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_e585ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_e585ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_e585ef() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  floor_e585ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_e585ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_e585ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.glsl
index e2b4901..791206b 100644
--- a/test/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/143d5d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_143d5d() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  fma_143d5d();
+}
+#version 310 es
+
+void fma_143d5d() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_143d5d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_143d5d() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  fma_143d5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_143d5d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_143d5d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_143d5d() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  fma_143d5d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_143d5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_143d5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_143d5d() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  fma_143d5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_143d5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_143d5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.glsl
index 78f3d2f..dc7623c 100644
--- a/test/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/1f5084.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_1f5084() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  fma_1f5084();
+}
+#version 310 es
+
+void fma_1f5084() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_1f5084();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_1f5084() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  fma_1f5084();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_1f5084();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_1f5084();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_1f5084() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  fma_1f5084();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_1f5084();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_1f5084();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_1f5084() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  fma_1f5084();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_1f5084();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_1f5084();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.glsl
index 9326a16..cf04a9a 100644
--- a/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/26a7a9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 fma_26a7a9() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = fma_26a7a9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 fma_26a7a9() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fma_26a7a9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 fma_26a7a9() {
   vec2 res = vec2(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = fma_26a7a9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_26a7a9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_26a7a9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 fma_26a7a9() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = fma_26a7a9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_26a7a9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_26a7a9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 fma_26a7a9() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = fma_26a7a9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_26a7a9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_26a7a9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.glsl
index 05c795b..51a6c6b 100644
--- a/test/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/466442.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_466442() {
+  float res = 2.0f;
+}
+void main() {
+  fma_466442();
+}
+#version 310 es
+
+void fma_466442() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_466442();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_466442() {
   float res = 2.0f;
 }
-void main() {
-  fma_466442();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_466442();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_466442();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_466442() {
-  float res = 2.0f;
-}
 void main() {
-  fma_466442();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_466442();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_466442();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_466442() {
-  float res = 2.0f;
-}
-void main() {
-  fma_466442();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_466442();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_466442();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.glsl
index 8de235b..bb15f9a 100644
--- a/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/6a3283.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 fma_6a3283() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = fma_6a3283();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 fma_6a3283() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fma_6a3283();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 fma_6a3283() {
   vec4 res = vec4(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = fma_6a3283();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_6a3283();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_6a3283();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 fma_6a3283() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = fma_6a3283();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_6a3283();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_6a3283();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 fma_6a3283() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = fma_6a3283();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_6a3283();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_6a3283();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.glsl
index aff14bac..c38cc6e 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 fma_ab7818() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = fma_ab7818();
+  v.tint_symbol = fma_ab7818();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_ab7818();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_ab7818();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 fma_ab7818() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = fma_ab7818();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fma_ab7818();
+  v.tint_symbol = fma_ab7818();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_ab7818();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 fma_ab7818() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = fma_ab7818();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_ab7818();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_ab7818();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.glsl
index 81d95f4..8617782 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 fma_bf21b6() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = fma_bf21b6();
+  v.tint_symbol = fma_bf21b6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_bf21b6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_bf21b6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 fma_bf21b6() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = fma_bf21b6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fma_bf21b6();
+  v.tint_symbol = fma_bf21b6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_bf21b6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 fma_bf21b6() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = fma_bf21b6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_bf21b6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_bf21b6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.glsl
index a3c5a8e..fa8ff5b 100644
--- a/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/c10ba3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float fma_c10ba3() {
+  float res = 2.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = fma_c10ba3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float fma_c10ba3() {
+  float res = 2.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fma_c10ba3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float fma_c10ba3() {
   float res = 2.0f;
   return res;
 }
-void main() {
-  prevent_dce = fma_c10ba3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_c10ba3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_c10ba3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float fma_c10ba3() {
-  float res = 2.0f;
-  return res;
-}
 void main() {
-  prevent_dce = fma_c10ba3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_c10ba3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_c10ba3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float fma_c10ba3() {
-  float res = 2.0f;
-  return res;
-}
-void main() {
-  prevent_dce = fma_c10ba3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_c10ba3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_c10ba3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.glsl
index d738aa1..2be2962 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t fma_c8abb3() {
   float16_t res = 2.0hf;
   return res;
 }
 void main() {
-  prevent_dce = fma_c8abb3();
+  v.tint_symbol = fma_c8abb3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_c8abb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_c8abb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t fma_c8abb3() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = fma_c8abb3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fma_c8abb3();
+  v.tint_symbol = fma_c8abb3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_c8abb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t fma_c8abb3() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = fma_c8abb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_c8abb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_c8abb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.glsl
index 8e2bc9a..624dea6 100644
--- a/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/e17c5c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 fma_e17c5c() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = fma_e17c5c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 fma_e17c5c() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fma_e17c5c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 fma_e17c5c() {
   vec3 res = vec3(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = fma_e17c5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_e17c5c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_e17c5c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 fma_e17c5c() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = fma_e17c5c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_e17c5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_e17c5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 fma_e17c5c() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = fma_e17c5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_e17c5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_e17c5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.glsl
index cec9381..a4abc0e 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 fma_e7abdc() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = fma_e7abdc();
+  v.tint_symbol = fma_e7abdc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_e7abdc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_e7abdc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 fma_e7abdc() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = fma_e7abdc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fma_e7abdc();
+  v.tint_symbol = fma_e7abdc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fma_e7abdc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 fma_e7abdc() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = fma_e7abdc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fma_e7abdc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fma_e7abdc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.glsl
index 855d8e3..26e5131 100644
--- a/test/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fma/eb25d7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_eb25d7() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  fma_eb25d7();
+}
+#version 310 es
+
+void fma_eb25d7() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_eb25d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_eb25d7() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  fma_eb25d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_eb25d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_eb25d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_eb25d7() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  fma_eb25d7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_eb25d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_eb25d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_eb25d7() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  fma_eb25d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_eb25d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_eb25d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.glsl
index bbaf622..c085e0f 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 fract_181aa9() {
   f16vec2 res = f16vec2(0.25hf);
   return res;
 }
 void main() {
-  prevent_dce = fract_181aa9();
+  v.tint_symbol = fract_181aa9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_181aa9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_181aa9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 fract_181aa9() {
   f16vec2 res = f16vec2(0.25hf);
   return res;
 }
-void main() {
-  prevent_dce = fract_181aa9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_181aa9();
+  v.tint_symbol = fract_181aa9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_181aa9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 fract_181aa9() {
   f16vec2 res = f16vec2(0.25hf);
   return res;
 }
-void main() {
-  prevent_dce = fract_181aa9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_181aa9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_181aa9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.glsl
index d518cd3..d9378da 100644
--- a/test/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/2eddfe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_2eddfe() {
+  float res = 0.25f;
+}
+void main() {
+  fract_2eddfe();
+}
+#version 310 es
+
+void fract_2eddfe() {
+  float res = 0.25f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_2eddfe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_2eddfe() {
   float res = 0.25f;
 }
-void main() {
-  fract_2eddfe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_2eddfe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_2eddfe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_2eddfe() {
-  float res = 0.25f;
-}
 void main() {
-  fract_2eddfe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_2eddfe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_2eddfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_2eddfe() {
-  float res = 0.25f;
-}
-void main() {
-  fract_2eddfe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_2eddfe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_2eddfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.glsl
index 7724242..afbd376 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 fract_498c77() {
   f16vec4 res = f16vec4(0.25hf);
   return res;
 }
 void main() {
-  prevent_dce = fract_498c77();
+  v.tint_symbol = fract_498c77();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_498c77();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_498c77();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 fract_498c77() {
   f16vec4 res = f16vec4(0.25hf);
   return res;
 }
-void main() {
-  prevent_dce = fract_498c77();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_498c77();
+  v.tint_symbol = fract_498c77();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_498c77();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 fract_498c77() {
   f16vec4 res = f16vec4(0.25hf);
   return res;
 }
-void main() {
-  prevent_dce = fract_498c77();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_498c77();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_498c77();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.glsl
index 83e203c..ba2c36f 100644
--- a/test/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/7e3f2d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_7e3f2d() {
+  vec4 res = vec4(0.25f);
+}
+void main() {
+  fract_7e3f2d();
+}
+#version 310 es
+
+void fract_7e3f2d() {
+  vec4 res = vec4(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_7e3f2d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_7e3f2d() {
   vec4 res = vec4(0.25f);
 }
-void main() {
-  fract_7e3f2d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_7e3f2d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_7e3f2d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_7e3f2d() {
-  vec4 res = vec4(0.25f);
-}
 void main() {
-  fract_7e3f2d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_7e3f2d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_7e3f2d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_7e3f2d() {
-  vec4 res = vec4(0.25f);
-}
-void main() {
-  fract_7e3f2d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_7e3f2d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_7e3f2d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.glsl
index 745923d..2daa4de 100644
--- a/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/8bc1e9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 fract_8bc1e9() {
+  vec4 res = vec4(0.25f);
+  return res;
+}
+void main() {
+  v.tint_symbol = fract_8bc1e9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 fract_8bc1e9() {
+  vec4 res = vec4(0.25f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fract_8bc1e9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 fract_8bc1e9() {
   vec4 res = vec4(0.25f);
   return res;
 }
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_8bc1e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 fract_8bc1e9() {
-  vec4 res = vec4(0.25f);
-  return res;
-}
 void main() {
-  prevent_dce = fract_8bc1e9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_8bc1e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 fract_8bc1e9() {
-  vec4 res = vec4(0.25f);
-  return res;
-}
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_8bc1e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.glsl
index 71d72e9..0116cb6 100644
--- a/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/943cb1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 fract_943cb1() {
+  vec2 res = vec2(0.25f);
+  return res;
+}
+void main() {
+  v.tint_symbol = fract_943cb1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 fract_943cb1() {
+  vec2 res = vec2(0.25f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fract_943cb1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 fract_943cb1() {
   vec2 res = vec2(0.25f);
   return res;
 }
-void main() {
-  prevent_dce = fract_943cb1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_943cb1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_943cb1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 fract_943cb1() {
-  vec2 res = vec2(0.25f);
-  return res;
-}
 void main() {
-  prevent_dce = fract_943cb1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_943cb1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_943cb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 fract_943cb1() {
-  vec2 res = vec2(0.25f);
-  return res;
-}
-void main() {
-  prevent_dce = fract_943cb1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_943cb1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_943cb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.glsl
index c210848..a6d3e86 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 fract_958a1d() {
   f16vec3 res = f16vec3(0.25hf);
   return res;
 }
 void main() {
-  prevent_dce = fract_958a1d();
+  v.tint_symbol = fract_958a1d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_958a1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_958a1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 fract_958a1d() {
   f16vec3 res = f16vec3(0.25hf);
   return res;
 }
-void main() {
-  prevent_dce = fract_958a1d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_958a1d();
+  v.tint_symbol = fract_958a1d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_958a1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 fract_958a1d() {
   f16vec3 res = f16vec3(0.25hf);
   return res;
 }
-void main() {
-  prevent_dce = fract_958a1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_958a1d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_958a1d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.glsl
index cde2415..57cd0f4 100644
--- a/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/a49758.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 fract_a49758() {
+  vec3 res = vec3(0.25f);
+  return res;
+}
+void main() {
+  v.tint_symbol = fract_a49758();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 fract_a49758() {
+  vec3 res = vec3(0.25f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fract_a49758();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 fract_a49758() {
   vec3 res = vec3(0.25f);
   return res;
 }
-void main() {
-  prevent_dce = fract_a49758();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_a49758();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_a49758();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 fract_a49758() {
-  vec3 res = vec3(0.25f);
-  return res;
-}
 void main() {
-  prevent_dce = fract_a49758();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_a49758();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_a49758();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 fract_a49758() {
-  vec3 res = vec3(0.25f);
-  return res;
-}
-void main() {
-  prevent_dce = fract_a49758();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_a49758();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_a49758();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.glsl
index 95d79a9..94b7bf1 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t fract_eb38ce() {
   float16_t res = 0.25hf;
   return res;
 }
 void main() {
-  prevent_dce = fract_eb38ce();
+  v.tint_symbol = fract_eb38ce();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_eb38ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_eb38ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t fract_eb38ce() {
   float16_t res = 0.25hf;
   return res;
 }
-void main() {
-  prevent_dce = fract_eb38ce();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_eb38ce();
+  v.tint_symbol = fract_eb38ce();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_eb38ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t fract_eb38ce() {
   float16_t res = 0.25hf;
   return res;
 }
-void main() {
-  prevent_dce = fract_eb38ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_eb38ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_eb38ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.glsl
index 8638a81..4cb44f2 100644
--- a/test/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/ed00ca.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_ed00ca() {
+  vec2 res = vec2(0.25f);
+}
+void main() {
+  fract_ed00ca();
+}
+#version 310 es
+
+void fract_ed00ca() {
+  vec2 res = vec2(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_ed00ca();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_ed00ca() {
   vec2 res = vec2(0.25f);
 }
-void main() {
-  fract_ed00ca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed00ca();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_ed00ca();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed00ca() {
-  vec2 res = vec2(0.25f);
-}
 void main() {
-  fract_ed00ca();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed00ca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed00ca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed00ca() {
-  vec2 res = vec2(0.25f);
-}
-void main() {
-  fract_ed00ca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed00ca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed00ca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.glsl
index 194fff8..e80afd5 100644
--- a/test/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/ed2f79.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_ed2f79() {
+  vec3 res = vec3(0.25f);
+}
+void main() {
+  fract_ed2f79();
+}
+#version 310 es
+
+void fract_ed2f79() {
+  vec3 res = vec3(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_ed2f79();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_ed2f79() {
   vec3 res = vec3(0.25f);
 }
-void main() {
-  fract_ed2f79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed2f79();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_ed2f79();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed2f79() {
-  vec3 res = vec3(0.25f);
-}
 void main() {
-  fract_ed2f79();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed2f79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed2f79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed2f79() {
-  vec3 res = vec3(0.25f);
-}
-void main() {
-  fract_ed2f79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed2f79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed2f79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.glsl
index 3f9de62..7839e4c 100644
--- a/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/fract/fa5c71.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float fract_fa5c71() {
+  float res = 0.25f;
+  return res;
+}
+void main() {
+  v.tint_symbol = fract_fa5c71();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float fract_fa5c71() {
+  float res = 0.25f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = fract_fa5c71();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float fract_fa5c71() {
   float res = 0.25f;
   return res;
 }
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_fa5c71();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float fract_fa5c71() {
-  float res = 0.25f;
-  return res;
-}
 void main() {
-  prevent_dce = fract_fa5c71();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_fa5c71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float fract_fa5c71() {
-  float res = 0.25f;
-  return res;
-}
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_fa5c71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.glsl
index 8f3d109..96c905c 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void frexp_3dd21e() {
   frexp_result_vec4_f16 res = frexp_result_vec4_f16(f16vec4(0.5hf), ivec4(1));
 }
 void main() {
   frexp_3dd21e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_3dd21e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_3dd21e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   f16vec4 fract;
   ivec4 exp;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void frexp_3dd21e() {
   frexp_result_vec4_f16 res = frexp_result_vec4_f16(f16vec4(0.5hf), ivec4(1));
 }
-void main() {
-  frexp_3dd21e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   frexp_3dd21e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_3dd21e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   f16vec4 fract;
   ivec4 exp;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void frexp_3dd21e() {
   frexp_result_vec4_f16 res = frexp_result_vec4_f16(f16vec4(0.5hf), ivec4(1));
 }
-void main() {
-  frexp_3dd21e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_3dd21e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   frexp_3dd21e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.glsl
index f9ce1cf..6af0cdf 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void frexp_5257dd() {
   frexp_result_f16 res = frexp_result_f16(0.5hf, 1);
 }
 void main() {
   frexp_5257dd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_5257dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_5257dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   float16_t fract;
   int exp;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void frexp_5257dd() {
   frexp_result_f16 res = frexp_result_f16(0.5hf, 1);
 }
-void main() {
-  frexp_5257dd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   frexp_5257dd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_5257dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   float16_t fract;
   int exp;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void frexp_5257dd() {
   frexp_result_f16 res = frexp_result_f16(0.5hf, 1);
 }
-void main() {
-  frexp_5257dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_5257dd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   frexp_5257dd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.glsl
index 31780fe..fe6c0a3 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void frexp_5f47bf() {
   frexp_result_vec2_f16 res = frexp_result_vec2_f16(f16vec2(0.5hf), ivec2(1));
 }
 void main() {
   frexp_5f47bf();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_5f47bf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_5f47bf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   f16vec2 fract;
   ivec2 exp;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void frexp_5f47bf() {
   frexp_result_vec2_f16 res = frexp_result_vec2_f16(f16vec2(0.5hf), ivec2(1));
 }
-void main() {
-  frexp_5f47bf();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   frexp_5f47bf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_5f47bf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   f16vec2 fract;
   ivec2 exp;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void frexp_5f47bf() {
   frexp_result_vec2_f16 res = frexp_result_vec2_f16(f16vec2(0.5hf), ivec2(1));
 }
-void main() {
-  frexp_5f47bf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_5f47bf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   frexp_5f47bf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.glsl
index 93f4501..014f20e 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void frexp_ae4a66() {
   frexp_result_vec3_f16 res = frexp_result_vec3_f16(f16vec3(0.5hf), ivec3(1));
 }
 void main() {
   frexp_ae4a66();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_ae4a66();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_ae4a66();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   f16vec3 fract;
   ivec3 exp;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void frexp_ae4a66() {
   frexp_result_vec3_f16 res = frexp_result_vec3_f16(f16vec3(0.5hf), ivec3(1));
 }
-void main() {
-  frexp_ae4a66();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   frexp_ae4a66();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  frexp_ae4a66();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   f16vec3 fract;
   ivec3 exp;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void frexp_ae4a66() {
   frexp_result_vec3_f16 res = frexp_result_vec3_f16(f16vec3(0.5hf), ivec3(1));
 }
-void main() {
-  frexp_ae4a66();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  frexp_ae4a66();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   frexp_ae4a66();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.glsl
index 3633bb3..1a0e89d 100644
--- a/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/3c7ba5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 insertBits_3c7ba5() {
+  uvec2 res = uvec2(3u);
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_3c7ba5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 insertBits_3c7ba5() {
+  uvec2 res = uvec2(3u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_3c7ba5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 insertBits_3c7ba5() {
   uvec2 res = uvec2(3u);
   return res;
 }
-void main() {
-  prevent_dce = insertBits_3c7ba5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_3c7ba5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_3c7ba5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 insertBits_3c7ba5() {
-  uvec2 res = uvec2(3u);
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_3c7ba5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_3c7ba5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_3c7ba5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 insertBits_3c7ba5() {
-  uvec2 res = uvec2(3u);
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_3c7ba5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_3c7ba5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_3c7ba5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.glsl
index 7266173..fd872e5 100644
--- a/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/428b0b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 insertBits_428b0b() {
+  ivec3 res = ivec3(3);
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_428b0b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 insertBits_428b0b() {
+  ivec3 res = ivec3(3);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_428b0b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 insertBits_428b0b() {
   ivec3 res = ivec3(3);
   return res;
 }
-void main() {
-  prevent_dce = insertBits_428b0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_428b0b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_428b0b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 insertBits_428b0b() {
-  ivec3 res = ivec3(3);
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_428b0b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_428b0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_428b0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 insertBits_428b0b() {
-  ivec3 res = ivec3(3);
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_428b0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_428b0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_428b0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.glsl
index 5004570..83ebe52 100644
--- a/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/51ede1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 insertBits_51ede1() {
+  uvec4 res = uvec4(3u);
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_51ede1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 insertBits_51ede1() {
+  uvec4 res = uvec4(3u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_51ede1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 insertBits_51ede1() {
   uvec4 res = uvec4(3u);
   return res;
 }
-void main() {
-  prevent_dce = insertBits_51ede1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_51ede1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_51ede1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 insertBits_51ede1() {
-  uvec4 res = uvec4(3u);
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_51ede1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_51ede1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_51ede1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 insertBits_51ede1() {
-  uvec4 res = uvec4(3u);
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_51ede1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_51ede1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_51ede1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.glsl
index 0d8eca8..879dcfa 100644
--- a/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/65468b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int insertBits_65468b() {
+  int res = 3;
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_65468b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int insertBits_65468b() {
+  int res = 3;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_65468b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int insertBits_65468b() {
   int res = 3;
   return res;
 }
-void main() {
-  prevent_dce = insertBits_65468b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_65468b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_65468b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int insertBits_65468b() {
-  int res = 3;
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_65468b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_65468b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_65468b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int insertBits_65468b() {
-  int res = 3;
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_65468b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_65468b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_65468b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.glsl
index 5526c80..8a1fff0 100644
--- a/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/87826b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 insertBits_87826b() {
+  uvec3 res = uvec3(3u);
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_87826b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 insertBits_87826b() {
+  uvec3 res = uvec3(3u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_87826b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 insertBits_87826b() {
   uvec3 res = uvec3(3u);
   return res;
 }
-void main() {
-  prevent_dce = insertBits_87826b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_87826b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_87826b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 insertBits_87826b() {
-  uvec3 res = uvec3(3u);
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_87826b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_87826b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_87826b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 insertBits_87826b() {
-  uvec3 res = uvec3(3u);
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_87826b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_87826b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_87826b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.glsl
index 3f4cf66..de1d6da 100644
--- a/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/d86978.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 insertBits_d86978() {
+  ivec4 res = ivec4(3);
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_d86978();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 insertBits_d86978() {
+  ivec4 res = ivec4(3);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_d86978();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 insertBits_d86978() {
   ivec4 res = ivec4(3);
   return res;
 }
-void main() {
-  prevent_dce = insertBits_d86978();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_d86978();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_d86978();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 insertBits_d86978() {
-  ivec4 res = ivec4(3);
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_d86978();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_d86978();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_d86978();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 insertBits_d86978() {
-  ivec4 res = ivec4(3);
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_d86978();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_d86978();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_d86978();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.glsl
index 662727f..aaa0a15 100644
--- a/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/e3e3a2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint insertBits_e3e3a2() {
+  uint res = 3u;
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_e3e3a2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint insertBits_e3e3a2() {
+  uint res = 3u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_e3e3a2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint insertBits_e3e3a2() {
   uint res = 3u;
   return res;
 }
-void main() {
-  prevent_dce = insertBits_e3e3a2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_e3e3a2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_e3e3a2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint insertBits_e3e3a2() {
-  uint res = 3u;
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_e3e3a2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_e3e3a2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_e3e3a2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint insertBits_e3e3a2() {
-  uint res = 3u;
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_e3e3a2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_e3e3a2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_e3e3a2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.glsl
index 3c719d1..60d065d 100644
--- a/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/insertBits/fe6ba6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 insertBits_fe6ba6() {
+  ivec2 res = ivec2(3);
+  return res;
+}
+void main() {
+  v.tint_symbol = insertBits_fe6ba6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 insertBits_fe6ba6() {
+  ivec2 res = ivec2(3);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = insertBits_fe6ba6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 insertBits_fe6ba6() {
   ivec2 res = ivec2(3);
   return res;
 }
-void main() {
-  prevent_dce = insertBits_fe6ba6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_fe6ba6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = insertBits_fe6ba6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 insertBits_fe6ba6() {
-  ivec2 res = ivec2(3);
-  return res;
-}
 void main() {
-  prevent_dce = insertBits_fe6ba6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_fe6ba6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_fe6ba6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 insertBits_fe6ba6() {
-  ivec2 res = ivec2(3);
-  return res;
-}
-void main() {
-  prevent_dce = insertBits_fe6ba6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = insertBits_fe6ba6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = insertBits_fe6ba6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.glsl
index 6789f35..68e0023 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/07a6fe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_07a6fe() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  inverseSqrt_07a6fe();
+}
+#version 310 es
+
+void inverseSqrt_07a6fe() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_07a6fe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_07a6fe() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  inverseSqrt_07a6fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_07a6fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_07a6fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_07a6fe() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  inverseSqrt_07a6fe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_07a6fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_07a6fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_07a6fe() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  inverseSqrt_07a6fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_07a6fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_07a6fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.glsl
index b5158b2..acce80a 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t inverseSqrt_440300() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_440300();
+  v.tint_symbol = inverseSqrt_440300();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_440300();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t inverseSqrt_440300() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_440300();
+  v.tint_symbol = inverseSqrt_440300();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_440300();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t inverseSqrt_440300() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_440300();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl
index 7a7bdec..a732eff 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_4ca6d6() {
+  float res = 1.0f;
+}
+void main() {
+  inverseSqrt_4ca6d6();
+}
+#version 310 es
+
+void inverseSqrt_4ca6d6() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_4ca6d6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_4ca6d6() {
   float res = 1.0f;
 }
-void main() {
-  inverseSqrt_4ca6d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_4ca6d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_4ca6d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_4ca6d6() {
-  float res = 1.0f;
-}
 void main() {
-  inverseSqrt_4ca6d6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_4ca6d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_4ca6d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_4ca6d6() {
-  float res = 1.0f;
-}
-void main() {
-  inverseSqrt_4ca6d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_4ca6d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_4ca6d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.glsl
index ad1a5cb..2b165b7 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 inverseSqrt_5f51f8() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_5f51f8();
+  v.tint_symbol = inverseSqrt_5f51f8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_5f51f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 inverseSqrt_5f51f8() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_5f51f8();
+  v.tint_symbol = inverseSqrt_5f51f8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_5f51f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 inverseSqrt_5f51f8() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_5f51f8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.glsl
index 0a9ea6b..4929f9a 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/6d0783.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_6d0783() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  inverseSqrt_6d0783();
+}
+#version 310 es
+
+void inverseSqrt_6d0783() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_6d0783();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_6d0783() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  inverseSqrt_6d0783();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_6d0783();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_6d0783();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_6d0783() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  inverseSqrt_6d0783();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_6d0783();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_6d0783();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_6d0783() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  inverseSqrt_6d0783();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_6d0783();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_6d0783();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.glsl
index 64b92c5..a49c464 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/84407e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float inverseSqrt_84407e() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = inverseSqrt_84407e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float inverseSqrt_84407e() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = inverseSqrt_84407e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float inverseSqrt_84407e() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_84407e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float inverseSqrt_84407e() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_84407e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_84407e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float inverseSqrt_84407e() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_84407e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl
index 197dcb2..a787c2f 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 inverseSqrt_8f2bd2() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = inverseSqrt_8f2bd2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 inverseSqrt_8f2bd2() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = inverseSqrt_8f2bd2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 inverseSqrt_8f2bd2() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_8f2bd2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 inverseSqrt_8f2bd2() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_8f2bd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 inverseSqrt_8f2bd2() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_8f2bd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.glsl
index 939c7d8..c1859d9 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b197b1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 inverseSqrt_b197b1() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = inverseSqrt_b197b1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 inverseSqrt_b197b1() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = inverseSqrt_b197b1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 inverseSqrt_b197b1() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_b197b1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 inverseSqrt_b197b1() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_b197b1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b197b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 inverseSqrt_b197b1() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b197b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.glsl
index f2cf265..92c7daf 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 inverseSqrt_b85ebd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_b85ebd();
+  v.tint_symbol = inverseSqrt_b85ebd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b85ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 inverseSqrt_b85ebd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_b85ebd();
+  v.tint_symbol = inverseSqrt_b85ebd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b85ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 inverseSqrt_b85ebd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_b85ebd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.glsl
index a30c8db..a4eeb7d 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/c22347.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 inverseSqrt_c22347() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = inverseSqrt_c22347();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 inverseSqrt_c22347() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = inverseSqrt_c22347();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 inverseSqrt_c22347() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_c22347();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 inverseSqrt_c22347() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_c22347();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_c22347();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 inverseSqrt_c22347() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_c22347();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.glsl
index c1c2cc3..54ae62e 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 inverseSqrt_cbdc70() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_cbdc70();
+  v.tint_symbol = inverseSqrt_cbdc70();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_cbdc70();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 inverseSqrt_cbdc70() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_cbdc70();
+  v.tint_symbol = inverseSqrt_cbdc70();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_cbdc70();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 inverseSqrt_cbdc70() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_cbdc70();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.glsl
index f084946..403427b 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/f60c1c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_f60c1c() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  inverseSqrt_f60c1c();
+}
+#version 310 es
+
+void inverseSqrt_f60c1c() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_f60c1c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_f60c1c() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  inverseSqrt_f60c1c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_f60c1c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_f60c1c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_f60c1c() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  inverseSqrt_f60c1c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_f60c1c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_f60c1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_f60c1c() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  inverseSqrt_f60c1c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_f60c1c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_f60c1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.glsl
index 459e6bd..342ef08 100644
--- a/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/082c1f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_082c1f() {
   float16_t res = 2.0hf;
   return res;
 }
 void main() {
-  prevent_dce = ldexp_082c1f();
+  v.tint_symbol = ldexp_082c1f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_082c1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_082c1f() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_082c1f();
+  v.tint_symbol = ldexp_082c1f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_082c1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t ldexp_082c1f() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_082c1f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.glsl
index c2ac3f1..cc88264 100644
--- a/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/217a31.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_217a31() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_217a31();
+  v.tint_symbol = ldexp_217a31();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_217a31();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_217a31();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_217a31() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_217a31();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_217a31();
+  v.tint_symbol = ldexp_217a31();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_217a31();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 ldexp_217a31() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_217a31();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_217a31();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_217a31();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.glsl
index a70838e..151937e 100644
--- a/test/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/2bfc68.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_2bfc68() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  ldexp_2bfc68();
+}
+#version 310 es
+
+void ldexp_2bfc68() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_2bfc68();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_2bfc68() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  ldexp_2bfc68();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2bfc68();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_2bfc68();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2bfc68() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  ldexp_2bfc68();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2bfc68();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2bfc68();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2bfc68() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  ldexp_2bfc68();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2bfc68();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2bfc68();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.glsl
index 234fb63..5887714 100644
--- a/test/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/2c6370.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_2c6370() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  ldexp_2c6370();
+}
+#version 310 es
+
+void ldexp_2c6370() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_2c6370();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_2c6370() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  ldexp_2c6370();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2c6370();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_2c6370();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2c6370() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  ldexp_2c6370();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2c6370();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2c6370();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2c6370() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  ldexp_2c6370();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2c6370();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2c6370();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.glsl
index 579e9ce..99880d6 100644
--- a/test/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/376938.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_376938() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  ldexp_376938();
+}
+#version 310 es
+
+void ldexp_376938() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_376938();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_376938() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  ldexp_376938();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_376938();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_376938();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_376938() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  ldexp_376938();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_376938();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_376938();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_376938() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  ldexp_376938();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_376938();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_376938();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.glsl
index ec238ee..4be775f 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_3d90b4() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_3d90b4();
+  v.tint_symbol = ldexp_3d90b4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_3d90b4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_3d90b4() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_3d90b4();
+  v.tint_symbol = ldexp_3d90b4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_3d90b4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 ldexp_3d90b4() {
   f16vec2 res = f16vec2(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_3d90b4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.glsl
index f25889e..e7b55f6 100644
--- a/test/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/4a3ad9.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_4a3ad9() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  ldexp_4a3ad9();
+}
+#version 310 es
+
+void ldexp_4a3ad9() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_4a3ad9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_4a3ad9() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  ldexp_4a3ad9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_4a3ad9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_4a3ad9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_4a3ad9() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  ldexp_4a3ad9();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_4a3ad9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_4a3ad9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_4a3ad9() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  ldexp_4a3ad9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_4a3ad9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_4a3ad9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.glsl
index 38ec658..815d9fb 100644
--- a/test/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/593ff3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ldexp_593ff3() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_593ff3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ldexp_593ff3() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_593ff3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 ldexp_593ff3() {
   vec3 res = vec3(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_593ff3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ldexp_593ff3() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_593ff3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_593ff3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ldexp_593ff3() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_593ff3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.glsl
index 2f8fcf2..0343ea2 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_624e0c() {
   float16_t res = 2.0hf;
   return res;
 }
 void main() {
-  prevent_dce = ldexp_624e0c();
+  v.tint_symbol = ldexp_624e0c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_624e0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_624e0c() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_624e0c();
+  v.tint_symbol = ldexp_624e0c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_624e0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t ldexp_624e0c() {
   float16_t res = 2.0hf;
   return res;
 }
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_624e0c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.glsl
index 145be1b..3ad7a12 100644
--- a/test/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/65a7bd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ldexp_65a7bd() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_65a7bd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ldexp_65a7bd() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_65a7bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 ldexp_65a7bd() {
   vec4 res = vec4(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_65a7bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ldexp_65a7bd() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_65a7bd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_65a7bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ldexp_65a7bd() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_65a7bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.glsl
index c5224e8..1256024 100644
--- a/test/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/71ebe3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_71ebe3() {
+  float res = 2.0f;
+}
+void main() {
+  ldexp_71ebe3();
+}
+#version 310 es
+
+void ldexp_71ebe3() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_71ebe3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_71ebe3() {
   float res = 2.0f;
 }
-void main() {
-  ldexp_71ebe3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_71ebe3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_71ebe3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_71ebe3() {
-  float res = 2.0f;
-}
 void main() {
-  ldexp_71ebe3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_71ebe3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_71ebe3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_71ebe3() {
-  float res = 2.0f;
-}
-void main() {
-  ldexp_71ebe3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_71ebe3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_71ebe3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.glsl
index 6192cc4..3ba7ff5 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_7485ce() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_7485ce();
+  v.tint_symbol = ldexp_7485ce();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7485ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_7485ce() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_7485ce();
+  v.tint_symbol = ldexp_7485ce();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7485ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 ldexp_7485ce() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_7485ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.glsl
index 9c7b7c3..96f73a7 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_7fa13c() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_7fa13c();
+  v.tint_symbol = ldexp_7fa13c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7fa13c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_7fa13c() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_7fa13c();
+  v.tint_symbol = ldexp_7fa13c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7fa13c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 ldexp_7fa13c() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_7fa13c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.glsl
index 5a11830..c8cf2c0 100644
--- a/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/8a0c2f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_8a0c2f() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_8a0c2f();
+  v.tint_symbol = ldexp_8a0c2f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8a0c2f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_8a0c2f() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_8a0c2f();
+  v.tint_symbol = ldexp_8a0c2f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8a0c2f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 ldexp_8a0c2f() {
   f16vec4 res = f16vec4(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_8a0c2f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.glsl
index e7cad3c..a59598c 100644
--- a/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/8e43e9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_8e43e9() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_8e43e9();
+  v.tint_symbol = ldexp_8e43e9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8e43e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_8e43e9() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_8e43e9();
+  v.tint_symbol = ldexp_8e43e9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8e43e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 ldexp_8e43e9() {
   f16vec3 res = f16vec3(2.0hf);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_8e43e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.glsl
index 172fdff..bc2c19f 100644
--- a/test/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/a22679.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ldexp_a22679() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_a22679();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ldexp_a22679() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_a22679();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 ldexp_a22679() {
   vec2 res = vec2(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_a22679();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ldexp_a22679() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_a22679();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a22679();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ldexp_a22679() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a22679();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.glsl
index 71a98d0..743c13f 100644
--- a/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/a31cdc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ldexp_a31cdc() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_a31cdc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ldexp_a31cdc() {
+  vec3 res = vec3(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_a31cdc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 ldexp_a31cdc() {
   vec3 res = vec3(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_a31cdc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ldexp_a31cdc() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_a31cdc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a31cdc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ldexp_a31cdc() {
-  vec3 res = vec3(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a31cdc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.glsl
index 2c2d155..a0de265 100644
--- a/test/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/a6126e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_a6126e() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  ldexp_a6126e();
+}
+#version 310 es
+
+void ldexp_a6126e() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_a6126e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_a6126e() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  ldexp_a6126e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_a6126e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_a6126e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_a6126e() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  ldexp_a6126e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_a6126e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_a6126e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_a6126e() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  ldexp_a6126e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_a6126e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_a6126e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.glsl
index fe8681d..7198095 100644
--- a/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/abd718.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ldexp_abd718() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_abd718();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ldexp_abd718() {
+  vec2 res = vec2(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_abd718();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 ldexp_abd718() {
   vec2 res = vec2(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_abd718();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ldexp_abd718() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_abd718();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_abd718();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ldexp_abd718() {
-  vec2 res = vec2(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_abd718();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.glsl
index c85f500..36a1cff 100644
--- a/test/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/c9d0b7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ldexp_c9d0b7() {
+  float res = 2.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_c9d0b7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ldexp_c9d0b7() {
+  float res = 2.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_c9d0b7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float ldexp_c9d0b7() {
   float res = 2.0f;
   return res;
 }
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_c9d0b7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ldexp_c9d0b7() {
-  float res = 2.0f;
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_c9d0b7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_c9d0b7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ldexp_c9d0b7() {
-  float res = 2.0f;
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_c9d0b7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.glsl
index 12cd25c..b922890 100644
--- a/test/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/cb0faf.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_cb0faf() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  ldexp_cb0faf();
+}
+#version 310 es
+
+void ldexp_cb0faf() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_cb0faf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_cb0faf() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  ldexp_cb0faf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_cb0faf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_cb0faf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_cb0faf() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  ldexp_cb0faf();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_cb0faf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_cb0faf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_cb0faf() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  ldexp_cb0faf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_cb0faf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_cb0faf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.glsl
index 9d8c679..08becc9 100644
--- a/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/cc9cde.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ldexp_cc9cde() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_cc9cde();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ldexp_cc9cde() {
+  vec4 res = vec4(2.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_cc9cde();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 ldexp_cc9cde() {
   vec4 res = vec4(2.0f);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_cc9cde();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ldexp_cc9cde() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_cc9cde();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_cc9cde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ldexp_cc9cde() {
-  vec4 res = vec4(2.0f);
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_cc9cde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.glsl
index 2c2ab72..dceb60f 100644
--- a/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/db8b49.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ldexp_db8b49() {
+  float res = 2.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = ldexp_db8b49();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ldexp_db8b49() {
+  float res = 2.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = ldexp_db8b49();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float ldexp_db8b49() {
   float res = 2.0f;
   return res;
 }
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_db8b49();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ldexp_db8b49() {
-  float res = 2.0f;
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_db8b49();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_db8b49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ldexp_db8b49() {
-  float res = 2.0f;
-  return res;
-}
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_db8b49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.glsl
index 1c7d595..8de5e88 100644
--- a/test/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/fdbc7b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_fdbc7b() {
+  float res = 2.0f;
+}
+void main() {
+  ldexp_fdbc7b();
+}
+#version 310 es
+
+void ldexp_fdbc7b() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_fdbc7b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_fdbc7b() {
   float res = 2.0f;
 }
-void main() {
-  ldexp_fdbc7b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_fdbc7b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_fdbc7b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_fdbc7b() {
-  float res = 2.0f;
-}
 void main() {
-  ldexp_fdbc7b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_fdbc7b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_fdbc7b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_fdbc7b() {
-  float res = 2.0f;
-}
-void main() {
-  ldexp_fdbc7b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_fdbc7b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_fdbc7b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.glsl
index 991467b..df90658 100644
--- a/test/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/056071.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_056071() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = length_056071();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_056071() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = length_056071();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_056071() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = length_056071();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_056071();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_056071();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_056071() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = length_056071();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_056071();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_056071();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_056071() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = length_056071();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_056071();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_056071();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.glsl
index b80d8b5..df8c30c 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_3f0e13() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = length_3f0e13();
+  v.tint_symbol = length_3f0e13();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_3f0e13();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_3f0e13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_3f0e13() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_3f0e13();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_3f0e13();
+  v.tint_symbol = length_3f0e13();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_3f0e13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_3f0e13() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_3f0e13();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_3f0e13();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_3f0e13();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.glsl
index 6e8b054..b0a96b0 100644
--- a/test/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/555aba.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_555aba() {
+  float res = 0.0f;
+}
+void main() {
+  length_555aba();
+}
+#version 310 es
+
+void length_555aba() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_555aba();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_555aba() {
   float res = 0.0f;
 }
-void main() {
-  length_555aba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_555aba();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_555aba();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_555aba() {
-  float res = 0.0f;
-}
 void main() {
-  length_555aba();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_555aba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_555aba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_555aba() {
-  float res = 0.0f;
-}
-void main() {
-  length_555aba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_555aba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_555aba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.glsl
index f382963..92b9dd1 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_5b1a9b() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = length_5b1a9b();
+  v.tint_symbol = length_5b1a9b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_5b1a9b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_5b1a9b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_5b1a9b() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_5b1a9b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_5b1a9b();
+  v.tint_symbol = length_5b1a9b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_5b1a9b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_5b1a9b() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_5b1a9b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_5b1a9b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_5b1a9b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.glsl
index d24615e..6644555 100644
--- a/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/602a17.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_602a17() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = length_602a17();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_602a17() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = length_602a17();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_602a17() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = length_602a17();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_602a17();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_602a17();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_602a17() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = length_602a17();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_602a17();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_602a17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_602a17() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = length_602a17();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_602a17();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_602a17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.glsl
index e2680cf..43a68e9 100644
--- a/test/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/7b4741.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_7b4741() {
+  float res = 0.0f;
+}
+void main() {
+  length_7b4741();
+}
+#version 310 es
+
+void length_7b4741() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_7b4741();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_7b4741() {
   float res = 0.0f;
 }
-void main() {
-  length_7b4741();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_7b4741();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_7b4741();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_7b4741() {
-  float res = 0.0f;
-}
 void main() {
-  length_7b4741();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_7b4741();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_7b4741();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_7b4741() {
-  float res = 0.0f;
-}
-void main() {
-  length_7b4741();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_7b4741();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_7b4741();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.glsl
index c1c8dc4..80e926f 100644
--- a/test/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/936ad5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_936ad5() {
+  float res = 0.0f;
+}
+void main() {
+  length_936ad5();
+}
+#version 310 es
+
+void length_936ad5() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_936ad5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_936ad5() {
   float res = 0.0f;
 }
-void main() {
-  length_936ad5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_936ad5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_936ad5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_936ad5() {
-  float res = 0.0f;
-}
 void main() {
-  length_936ad5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_936ad5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_936ad5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_936ad5() {
-  float res = 0.0f;
-}
-void main() {
-  length_936ad5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_936ad5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_936ad5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.glsl
index 04d35a8..27950ec 100644
--- a/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/afde8b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_afde8b() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = length_afde8b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_afde8b() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = length_afde8b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_afde8b() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = length_afde8b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_afde8b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_afde8b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_afde8b() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = length_afde8b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_afde8b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_afde8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_afde8b() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = length_afde8b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_afde8b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_afde8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.glsl
index a25f7fd..6b4af6a 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_ba16d6() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = length_ba16d6();
+  v.tint_symbol = length_ba16d6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_ba16d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_ba16d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_ba16d6() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_ba16d6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_ba16d6();
+  v.tint_symbol = length_ba16d6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_ba16d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_ba16d6() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_ba16d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_ba16d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_ba16d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.glsl
index 7f6826e..a6395df 100644
--- a/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/becebf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_becebf() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = length_becebf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_becebf() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = length_becebf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_becebf() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = length_becebf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_becebf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_becebf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_becebf() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = length_becebf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_becebf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_becebf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_becebf() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = length_becebf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_becebf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_becebf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.glsl
index c6c2c2e..7934d00 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_c158da() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = length_c158da();
+  v.tint_symbol = length_c158da();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_c158da();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_c158da();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_c158da() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_c158da();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_c158da();
+  v.tint_symbol = length_c158da();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_c158da();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_c158da() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = length_c158da();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_c158da();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_c158da();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.glsl
index f4534bc..fcd6433 100644
--- a/test/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/length/c2c544.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_c2c544() {
+  float res = 0.0f;
+}
+void main() {
+  length_c2c544();
+}
+#version 310 es
+
+void length_c2c544() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_c2c544();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_c2c544() {
   float res = 0.0f;
 }
-void main() {
-  length_c2c544();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_c2c544();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_c2c544();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_c2c544() {
-  float res = 0.0f;
-}
 void main() {
-  length_c2c544();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_c2c544();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_c2c544();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_c2c544() {
-  float res = 0.0f;
-}
-void main() {
-  length_c2c544();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_c2c544();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_c2c544();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.glsl
index 3eb08b9..187700a 100644
--- a/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/3da25a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 log_3da25a() {
+  vec4 res = vec4(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = log_3da25a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 log_3da25a() {
+  vec4 res = vec4(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log_3da25a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 log_3da25a() {
   vec4 res = vec4(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = log_3da25a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_3da25a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_3da25a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 log_3da25a() {
-  vec4 res = vec4(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = log_3da25a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_3da25a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_3da25a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 log_3da25a() {
-  vec4 res = vec4(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = log_3da25a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_3da25a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_3da25a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.glsl
index c89faac..559ec95 100644
--- a/test/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/655989.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_655989() {
+  float res = 0.0f;
+}
+void main() {
+  log_655989();
+}
+#version 310 es
+
+void log_655989() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_655989();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_655989() {
   float res = 0.0f;
 }
-void main() {
-  log_655989();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_655989();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_655989();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_655989() {
-  float res = 0.0f;
-}
 void main() {
-  log_655989();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_655989();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_655989();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_655989() {
-  float res = 0.0f;
-}
-void main() {
-  log_655989();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_655989();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_655989();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl
index e306295..b8ad471 100644
--- a/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/697e1d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_697e1d() {
+  vec4 res = vec4(0.0f);
+}
+void main() {
+  log_697e1d();
+}
+#version 310 es
+
+void log_697e1d() {
+  vec4 res = vec4(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_697e1d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_697e1d() {
   vec4 res = vec4(0.0f);
 }
-void main() {
-  log_697e1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_697e1d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_697e1d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_697e1d() {
-  vec4 res = vec4(0.0f);
-}
 void main() {
-  log_697e1d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_697e1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_697e1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_697e1d() {
-  vec4 res = vec4(0.0f);
-}
-void main() {
-  log_697e1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_697e1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_697e1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.glsl
index 09beb30..2ca1b80 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log_6ff86f() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = log_6ff86f();
+  v.tint_symbol = log_6ff86f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_6ff86f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_6ff86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log_6ff86f() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log_6ff86f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_6ff86f();
+  v.tint_symbol = log_6ff86f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_6ff86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 log_6ff86f() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log_6ff86f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_6ff86f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_6ff86f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.glsl
index a2e7bfa..6ce93d1 100644
--- a/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/7114a6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float log_7114a6() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = log_7114a6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float log_7114a6() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log_7114a6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float log_7114a6() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = log_7114a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_7114a6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_7114a6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float log_7114a6() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = log_7114a6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_7114a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_7114a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float log_7114a6() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = log_7114a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_7114a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_7114a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.glsl
index 7e12dca..b33fe43 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log_8f0e32() {
   f16vec2 res = f16vec2(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = log_8f0e32();
+  v.tint_symbol = log_8f0e32();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_8f0e32();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_8f0e32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log_8f0e32() {
   f16vec2 res = f16vec2(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log_8f0e32();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_8f0e32();
+  v.tint_symbol = log_8f0e32();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_8f0e32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 log_8f0e32() {
   f16vec2 res = f16vec2(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log_8f0e32();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_8f0e32();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_8f0e32();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.glsl
index d4ce37e..9cd637d 100644
--- a/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/b2ce28.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 log_b2ce28() {
+  vec2 res = vec2(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = log_b2ce28();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 log_b2ce28() {
+  vec2 res = vec2(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log_b2ce28();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 log_b2ce28() {
   vec2 res = vec2(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = log_b2ce28();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_b2ce28();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_b2ce28();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 log_b2ce28() {
-  vec2 res = vec2(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = log_b2ce28();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_b2ce28();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_b2ce28();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 log_b2ce28() {
-  vec2 res = vec2(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = log_b2ce28();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_b2ce28();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_b2ce28();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.glsl
index d68197c..d577c2c 100644
--- a/test/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/b8088d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_b8088d() {
+  vec3 res = vec3(0.0f);
+}
+void main() {
+  log_b8088d();
+}
+#version 310 es
+
+void log_b8088d() {
+  vec3 res = vec3(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_b8088d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_b8088d() {
   vec3 res = vec3(0.0f);
 }
-void main() {
-  log_b8088d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_b8088d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_b8088d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_b8088d() {
-  vec3 res = vec3(0.0f);
-}
 void main() {
-  log_b8088d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_b8088d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_b8088d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_b8088d() {
-  vec3 res = vec3(0.0f);
-}
-void main() {
-  log_b8088d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_b8088d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_b8088d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.glsl
index 29c0664..485fbb9 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log_c9f489() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = log_c9f489();
+  v.tint_symbol = log_c9f489();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_c9f489();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_c9f489();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log_c9f489() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = log_c9f489();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_c9f489();
+  v.tint_symbol = log_c9f489();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_c9f489();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t log_c9f489() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = log_c9f489();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_c9f489();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_c9f489();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.glsl
index 27e898f..067a326 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log_cdbdc1() {
   f16vec4 res = f16vec4(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = log_cdbdc1();
+  v.tint_symbol = log_cdbdc1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_cdbdc1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_cdbdc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log_cdbdc1() {
   f16vec4 res = f16vec4(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log_cdbdc1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_cdbdc1();
+  v.tint_symbol = log_cdbdc1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_cdbdc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 log_cdbdc1() {
   f16vec4 res = f16vec4(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log_cdbdc1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_cdbdc1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_cdbdc1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.glsl
index 6d76c5a..353329f 100644
--- a/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/f4c570.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 log_f4c570() {
+  vec3 res = vec3(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = log_f4c570();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 log_f4c570() {
+  vec3 res = vec3(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log_f4c570();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 log_f4c570() {
   vec3 res = vec3(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = log_f4c570();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_f4c570();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_f4c570();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 log_f4c570() {
-  vec3 res = vec3(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = log_f4c570();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_f4c570();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_f4c570();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 log_f4c570() {
-  vec3 res = vec3(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = log_f4c570();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_f4c570();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_f4c570();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.glsl
index 35b66ec..1cd5963 100644
--- a/test/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log/f60cc7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_f60cc7() {
+  vec2 res = vec2(0.0f);
+}
+void main() {
+  log_f60cc7();
+}
+#version 310 es
+
+void log_f60cc7() {
+  vec2 res = vec2(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_f60cc7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_f60cc7() {
   vec2 res = vec2(0.0f);
 }
-void main() {
-  log_f60cc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_f60cc7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_f60cc7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_f60cc7() {
-  vec2 res = vec2(0.0f);
-}
 void main() {
-  log_f60cc7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_f60cc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_f60cc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_f60cc7() {
-  vec2 res = vec2(0.0f);
-}
-void main() {
-  log_f60cc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_f60cc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_f60cc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.glsl
index d281732..cefd5f8 100644
--- a/test/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/0fbd39.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_0fbd39() {
+  vec3 res = vec3(0.0f);
+}
+void main() {
+  log2_0fbd39();
+}
+#version 310 es
+
+void log2_0fbd39() {
+  vec3 res = vec3(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_0fbd39();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_0fbd39() {
   vec3 res = vec3(0.0f);
 }
-void main() {
-  log2_0fbd39();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_0fbd39();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_0fbd39();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_0fbd39() {
-  vec3 res = vec3(0.0f);
-}
 void main() {
-  log2_0fbd39();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_0fbd39();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_0fbd39();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_0fbd39() {
-  vec3 res = vec3(0.0f);
-}
-void main() {
-  log2_0fbd39();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_0fbd39();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_0fbd39();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.glsl
index fe4d903..4028b49 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log2_38b478() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = log2_38b478();
+  v.tint_symbol = log2_38b478();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_38b478();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_38b478();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log2_38b478() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log2_38b478();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_38b478();
+  v.tint_symbol = log2_38b478();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_38b478();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 log2_38b478() {
   f16vec3 res = f16vec3(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log2_38b478();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_38b478();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_38b478();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.glsl
index 4c8fd5e..04fcc29 100644
--- a/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/4036ed.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float log2_4036ed() {
+  float res = 0.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = log2_4036ed();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float log2_4036ed() {
+  float res = 0.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log2_4036ed();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float log2_4036ed() {
   float res = 0.0f;
   return res;
 }
-void main() {
-  prevent_dce = log2_4036ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_4036ed();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_4036ed();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float log2_4036ed() {
-  float res = 0.0f;
-  return res;
-}
 void main() {
-  prevent_dce = log2_4036ed();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_4036ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_4036ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float log2_4036ed() {
-  float res = 0.0f;
-  return res;
-}
-void main() {
-  prevent_dce = log2_4036ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_4036ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_4036ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.glsl
index 1913b73..0bf201a 100644
--- a/test/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/5b464b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_5b464b() {
+  float res = 0.0f;
+}
+void main() {
+  log2_5b464b();
+}
+#version 310 es
+
+void log2_5b464b() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_5b464b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_5b464b() {
   float res = 0.0f;
 }
-void main() {
-  log2_5b464b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_5b464b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_5b464b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_5b464b() {
-  float res = 0.0f;
-}
 void main() {
-  log2_5b464b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_5b464b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_5b464b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_5b464b() {
-  float res = 0.0f;
-}
-void main() {
-  log2_5b464b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_5b464b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_5b464b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.glsl
index 6b1d943..cec9e76 100644
--- a/test/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/6b8954.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_6b8954() {
+  vec2 res = vec2(0.0f);
+}
+void main() {
+  log2_6b8954();
+}
+#version 310 es
+
+void log2_6b8954() {
+  vec2 res = vec2(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_6b8954();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_6b8954() {
   vec2 res = vec2(0.0f);
 }
-void main() {
-  log2_6b8954();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_6b8954();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_6b8954();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_6b8954() {
-  vec2 res = vec2(0.0f);
-}
 void main() {
-  log2_6b8954();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_6b8954();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_6b8954();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_6b8954() {
-  vec2 res = vec2(0.0f);
-}
-void main() {
-  log2_6b8954();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_6b8954();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_6b8954();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.glsl
index 07f298d..5061c06 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log2_776088() {
   f16vec4 res = f16vec4(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = log2_776088();
+  v.tint_symbol = log2_776088();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_776088();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_776088();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log2_776088() {
   f16vec4 res = f16vec4(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log2_776088();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_776088();
+  v.tint_symbol = log2_776088();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_776088();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 log2_776088() {
   f16vec4 res = f16vec4(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log2_776088();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_776088();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_776088();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.glsl
index 7f256c6..7cb6c58 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log2_8c10b3() {
   float16_t res = 0.0hf;
   return res;
 }
 void main() {
-  prevent_dce = log2_8c10b3();
+  v.tint_symbol = log2_8c10b3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_8c10b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_8c10b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log2_8c10b3() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = log2_8c10b3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_8c10b3();
+  v.tint_symbol = log2_8c10b3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_8c10b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t log2_8c10b3() {
   float16_t res = 0.0hf;
   return res;
 }
-void main() {
-  prevent_dce = log2_8c10b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_8c10b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_8c10b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.glsl
index aa5885f..c69bc77 100644
--- a/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/902988.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 log2_902988() {
+  vec4 res = vec4(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = log2_902988();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 log2_902988() {
+  vec4 res = vec4(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log2_902988();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 log2_902988() {
   vec4 res = vec4(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = log2_902988();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_902988();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_902988();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 log2_902988() {
-  vec4 res = vec4(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = log2_902988();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_902988();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_902988();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 log2_902988() {
-  vec4 res = vec4(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = log2_902988();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_902988();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_902988();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.glsl
index fa83fbd..c53ffb1 100644
--- a/test/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/a52bbb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_a52bbb() {
+  vec4 res = vec4(0.0f);
+}
+void main() {
+  log2_a52bbb();
+}
+#version 310 es
+
+void log2_a52bbb() {
+  vec4 res = vec4(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_a52bbb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_a52bbb() {
   vec4 res = vec4(0.0f);
 }
-void main() {
-  log2_a52bbb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_a52bbb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_a52bbb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_a52bbb() {
-  vec4 res = vec4(0.0f);
-}
 void main() {
-  log2_a52bbb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_a52bbb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_a52bbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_a52bbb() {
-  vec4 res = vec4(0.0f);
-}
-void main() {
-  log2_a52bbb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_a52bbb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_a52bbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.glsl
index 793a53e..30bb6aa 100644
--- a/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/adb233.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 log2_adb233() {
+  vec3 res = vec3(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = log2_adb233();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 log2_adb233() {
+  vec3 res = vec3(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log2_adb233();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 log2_adb233() {
   vec3 res = vec3(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = log2_adb233();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_adb233();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_adb233();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 log2_adb233() {
-  vec3 res = vec3(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = log2_adb233();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_adb233();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_adb233();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 log2_adb233() {
-  vec3 res = vec3(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = log2_adb233();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_adb233();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_adb233();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.glsl
index 5ec1f85..a8e79c5 100644
--- a/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/aea659.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 log2_aea659() {
+  vec2 res = vec2(0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = log2_aea659();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 log2_aea659() {
+  vec2 res = vec2(0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = log2_aea659();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 log2_aea659() {
   vec2 res = vec2(0.0f);
   return res;
 }
-void main() {
-  prevent_dce = log2_aea659();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_aea659();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_aea659();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 log2_aea659() {
-  vec2 res = vec2(0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = log2_aea659();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_aea659();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_aea659();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 log2_aea659() {
-  vec2 res = vec2(0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = log2_aea659();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_aea659();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_aea659();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.glsl
index 937db3e..750c976 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log2_fb9f0b() {
   f16vec2 res = f16vec2(0.0hf);
   return res;
 }
 void main() {
-  prevent_dce = log2_fb9f0b();
+  v.tint_symbol = log2_fb9f0b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_fb9f0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log2_fb9f0b() {
   f16vec2 res = f16vec2(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_fb9f0b();
+  v.tint_symbol = log2_fb9f0b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_fb9f0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 log2_fb9f0b() {
   f16vec2 res = f16vec2(0.0hf);
   return res;
 }
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_fb9f0b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.glsl
index 8f78001..baa855d 100644
--- a/test/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/067f3a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_067f3a() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  max_067f3a();
+}
+#version 310 es
+
+void max_067f3a() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_067f3a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_067f3a() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  max_067f3a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_067f3a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_067f3a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_067f3a() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  max_067f3a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_067f3a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_067f3a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_067f3a() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  max_067f3a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_067f3a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_067f3a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.glsl
index cb3fade..0476cc8 100644
--- a/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/0c0aae.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint max_0c0aae() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = max_0c0aae();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint max_0c0aae() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_0c0aae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint max_0c0aae() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = max_0c0aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_0c0aae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_0c0aae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint max_0c0aae() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = max_0c0aae();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_0c0aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_0c0aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint max_0c0aae() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = max_0c0aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_0c0aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_0c0aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.glsl
index 8903939..c632a95 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t max_111ac0() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = max_111ac0();
+  v.tint_symbol = max_111ac0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_111ac0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_111ac0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t max_111ac0() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = max_111ac0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_111ac0();
+  v.tint_symbol = max_111ac0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_111ac0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t max_111ac0() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = max_111ac0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_111ac0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_111ac0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.glsl
index c904a1a..0069639 100644
--- a/test/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/19070a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_19070a() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  max_19070a();
+}
+#version 310 es
+
+void max_19070a() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_19070a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_19070a() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  max_19070a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_19070a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_19070a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_19070a() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  max_19070a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_19070a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_19070a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_19070a() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  max_19070a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_19070a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_19070a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.glsl
index f27e7cd..6786401 100644
--- a/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/25eafe.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 max_25eafe() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_25eafe();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 max_25eafe() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_25eafe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 max_25eafe() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = max_25eafe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_25eafe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_25eafe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 max_25eafe() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = max_25eafe();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_25eafe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_25eafe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 max_25eafe() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = max_25eafe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_25eafe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_25eafe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.glsl
index c61ed11..35f1825 100644
--- a/test/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/320815.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 max_320815() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_320815();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 max_320815() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_320815();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 max_320815() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = max_320815();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_320815();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_320815();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 max_320815() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = max_320815();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_320815();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_320815();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 max_320815() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = max_320815();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_320815();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_320815();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.glsl
index e54b9d1..d11c8e6 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 max_34956e() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = max_34956e();
+  v.tint_symbol = max_34956e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_34956e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_34956e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 max_34956e() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = max_34956e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_34956e();
+  v.tint_symbol = max_34956e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_34956e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 max_34956e() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = max_34956e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_34956e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_34956e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.glsl
index 233755c..c1eaa40 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 max_445169() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = max_445169();
+  v.tint_symbol = max_445169();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_445169();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_445169();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 max_445169() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = max_445169();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_445169();
+  v.tint_symbol = max_445169();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_445169();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 max_445169() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = max_445169();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_445169();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_445169();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.glsl
index f76e8eb..35b36e2 100644
--- a/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/44a39d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float max_44a39d() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = max_44a39d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float max_44a39d() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_44a39d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float max_44a39d() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = max_44a39d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_44a39d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_44a39d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float max_44a39d() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = max_44a39d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_44a39d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_44a39d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float max_44a39d() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = max_44a39d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_44a39d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_44a39d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.glsl
index 0e99dd5..16f94e1 100644
--- a/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/453e04.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 max_453e04() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_453e04();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 max_453e04() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_453e04();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 max_453e04() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = max_453e04();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_453e04();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_453e04();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 max_453e04() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = max_453e04();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_453e04();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_453e04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 max_453e04() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = max_453e04();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_453e04();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_453e04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.glsl
index bc72f7f..7b31455 100644
--- a/test/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/462050.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 max_462050() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_462050();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 max_462050() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_462050();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 max_462050() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = max_462050();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_462050();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_462050();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 max_462050() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = max_462050();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_462050();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_462050();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 max_462050() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = max_462050();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_462050();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_462050();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.glsl
index 24c03df..c769d41 100644
--- a/test/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/482d23.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_482d23() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  max_482d23();
+}
+#version 310 es
+
+void max_482d23() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_482d23();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_482d23() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  max_482d23();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_482d23();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_482d23();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_482d23() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  max_482d23();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_482d23();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_482d23();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_482d23() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  max_482d23();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_482d23();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_482d23();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.glsl
index 89ea552..308c7b5 100644
--- a/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/4883ac.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 max_4883ac() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_4883ac();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 max_4883ac() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_4883ac();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 max_4883ac() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = max_4883ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_4883ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_4883ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 max_4883ac() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = max_4883ac();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_4883ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_4883ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 max_4883ac() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = max_4883ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_4883ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_4883ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.glsl
index 9005aff..9b16985 100644
--- a/test/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/4bbff2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_4bbff2() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  max_4bbff2();
+}
+#version 310 es
+
+void max_4bbff2() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_4bbff2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_4bbff2() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  max_4bbff2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_4bbff2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_4bbff2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_4bbff2() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  max_4bbff2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_4bbff2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_4bbff2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_4bbff2() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  max_4bbff2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_4bbff2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_4bbff2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.glsl
index bc93b5c..b54ab06 100644
--- a/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/85e6bc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 max_85e6bc() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_85e6bc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 max_85e6bc() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_85e6bc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 max_85e6bc() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = max_85e6bc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_85e6bc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_85e6bc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 max_85e6bc() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = max_85e6bc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_85e6bc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_85e6bc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 max_85e6bc() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = max_85e6bc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_85e6bc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_85e6bc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.glsl
index 997dd73..77cd8c5 100644
--- a/test/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/a1b196.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_a1b196() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  max_a1b196();
+}
+#version 310 es
+
+void max_a1b196() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_a1b196();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_a1b196() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  max_a1b196();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_a1b196();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_a1b196();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_a1b196() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  max_a1b196();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_a1b196();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_a1b196();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_a1b196() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  max_a1b196();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_a1b196();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_a1b196();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.glsl
index 1b5c2ee..1a4fe84 100644
--- a/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/a93419.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 max_a93419() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_a93419();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 max_a93419() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_a93419();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 max_a93419() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = max_a93419();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_a93419();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_a93419();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 max_a93419() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = max_a93419();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_a93419();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_a93419();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 max_a93419() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = max_a93419();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_a93419();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_a93419();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.glsl
index b2b715d..b1af089 100644
--- a/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/b1b73a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 max_b1b73a() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_b1b73a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 max_b1b73a() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_b1b73a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 max_b1b73a() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = max_b1b73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_b1b73a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_b1b73a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 max_b1b73a() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = max_b1b73a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_b1b73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_b1b73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 max_b1b73a() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = max_b1b73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_b1b73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_b1b73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.glsl
index 84ce82e..ab457f7 100644
--- a/test/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/c023dd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_c023dd() {
+  float res = 1.0f;
+}
+void main() {
+  max_c023dd();
+}
+#version 310 es
+
+void max_c023dd() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_c023dd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_c023dd() {
   float res = 1.0f;
 }
-void main() {
-  max_c023dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_c023dd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_c023dd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_c023dd() {
-  float res = 1.0f;
-}
 void main() {
-  max_c023dd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_c023dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_c023dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_c023dd() {
-  float res = 1.0f;
-}
-void main() {
-  max_c023dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_c023dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_c023dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.glsl
index 8f0b2e2..6c04daf 100644
--- a/test/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/caa3d7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_caa3d7() {
+  int res = 1;
+}
+void main() {
+  max_caa3d7();
+}
+#version 310 es
+
+void max_caa3d7() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_caa3d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_caa3d7() {
   int res = 1;
 }
-void main() {
-  max_caa3d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_caa3d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_caa3d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_caa3d7() {
-  int res = 1;
-}
 void main() {
-  max_caa3d7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_caa3d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_caa3d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_caa3d7() {
-  int res = 1;
-}
-void main() {
-  max_caa3d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_caa3d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_caa3d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.glsl
index 9bd2abd..a342cd5 100644
--- a/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/ce7c30.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int max_ce7c30() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = max_ce7c30();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int max_ce7c30() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_ce7c30();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int max_ce7c30() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = max_ce7c30();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_ce7c30();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_ce7c30();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int max_ce7c30() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = max_ce7c30();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_ce7c30();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_ce7c30();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int max_ce7c30() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = max_ce7c30();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_ce7c30();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_ce7c30();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.glsl
index f26c743..8b76aab 100644
--- a/test/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/de6b87.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_de6b87() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  max_de6b87();
+}
+#version 310 es
+
+void max_de6b87() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_de6b87();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_de6b87() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  max_de6b87();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_de6b87();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_de6b87();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_de6b87() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  max_de6b87();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_de6b87();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_de6b87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_de6b87() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  max_de6b87();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_de6b87();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_de6b87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.glsl
index a2855e3..2883622 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 max_e14f2b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = max_e14f2b();
+  v.tint_symbol = max_e14f2b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e14f2b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e14f2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 max_e14f2b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = max_e14f2b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_e14f2b();
+  v.tint_symbol = max_e14f2b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e14f2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 max_e14f2b() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = max_e14f2b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e14f2b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_e14f2b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.glsl
index 322b955..f535c25 100644
--- a/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/max/e8192f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 max_e8192f() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = max_e8192f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 max_e8192f() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = max_e8192f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 max_e8192f() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = max_e8192f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e8192f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_e8192f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 max_e8192f() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = max_e8192f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e8192f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e8192f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 max_e8192f() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = max_e8192f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e8192f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e8192f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.glsl
index 8fb6bdc..79d9bfe 100644
--- a/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/03c7e3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 min_03c7e3() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_03c7e3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 min_03c7e3() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_03c7e3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 min_03c7e3() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = min_03c7e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_03c7e3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_03c7e3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 min_03c7e3() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = min_03c7e3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_03c7e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_03c7e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 min_03c7e3() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = min_03c7e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_03c7e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_03c7e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.glsl
index 50d3068d..29582ff 100644
--- a/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/0dc614.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 min_0dc614() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_0dc614();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 min_0dc614() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_0dc614();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 min_0dc614() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = min_0dc614();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_0dc614();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_0dc614();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 min_0dc614() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = min_0dc614();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_0dc614();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_0dc614();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 min_0dc614() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = min_0dc614();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_0dc614();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_0dc614();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.glsl
index 5ce11ee..4ebe553 100644
--- a/test/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/364910.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_364910() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  min_364910();
+}
+#version 310 es
+
+void min_364910() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_364910();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_364910() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  min_364910();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_364910();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_364910();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_364910() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  min_364910();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_364910();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_364910();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_364910() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  min_364910();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_364910();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_364910();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.glsl
index 4d85edc..224b162 100644
--- a/test/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/371bd6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_371bd6() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  min_371bd6();
+}
+#version 310 es
+
+void min_371bd6() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_371bd6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_371bd6() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  min_371bd6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_371bd6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_371bd6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_371bd6() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  min_371bd6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_371bd6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_371bd6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_371bd6() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  min_371bd6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_371bd6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_371bd6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.glsl
index 906a250..26cba67 100644
--- a/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/3941e1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 min_3941e1() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_3941e1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 min_3941e1() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_3941e1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 min_3941e1() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = min_3941e1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_3941e1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_3941e1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 min_3941e1() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = min_3941e1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_3941e1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_3941e1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 min_3941e1() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = min_3941e1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_3941e1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_3941e1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.glsl
index 4fa1218..ebb98f8 100644
--- a/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/46c5d3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint min_46c5d3() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = min_46c5d3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint min_46c5d3() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_46c5d3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint min_46c5d3() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = min_46c5d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_46c5d3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_46c5d3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint min_46c5d3() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = min_46c5d3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_46c5d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_46c5d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint min_46c5d3() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = min_46c5d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_46c5d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_46c5d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.glsl
index 8a7a715..9ba597d 100644
--- a/test/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/527b79.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_527b79() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  min_527b79();
+}
+#version 310 es
+
+void min_527b79() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_527b79();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_527b79() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  min_527b79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_527b79();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_527b79();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_527b79() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  min_527b79();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_527b79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_527b79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_527b79() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  min_527b79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_527b79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_527b79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.glsl
index 104119c..c2eda73 100644
--- a/test/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/717257.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_717257() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  min_717257();
+}
+#version 310 es
+
+void min_717257() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_717257();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_717257() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  min_717257();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_717257();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_717257();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_717257() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  min_717257();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_717257();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_717257();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_717257() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  min_717257();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_717257();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_717257();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.glsl
index 2216cb1..693ed61 100644
--- a/test/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/794711.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_794711() {
+  float res = 1.0f;
+}
+void main() {
+  min_794711();
+}
+#version 310 es
+
+void min_794711() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_794711();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_794711() {
   float res = 1.0f;
 }
-void main() {
-  min_794711();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_794711();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_794711();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_794711() {
-  float res = 1.0f;
-}
 void main() {
-  min_794711();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_794711();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_794711();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_794711() {
-  float res = 1.0f;
-}
-void main() {
-  min_794711();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_794711();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_794711();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.glsl
index f29156e..6145b5c 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 min_7c710a() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = min_7c710a();
+  v.tint_symbol = min_7c710a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_7c710a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_7c710a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 min_7c710a() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = min_7c710a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_7c710a();
+  v.tint_symbol = min_7c710a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_7c710a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 min_7c710a() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = min_7c710a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_7c710a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_7c710a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.glsl
index 1fb10ad..d48cac3 100644
--- a/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/82b28f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 min_82b28f() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_82b28f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 min_82b28f() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_82b28f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 min_82b28f() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = min_82b28f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_82b28f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_82b28f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 min_82b28f() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = min_82b28f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_82b28f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_82b28f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 min_82b28f() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = min_82b28f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_82b28f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_82b28f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.glsl
index 9c75b9e..07110d8 100644
--- a/test/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/84c9fe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_84c9fe() {
+  int res = 1;
+}
+void main() {
+  min_84c9fe();
+}
+#version 310 es
+
+void min_84c9fe() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_84c9fe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_84c9fe() {
   int res = 1;
 }
-void main() {
-  min_84c9fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_84c9fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_84c9fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_84c9fe() {
-  int res = 1;
-}
 void main() {
-  min_84c9fe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_84c9fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_84c9fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_84c9fe() {
-  int res = 1;
-}
-void main() {
-  min_84c9fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_84c9fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_84c9fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.glsl
index 0bfb393..825c899 100644
--- a/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/93cfc4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 min_93cfc4() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_93cfc4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 min_93cfc4() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_93cfc4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 min_93cfc4() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = min_93cfc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_93cfc4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_93cfc4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 min_93cfc4() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = min_93cfc4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_93cfc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_93cfc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 min_93cfc4() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = min_93cfc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_93cfc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_93cfc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.glsl
index dc3acec..1315ab7 100644
--- a/test/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/98e797.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_98e797() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  min_98e797();
+}
+#version 310 es
+
+void min_98e797() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_98e797();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_98e797() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  min_98e797();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_98e797();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_98e797();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_98e797() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  min_98e797();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_98e797();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_98e797();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_98e797() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  min_98e797();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_98e797();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_98e797();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.glsl
index 89bcb7f..26e803a 100644
--- a/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/a45171.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 min_a45171() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_a45171();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 min_a45171() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_a45171();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 min_a45171() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = min_a45171();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_a45171();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_a45171();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 min_a45171() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = min_a45171();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_a45171();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_a45171();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 min_a45171() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = min_a45171();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_a45171();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_a45171();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.glsl
index 9d25291..1c8b273 100644
--- a/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/aa28ad.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 min_aa28ad() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_aa28ad();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 min_aa28ad() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_aa28ad();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 min_aa28ad() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = min_aa28ad();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_aa28ad();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_aa28ad();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 min_aa28ad() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = min_aa28ad();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_aa28ad();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_aa28ad();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 min_aa28ad() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = min_aa28ad();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_aa28ad();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_aa28ad();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.glsl
index 1f59a58..30c0155 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 min_ab0acd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = min_ab0acd();
+  v.tint_symbol = min_ab0acd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ab0acd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ab0acd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 min_ab0acd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = min_ab0acd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_ab0acd();
+  v.tint_symbol = min_ab0acd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ab0acd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 min_ab0acd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = min_ab0acd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ab0acd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_ab0acd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.glsl
index 541726c..4be4aca 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t min_ac84d6() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = min_ac84d6();
+  v.tint_symbol = min_ac84d6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ac84d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ac84d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t min_ac84d6() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = min_ac84d6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_ac84d6();
+  v.tint_symbol = min_ac84d6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ac84d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t min_ac84d6() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = min_ac84d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ac84d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_ac84d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.glsl
index f58209c..b1ddd2f 100644
--- a/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/af326d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float min_af326d() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = min_af326d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float min_af326d() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_af326d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float min_af326d() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = min_af326d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_af326d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_af326d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float min_af326d() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = min_af326d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_af326d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_af326d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float min_af326d() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = min_af326d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_af326d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_af326d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.glsl
index 37c5a1c..6741953 100644
--- a/test/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/af364e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_af364e() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  min_af364e();
+}
+#version 310 es
+
+void min_af364e() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_af364e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_af364e() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  min_af364e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_af364e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_af364e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_af364e() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  min_af364e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_af364e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_af364e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_af364e() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  min_af364e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_af364e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_af364e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.glsl
index 971eec4..73cc51f 100644
--- a/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/c70bb7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 min_c70bb7() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_c70bb7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 min_c70bb7() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_c70bb7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 min_c70bb7() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = min_c70bb7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c70bb7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_c70bb7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 min_c70bb7() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = min_c70bb7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c70bb7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c70bb7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 min_c70bb7() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = min_c70bb7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c70bb7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c70bb7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.glsl
index 277ec17..57a0040 100644
--- a/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/c73147.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int min_c73147() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = min_c73147();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int min_c73147() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_c73147();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int min_c73147() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = min_c73147();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c73147();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_c73147();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int min_c73147() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = min_c73147();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c73147();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c73147();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int min_c73147() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = min_c73147();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c73147();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c73147();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.glsl
index 5b19bd1..9cb2515 100644
--- a/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/c76fa6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 min_c76fa6() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = min_c76fa6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 min_c76fa6() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = min_c76fa6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 min_c76fa6() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = min_c76fa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c76fa6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_c76fa6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 min_c76fa6() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = min_c76fa6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c76fa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c76fa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 min_c76fa6() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = min_c76fa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c76fa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c76fa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.glsl
index 5023488..4708f79 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 min_e780f9() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = min_e780f9();
+  v.tint_symbol = min_e780f9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_e780f9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_e780f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 min_e780f9() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = min_e780f9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_e780f9();
+  v.tint_symbol = min_e780f9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_e780f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 min_e780f9() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = min_e780f9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_e780f9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_e780f9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.glsl
index c2bb9b5..f24d55f 100644
--- a/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/0c8c33.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 mix_0c8c33() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_0c8c33();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 mix_0c8c33() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_0c8c33();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 mix_0c8c33() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_0c8c33();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 mix_0c8c33() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = mix_0c8c33();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_0c8c33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 mix_0c8c33() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_0c8c33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.glsl
index 065ee69..688480d 100644
--- a/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/1faeb1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 mix_1faeb1() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_1faeb1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 mix_1faeb1() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_1faeb1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 mix_1faeb1() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_1faeb1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 mix_1faeb1() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = mix_1faeb1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_1faeb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 mix_1faeb1() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_1faeb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.glsl
index dddc3d2..3dbab02 100644
--- a/test/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/275cac.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_275cac() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  mix_275cac();
+}
+#version 310 es
+
+void mix_275cac() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_275cac();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_275cac() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  mix_275cac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_275cac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_275cac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_275cac() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  mix_275cac();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_275cac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_275cac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_275cac() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  mix_275cac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_275cac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_275cac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.glsl
index 6aeabfd..a4e92fe 100644
--- a/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/2fadab.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 mix_2fadab() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_2fadab();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 mix_2fadab() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_2fadab();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 mix_2fadab() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = mix_2fadab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_2fadab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_2fadab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 mix_2fadab() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = mix_2fadab();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_2fadab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_2fadab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 mix_2fadab() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = mix_2fadab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_2fadab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_2fadab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.glsl
index 513d87e..7dac4f6 100644
--- a/test/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/30de36.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_30de36() {
+  float res = 1.0f;
+}
+void main() {
+  mix_30de36();
+}
+#version 310 es
+
+void mix_30de36() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_30de36();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_30de36() {
   float res = 1.0f;
 }
-void main() {
-  mix_30de36();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_30de36();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_30de36();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_30de36() {
-  float res = 1.0f;
-}
 void main() {
-  mix_30de36();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_30de36();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_30de36();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_30de36() {
-  float res = 1.0f;
-}
-void main() {
-  mix_30de36();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_30de36();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_30de36();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.glsl
index 4f244d7..3ceddaa 100644
--- a/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/315264.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 mix_315264() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_315264();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 mix_315264() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_315264();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 mix_315264() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = mix_315264();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_315264();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_315264();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 mix_315264() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = mix_315264();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_315264();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_315264();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 mix_315264() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = mix_315264();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_315264();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_315264();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.glsl
index 99adf35..48e6b52 100644
--- a/test/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/343c49.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_343c49() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  mix_343c49();
+}
+#version 310 es
+
+void mix_343c49() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_343c49();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_343c49() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  mix_343c49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_343c49();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_343c49();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_343c49() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  mix_343c49();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_343c49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_343c49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_343c49() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  mix_343c49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_343c49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_343c49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.glsl
index 8614d92..5ea64f9 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t mix_38cbbb() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = mix_38cbbb();
+  v.tint_symbol = mix_38cbbb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_38cbbb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_38cbbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t mix_38cbbb() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = mix_38cbbb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_38cbbb();
+  v.tint_symbol = mix_38cbbb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_38cbbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t mix_38cbbb() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = mix_38cbbb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_38cbbb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_38cbbb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.glsl
index eec2aad..9271c0a 100644
--- a/test/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/42d11d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_42d11d() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  mix_42d11d();
+}
+#version 310 es
+
+void mix_42d11d() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_42d11d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_42d11d() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  mix_42d11d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_42d11d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_42d11d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_42d11d() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  mix_42d11d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_42d11d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_42d11d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_42d11d() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  mix_42d11d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_42d11d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_42d11d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.glsl
index 0004867..19fd1d7 100644
--- a/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/4f0b5e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float mix_4f0b5e() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_4f0b5e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float mix_4f0b5e() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_4f0b5e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float mix_4f0b5e() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_4f0b5e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float mix_4f0b5e() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = mix_4f0b5e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_4f0b5e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float mix_4f0b5e() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_4f0b5e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.glsl
index f916b14..7b0c842 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_63f2fd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = mix_63f2fd();
+  v.tint_symbol = mix_63f2fd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_63f2fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_63f2fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_63f2fd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_63f2fd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_63f2fd();
+  v.tint_symbol = mix_63f2fd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_63f2fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 mix_63f2fd() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_63f2fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_63f2fd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_63f2fd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.glsl
index 068d44e..91c8578 100644
--- a/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/6f8adc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 mix_6f8adc() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_6f8adc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 mix_6f8adc() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_6f8adc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 mix_6f8adc() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_6f8adc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 mix_6f8adc() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = mix_6f8adc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_6f8adc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 mix_6f8adc() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_6f8adc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.glsl
index 1642920..b1788ae 100644
--- a/test/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/98007a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_98007a() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  mix_98007a();
+}
+#version 310 es
+
+void mix_98007a() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_98007a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_98007a() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  mix_98007a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_98007a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_98007a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_98007a() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  mix_98007a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_98007a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_98007a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_98007a() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  mix_98007a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_98007a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_98007a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.glsl
index fbb2472..73346a5 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_98ee3e() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = mix_98ee3e();
+  v.tint_symbol = mix_98ee3e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_98ee3e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_98ee3e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_98ee3e() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_98ee3e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_98ee3e();
+  v.tint_symbol = mix_98ee3e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_98ee3e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 mix_98ee3e() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_98ee3e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_98ee3e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_98ee3e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.glsl
index 8bf82d2..d9da496 100644
--- a/test/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/9c2681.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_9c2681() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  mix_9c2681();
+}
+#version 310 es
+
+void mix_9c2681() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_9c2681();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_9c2681() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  mix_9c2681();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_9c2681();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_9c2681();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_9c2681() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  mix_9c2681();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_9c2681();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_9c2681();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_9c2681() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  mix_9c2681();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_9c2681();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_9c2681();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.glsl
index 3bd896e..fff1927 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_c1aec6() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = mix_c1aec6();
+  v.tint_symbol = mix_c1aec6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c1aec6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c1aec6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_c1aec6() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_c1aec6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_c1aec6();
+  v.tint_symbol = mix_c1aec6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c1aec6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 mix_c1aec6() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_c1aec6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c1aec6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_c1aec6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.glsl
index 1615d3a..e7a4dfd 100644
--- a/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/c37ede.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 mix_c37ede() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = mix_c37ede();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 mix_c37ede() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = mix_c37ede();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 mix_c37ede() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = mix_c37ede();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c37ede();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_c37ede();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 mix_c37ede() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = mix_c37ede();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c37ede();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c37ede();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 mix_c37ede() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = mix_c37ede();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c37ede();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c37ede();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.glsl
index 850b751..24c9613 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_e46a83() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = mix_e46a83();
+  v.tint_symbol = mix_e46a83();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_e46a83();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_e46a83();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_e46a83() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_e46a83();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_e46a83();
+  v.tint_symbol = mix_e46a83();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_e46a83();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 mix_e46a83() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_e46a83();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_e46a83();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_e46a83();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.glsl
index e0428f1..d76d2c2 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_ee2468() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = mix_ee2468();
+  v.tint_symbol = mix_ee2468();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_ee2468();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_ee2468();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_ee2468() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_ee2468();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_ee2468();
+  v.tint_symbol = mix_ee2468();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_ee2468();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 mix_ee2468() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_ee2468();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_ee2468();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_ee2468();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.glsl
index 985e57a..efdf84d 100644
--- a/test/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/ef3575.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_ef3575() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  mix_ef3575();
+}
+#version 310 es
+
+void mix_ef3575() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_ef3575();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_ef3575() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  mix_ef3575();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_ef3575();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_ef3575();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_ef3575() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  mix_ef3575();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_ef3575();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_ef3575();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_ef3575() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  mix_ef3575();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_ef3575();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_ef3575();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.glsl
index 4c2ba9a..dc607f1 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_f1a543() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = mix_f1a543();
+  v.tint_symbol = mix_f1a543();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_f1a543();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_f1a543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_f1a543() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_f1a543();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_f1a543();
+  v.tint_symbol = mix_f1a543();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_f1a543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 mix_f1a543() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = mix_f1a543();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_f1a543();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_f1a543();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.glsl
index 072ebe9..b0ee3fc 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void modf_45005f() {
   modf_result_vec3_f16 res = modf_result_vec3_f16(f16vec3(-0.5hf), f16vec3(-1.0hf));
 }
 void main() {
   modf_45005f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_45005f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_45005f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   f16vec3 fract;
   f16vec3 whole;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void modf_45005f() {
   modf_result_vec3_f16 res = modf_result_vec3_f16(f16vec3(-0.5hf), f16vec3(-1.0hf));
 }
-void main() {
-  modf_45005f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   modf_45005f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_45005f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   f16vec3 fract;
   f16vec3 whole;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void modf_45005f() {
   modf_result_vec3_f16 res = modf_result_vec3_f16(f16vec3(-0.5hf), f16vec3(-1.0hf));
 }
-void main() {
-  modf_45005f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_45005f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   modf_45005f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.glsl
index 0362172..d7e958a 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void modf_8dbbbf() {
   modf_result_f16 res = modf_result_f16(-0.5hf, -1.0hf);
 }
 void main() {
   modf_8dbbbf();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_8dbbbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_8dbbbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   float16_t fract;
   float16_t whole;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void modf_8dbbbf() {
   modf_result_f16 res = modf_result_f16(-0.5hf, -1.0hf);
 }
-void main() {
-  modf_8dbbbf();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   modf_8dbbbf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_8dbbbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   float16_t fract;
   float16_t whole;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void modf_8dbbbf() {
   modf_result_f16 res = modf_result_f16(-0.5hf, -1.0hf);
 }
-void main() {
-  modf_8dbbbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_8dbbbf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   modf_8dbbbf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.glsl
index b4bff92..28b49f1 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void modf_995934() {
   modf_result_vec4_f16 res = modf_result_vec4_f16(f16vec4(-0.5hf), f16vec4(-1.0hf));
 }
 void main() {
   modf_995934();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_995934();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_995934();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   f16vec4 fract;
   f16vec4 whole;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void modf_995934() {
   modf_result_vec4_f16 res = modf_result_vec4_f16(f16vec4(-0.5hf), f16vec4(-1.0hf));
 }
-void main() {
-  modf_995934();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   modf_995934();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_995934();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   f16vec4 fract;
   f16vec4 whole;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void modf_995934() {
   modf_result_vec4_f16 res = modf_result_vec4_f16(f16vec4(-0.5hf), f16vec4(-1.0hf));
 }
-void main() {
-  modf_995934();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_995934();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   modf_995934();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.glsl
index d4bc32f..9ec39e6 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,33 +9,12 @@
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-};
-
 void modf_a545b9() {
   modf_result_vec2_f16 res = modf_result_vec2_f16(f16vec2(-0.5hf), f16vec2(-1.0hf));
 }
 void main() {
   modf_a545b9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_a545b9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_a545b9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -45,37 +22,14 @@
   f16vec2 fract;
   f16vec2 whole;
 };
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
 
 void modf_a545b9() {
   modf_result_vec2_f16 res = modf_result_vec2_f16(f16vec2(-0.5hf), f16vec2(-1.0hf));
 }
-void main() {
-  modf_a545b9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
   modf_a545b9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  modf_a545b9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -83,9 +37,6 @@
   f16vec2 fract;
   f16vec2 whole;
 };
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
@@ -94,25 +45,15 @@
 void modf_a545b9() {
   modf_result_vec2_f16 res = modf_result_vec2_f16(f16vec2(-0.5hf), f16vec2(-1.0hf));
 }
-void main() {
-  modf_a545b9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  modf_a545b9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   modf_a545b9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.glsl
index fec4861..cd3b81c 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 normalize_39d5ec() {
   f16vec3 res = f16vec3(0.5771484375hf);
   return res;
 }
 void main() {
-  prevent_dce = normalize_39d5ec();
+  v.tint_symbol = normalize_39d5ec();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_39d5ec();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 normalize_39d5ec() {
   f16vec3 res = f16vec3(0.5771484375hf);
   return res;
 }
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_39d5ec();
+  v.tint_symbol = normalize_39d5ec();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_39d5ec();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 normalize_39d5ec() {
   f16vec3 res = f16vec3(0.5771484375hf);
   return res;
 }
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_39d5ec();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.glsl
index 52a7f07..48bdfa7 100644
--- a/test/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/4eaf61.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void normalize_4eaf61() {
+  vec4 res = vec4(0.5f);
+}
+void main() {
+  normalize_4eaf61();
+}
+#version 310 es
+
+void normalize_4eaf61() {
+  vec4 res = vec4(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  normalize_4eaf61();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void normalize_4eaf61() {
   vec4 res = vec4(0.5f);
 }
-void main() {
-  normalize_4eaf61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_4eaf61();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   normalize_4eaf61();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_4eaf61() {
-  vec4 res = vec4(0.5f);
-}
 void main() {
-  normalize_4eaf61();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_4eaf61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_4eaf61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_4eaf61() {
-  vec4 res = vec4(0.5f);
-}
-void main() {
-  normalize_4eaf61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_4eaf61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_4eaf61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.glsl
index bdb8ab3..a1b69d6 100644
--- a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void normalize_584e47() {
+  vec2 res = vec2(0.70710676908493041992f);
+}
+void main() {
+  normalize_584e47();
+}
+#version 310 es
+
+void normalize_584e47() {
+  vec2 res = vec2(0.70710676908493041992f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  normalize_584e47();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void normalize_584e47() {
   vec2 res = vec2(0.70710676908493041992f);
 }
-void main() {
-  normalize_584e47();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_584e47();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   normalize_584e47();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_584e47() {
-  vec2 res = vec2(0.70710676908493041992f);
-}
 void main() {
-  normalize_584e47();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_584e47();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_584e47();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_584e47() {
-  vec2 res = vec2(0.70710676908493041992f);
-}
-void main() {
-  normalize_584e47();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_584e47();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_584e47();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.glsl
index 80c079e..886efe5 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 normalize_64d8c0() {
+  vec3 res = vec3(0.57735025882720947266f);
+  return res;
+}
+void main() {
+  v.tint_symbol = normalize_64d8c0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 normalize_64d8c0() {
+  vec3 res = vec3(0.57735025882720947266f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = normalize_64d8c0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 normalize_64d8c0() {
   vec3 res = vec3(0.57735025882720947266f);
   return res;
 }
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_64d8c0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 normalize_64d8c0() {
-  vec3 res = vec3(0.57735025882720947266f);
-  return res;
-}
 void main() {
-  prevent_dce = normalize_64d8c0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_64d8c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 normalize_64d8c0() {
-  vec3 res = vec3(0.57735025882720947266f);
-  return res;
-}
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_64d8c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.glsl
index 7efbf2c..290d433 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 normalize_7990f3() {
   f16vec2 res = f16vec2(0.70703125hf);
   return res;
 }
 void main() {
-  prevent_dce = normalize_7990f3();
+  v.tint_symbol = normalize_7990f3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_7990f3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_7990f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 normalize_7990f3() {
   f16vec2 res = f16vec2(0.70703125hf);
   return res;
 }
-void main() {
-  prevent_dce = normalize_7990f3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_7990f3();
+  v.tint_symbol = normalize_7990f3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_7990f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 normalize_7990f3() {
   f16vec2 res = f16vec2(0.70703125hf);
   return res;
 }
-void main() {
-  prevent_dce = normalize_7990f3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_7990f3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_7990f3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.glsl
index 0d2908bc..a88ceaa 100644
--- a/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/9a0aab.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 normalize_9a0aab() {
+  vec4 res = vec4(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = normalize_9a0aab();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 normalize_9a0aab() {
+  vec4 res = vec4(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = normalize_9a0aab();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 normalize_9a0aab() {
   vec4 res = vec4(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_9a0aab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 normalize_9a0aab() {
-  vec4 res = vec4(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = normalize_9a0aab();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_9a0aab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 normalize_9a0aab() {
-  vec4 res = vec4(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_9a0aab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.glsl
index de4540b..bc800c1 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 normalize_b8cb8d() {
   f16vec4 res = f16vec4(0.5hf);
   return res;
 }
 void main() {
-  prevent_dce = normalize_b8cb8d();
+  v.tint_symbol = normalize_b8cb8d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_b8cb8d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 normalize_b8cb8d() {
   f16vec4 res = f16vec4(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_b8cb8d();
+  v.tint_symbol = normalize_b8cb8d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_b8cb8d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 normalize_b8cb8d() {
   f16vec4 res = f16vec4(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_b8cb8d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.glsl
index 266890f..dd40dc6 100644
--- a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void normalize_e7def8() {
+  vec3 res = vec3(0.57735025882720947266f);
+}
+void main() {
+  normalize_e7def8();
+}
+#version 310 es
+
+void normalize_e7def8() {
+  vec3 res = vec3(0.57735025882720947266f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  normalize_e7def8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void normalize_e7def8() {
   vec3 res = vec3(0.57735025882720947266f);
 }
-void main() {
-  normalize_e7def8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_e7def8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   normalize_e7def8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_e7def8() {
-  vec3 res = vec3(0.57735025882720947266f);
-}
 void main() {
-  normalize_e7def8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_e7def8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_e7def8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_e7def8() {
-  vec3 res = vec3(0.57735025882720947266f);
-}
-void main() {
-  normalize_e7def8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_e7def8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_e7def8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.glsl
index f98297e..208fbe2 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 normalize_fc2ef1() {
+  vec2 res = vec2(0.70710676908493041992f);
+  return res;
+}
+void main() {
+  v.tint_symbol = normalize_fc2ef1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 normalize_fc2ef1() {
+  vec2 res = vec2(0.70710676908493041992f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = normalize_fc2ef1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 normalize_fc2ef1() {
   vec2 res = vec2(0.70710676908493041992f);
   return res;
 }
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_fc2ef1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 normalize_fc2ef1() {
-  vec2 res = vec2(0.70710676908493041992f);
-  return res;
-}
 void main() {
-  prevent_dce = normalize_fc2ef1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_fc2ef1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 normalize_fc2ef1() {
-  vec2 res = vec2(0.70710676908493041992f);
-  return res;
-}
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_fc2ef1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.glsl
index 5cf850e..ea4521d 100644
--- a/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack2x16float/0e97b3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16float_0e97b3() {
+  uint res = 1006648320u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack2x16float_0e97b3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16float_0e97b3() {
+  uint res = 1006648320u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack2x16float_0e97b3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack2x16float_0e97b3() {
   uint res = 1006648320u;
   return res;
 }
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack2x16float_0e97b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16float_0e97b3() {
-  uint res = 1006648320u;
-  return res;
-}
 void main() {
-  prevent_dce = pack2x16float_0e97b3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16float_0e97b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16float_0e97b3() {
-  uint res = 1006648320u;
-  return res;
-}
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16float_0e97b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.glsl
index 21a0010..bd10ce3 100644
--- a/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack2x16snorm/6c169b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16snorm_6c169b() {
+  uint res = 2147450879u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack2x16snorm_6c169b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16snorm_6c169b() {
+  uint res = 2147450879u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack2x16snorm_6c169b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack2x16snorm_6c169b() {
   uint res = 2147450879u;
   return res;
 }
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack2x16snorm_6c169b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16snorm_6c169b() {
-  uint res = 2147450879u;
-  return res;
-}
 void main() {
-  prevent_dce = pack2x16snorm_6c169b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16snorm_6c169b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16snorm_6c169b() {
-  uint res = 2147450879u;
-  return res;
-}
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16snorm_6c169b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl
index 647cd70..bd027b3 100644
--- a/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16unorm_0f08e4() {
+  uint res = 4294967295u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack2x16unorm_0f08e4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16unorm_0f08e4() {
+  uint res = 4294967295u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack2x16unorm_0f08e4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack2x16unorm_0f08e4() {
   uint res = 4294967295u;
   return res;
 }
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack2x16unorm_0f08e4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16unorm_0f08e4() {
-  uint res = 4294967295u;
-  return res;
-}
 void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16unorm_0f08e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16unorm_0f08e4() {
-  uint res = 4294967295u;
-  return res;
-}
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16unorm_0f08e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl
index 1c50782..a39997d 100644
--- a/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4x8snorm_4d22e7() {
+  uint res = 2139062143u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack4x8snorm_4d22e7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4x8snorm_4d22e7() {
+  uint res = 2139062143u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack4x8snorm_4d22e7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4x8snorm_4d22e7() {
   uint res = 2139062143u;
   return res;
 }
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4x8snorm_4d22e7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4x8snorm_4d22e7() {
-  uint res = 2139062143u;
-  return res;
-}
 void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8snorm_4d22e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4x8snorm_4d22e7() {
-  uint res = 2139062143u;
-  return res;
-}
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8snorm_4d22e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.glsl
index 7eed9d8..65f0467 100644
--- a/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack4x8unorm/95c456.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4x8unorm_95c456() {
+  uint res = 4294967295u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack4x8unorm_95c456();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4x8unorm_95c456() {
+  uint res = 4294967295u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack4x8unorm_95c456();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4x8unorm_95c456() {
   uint res = 4294967295u;
   return res;
 }
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4x8unorm_95c456();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4x8unorm_95c456() {
-  uint res = 4294967295u;
-  return res;
-}
 void main() {
-  prevent_dce = pack4x8unorm_95c456();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8unorm_95c456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4x8unorm_95c456() {
-  uint res = 4294967295u;
-  return res;
-}
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8unorm_95c456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack4xI8/bfce01.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack4xI8/bfce01.wgsl.expected.ir.glsl
index 2cb2bee..e093c41 100644
--- a/test/tint/builtins/gen/literal/pack4xI8/bfce01.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack4xI8/bfce01.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xI8_bfce01() {
+  uint res = 16843009u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack4xI8_bfce01();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xI8_bfce01() {
+  uint res = 16843009u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack4xI8_bfce01();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4xI8_bfce01() {
   uint res = 16843009u;
   return res;
 }
-void main() {
-  prevent_dce = pack4xI8_bfce01();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xI8_bfce01();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4xI8_bfce01();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xI8_bfce01() {
-  uint res = 16843009u;
-  return res;
-}
 void main() {
-  prevent_dce = pack4xI8_bfce01();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xI8_bfce01();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xI8_bfce01();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xI8_bfce01() {
-  uint res = 16843009u;
-  return res;
-}
-void main() {
-  prevent_dce = pack4xI8_bfce01();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xI8_bfce01();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xI8_bfce01();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.ir.glsl
index 4cf816d..38f0fb2 100644
--- a/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack4xI8Clamp/e42b2a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xI8Clamp_e42b2a() {
+  uint res = 16843009u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack4xI8Clamp_e42b2a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xI8Clamp_e42b2a() {
+  uint res = 16843009u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack4xI8Clamp_e42b2a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4xI8Clamp_e42b2a() {
   uint res = 16843009u;
   return res;
 }
-void main() {
-  prevent_dce = pack4xI8Clamp_e42b2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xI8Clamp_e42b2a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4xI8Clamp_e42b2a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xI8Clamp_e42b2a() {
-  uint res = 16843009u;
-  return res;
-}
 void main() {
-  prevent_dce = pack4xI8Clamp_e42b2a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xI8Clamp_e42b2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xI8Clamp_e42b2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xI8Clamp_e42b2a() {
-  uint res = 16843009u;
-  return res;
-}
-void main() {
-  prevent_dce = pack4xI8Clamp_e42b2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xI8Clamp_e42b2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xI8Clamp_e42b2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack4xU8/b70b53.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack4xU8/b70b53.wgsl.expected.ir.glsl
index 6e726ab..ead6ae7 100644
--- a/test/tint/builtins/gen/literal/pack4xU8/b70b53.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack4xU8/b70b53.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xU8_b70b53() {
+  uint res = 16843009u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack4xU8_b70b53();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xU8_b70b53() {
+  uint res = 16843009u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack4xU8_b70b53();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4xU8_b70b53() {
   uint res = 16843009u;
   return res;
 }
-void main() {
-  prevent_dce = pack4xU8_b70b53();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xU8_b70b53();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4xU8_b70b53();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xU8_b70b53() {
-  uint res = 16843009u;
-  return res;
-}
 void main() {
-  prevent_dce = pack4xU8_b70b53();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xU8_b70b53();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xU8_b70b53();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xU8_b70b53() {
-  uint res = 16843009u;
-  return res;
-}
-void main() {
-  prevent_dce = pack4xU8_b70b53();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xU8_b70b53();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xU8_b70b53();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.ir.glsl
index e624f6c..e1205d9 100644
--- a/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pack4xU8Clamp/6b8c1b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xU8Clamp_6b8c1b() {
+  uint res = 16843009u;
+  return res;
+}
+void main() {
+  v.tint_symbol = pack4xU8Clamp_6b8c1b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4xU8Clamp_6b8c1b() {
+  uint res = 16843009u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pack4xU8Clamp_6b8c1b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4xU8Clamp_6b8c1b() {
   uint res = 16843009u;
   return res;
 }
-void main() {
-  prevent_dce = pack4xU8Clamp_6b8c1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xU8Clamp_6b8c1b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4xU8Clamp_6b8c1b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xU8Clamp_6b8c1b() {
-  uint res = 16843009u;
-  return res;
-}
 void main() {
-  prevent_dce = pack4xU8Clamp_6b8c1b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xU8Clamp_6b8c1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xU8Clamp_6b8c1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4xU8Clamp_6b8c1b() {
-  uint res = 16843009u;
-  return res;
-}
-void main() {
-  prevent_dce = pack4xU8Clamp_6b8c1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4xU8Clamp_6b8c1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4xU8Clamp_6b8c1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.glsl
index 89c1147..332fb79 100644
--- a/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/04a908.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 pow_04a908() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = pow_04a908();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 pow_04a908() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pow_04a908();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 pow_04a908() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = pow_04a908();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_04a908();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_04a908();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 pow_04a908() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = pow_04a908();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_04a908();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_04a908();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 pow_04a908() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = pow_04a908();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_04a908();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_04a908();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.glsl
index 6981e4d..e0b9529 100644
--- a/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/46e029.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float pow_46e029() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = pow_46e029();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float pow_46e029() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pow_46e029();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float pow_46e029() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = pow_46e029();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_46e029();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_46e029();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float pow_46e029() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = pow_46e029();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_46e029();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_46e029();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float pow_46e029() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = pow_46e029();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_46e029();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_46e029();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.glsl
index 02cfb5f..4fc3b24 100644
--- a/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/4a46c9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 pow_4a46c9() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = pow_4a46c9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 pow_4a46c9() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pow_4a46c9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 pow_4a46c9() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_4a46c9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 pow_4a46c9() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = pow_4a46c9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4a46c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 pow_4a46c9() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4a46c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.glsl
index ea676a1..d8a0d60 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 pow_4f33b2() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = pow_4f33b2();
+  v.tint_symbol = pow_4f33b2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4f33b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4f33b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 pow_4f33b2() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = pow_4f33b2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_4f33b2();
+  v.tint_symbol = pow_4f33b2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4f33b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 pow_4f33b2() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = pow_4f33b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4f33b2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_4f33b2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.glsl
index 0d72c36..f6d27e3 100644
--- a/test/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/749c42.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_749c42() {
+  float res = 1.0f;
+}
+void main() {
+  pow_749c42();
+}
+#version 310 es
+
+void pow_749c42() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_749c42();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_749c42() {
   float res = 1.0f;
 }
-void main() {
-  pow_749c42();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_749c42();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_749c42();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_749c42() {
-  float res = 1.0f;
-}
 void main() {
-  pow_749c42();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_749c42();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_749c42();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_749c42() {
-  float res = 1.0f;
-}
-void main() {
-  pow_749c42();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_749c42();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_749c42();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.glsl
index b5a7031..9925ae0 100644
--- a/test/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/a8f6b2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_a8f6b2() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  pow_a8f6b2();
+}
+#version 310 es
+
+void pow_a8f6b2() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_a8f6b2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_a8f6b2() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  pow_a8f6b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_a8f6b2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_a8f6b2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_a8f6b2() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  pow_a8f6b2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_a8f6b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_a8f6b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_a8f6b2() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  pow_a8f6b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_a8f6b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_a8f6b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.glsl
index 97e97ba..be50c67 100644
--- a/test/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/bc91ed.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_bc91ed() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  pow_bc91ed();
+}
+#version 310 es
+
+void pow_bc91ed() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_bc91ed();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_bc91ed() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  pow_bc91ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_bc91ed();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_bc91ed();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_bc91ed() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  pow_bc91ed();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_bc91ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_bc91ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_bc91ed() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  pow_bc91ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_bc91ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_bc91ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.glsl
index 9e94590..ed233a5 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t pow_ce9ef5() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = pow_ce9ef5();
+  v.tint_symbol = pow_ce9ef5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_ce9ef5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t pow_ce9ef5() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_ce9ef5();
+  v.tint_symbol = pow_ce9ef5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_ce9ef5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t pow_ce9ef5() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_ce9ef5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.glsl
index b40c04f..f42f266 100644
--- a/test/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/e42f20.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_e42f20() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  pow_e42f20();
+}
+#version 310 es
+
+void pow_e42f20() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_e42f20();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_e42f20() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  pow_e42f20();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_e42f20();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_e42f20();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_e42f20() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  pow_e42f20();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_e42f20();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_e42f20();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_e42f20() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  pow_e42f20();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_e42f20();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_e42f20();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.glsl
index 00d72ad..5aa6f6f 100644
--- a/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/e60ea5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 pow_e60ea5() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = pow_e60ea5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 pow_e60ea5() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = pow_e60ea5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 pow_e60ea5() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_e60ea5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 pow_e60ea5() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = pow_e60ea5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_e60ea5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 pow_e60ea5() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_e60ea5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.glsl
index 5055c6c..60ce365 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 pow_f37b25() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = pow_f37b25();
+  v.tint_symbol = pow_f37b25();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_f37b25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_f37b25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 pow_f37b25() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = pow_f37b25();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_f37b25();
+  v.tint_symbol = pow_f37b25();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_f37b25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 pow_f37b25() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = pow_f37b25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_f37b25();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_f37b25();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.glsl
index 10029b1..bb419d0 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 pow_fa5429() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = pow_fa5429();
+  v.tint_symbol = pow_fa5429();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_fa5429();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_fa5429();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 pow_fa5429() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = pow_fa5429();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_fa5429();
+  v.tint_symbol = pow_fa5429();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_fa5429();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 pow_fa5429() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = pow_fa5429();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_fa5429();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_fa5429();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.glsl
index b14bdee..f990bce 100644
--- a/test/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/quantizeToF16/12e50e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float quantizeToF16_12e50e() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = quantizeToF16_12e50e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float quantizeToF16_12e50e() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = quantizeToF16_12e50e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float quantizeToF16_12e50e() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = quantizeToF16_12e50e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_12e50e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = quantizeToF16_12e50e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float quantizeToF16_12e50e() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = quantizeToF16_12e50e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_12e50e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_12e50e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float quantizeToF16_12e50e() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = quantizeToF16_12e50e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_12e50e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_12e50e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.glsl
index 6e46ab2..dcfd19d 100644
--- a/test/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/quantizeToF16/2cddf3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 quantizeToF16_2cddf3() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = quantizeToF16_2cddf3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 quantizeToF16_2cddf3() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = quantizeToF16_2cddf3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 quantizeToF16_2cddf3() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = quantizeToF16_2cddf3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_2cddf3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = quantizeToF16_2cddf3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 quantizeToF16_2cddf3() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = quantizeToF16_2cddf3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_2cddf3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_2cddf3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 quantizeToF16_2cddf3() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = quantizeToF16_2cddf3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_2cddf3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_2cddf3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.glsl
index fe0adf6..abd631b 100644
--- a/test/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/quantizeToF16/cba294.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 quantizeToF16_cba294() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = quantizeToF16_cba294();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 quantizeToF16_cba294() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = quantizeToF16_cba294();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 quantizeToF16_cba294() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = quantizeToF16_cba294();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_cba294();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = quantizeToF16_cba294();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 quantizeToF16_cba294() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = quantizeToF16_cba294();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_cba294();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_cba294();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 quantizeToF16_cba294() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = quantizeToF16_cba294();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_cba294();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_cba294();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.glsl
index f73eaaf..e47be36 100644
--- a/test/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/quantizeToF16/e8fd14.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 quantizeToF16_e8fd14() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = quantizeToF16_e8fd14();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 quantizeToF16_e8fd14() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = quantizeToF16_e8fd14();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 quantizeToF16_e8fd14() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = quantizeToF16_e8fd14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_e8fd14();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = quantizeToF16_e8fd14();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 quantizeToF16_e8fd14() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = quantizeToF16_e8fd14();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_e8fd14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_e8fd14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 quantizeToF16_e8fd14() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = quantizeToF16_e8fd14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = quantizeToF16_e8fd14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = quantizeToF16_e8fd14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.glsl
index fc677c6..7dea620 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 radians_09b7fc() {
+  vec4 res = vec4(0.01745329238474369049f);
+  return res;
+}
+void main() {
+  v.tint_symbol = radians_09b7fc();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 radians_09b7fc() {
+  vec4 res = vec4(0.01745329238474369049f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = radians_09b7fc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 radians_09b7fc() {
   vec4 res = vec4(0.01745329238474369049f);
   return res;
 }
-void main() {
-  prevent_dce = radians_09b7fc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_09b7fc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_09b7fc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 radians_09b7fc() {
-  vec4 res = vec4(0.01745329238474369049f);
-  return res;
-}
 void main() {
-  prevent_dce = radians_09b7fc();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_09b7fc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_09b7fc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 radians_09b7fc() {
-  vec4 res = vec4(0.01745329238474369049f);
-  return res;
-}
-void main() {
-  prevent_dce = radians_09b7fc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_09b7fc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_09b7fc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.glsl
index 0f650d7..c162ddc 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t radians_208fd9() {
   float16_t res = 0.0174407958984375hf;
   return res;
 }
 void main() {
-  prevent_dce = radians_208fd9();
+  v.tint_symbol = radians_208fd9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_208fd9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_208fd9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t radians_208fd9() {
   float16_t res = 0.0174407958984375hf;
   return res;
 }
-void main() {
-  prevent_dce = radians_208fd9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = radians_208fd9();
+  v.tint_symbol = radians_208fd9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_208fd9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t radians_208fd9() {
   float16_t res = 0.0174407958984375hf;
   return res;
 }
-void main() {
-  prevent_dce = radians_208fd9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_208fd9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_208fd9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.glsl
index c0d64ad..4b8ff37 100644
--- a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_379214() {
+  vec3 res = vec3(0.01745329238474369049f);
+}
+void main() {
+  radians_379214();
+}
+#version 310 es
+
+void radians_379214() {
+  vec3 res = vec3(0.01745329238474369049f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_379214();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_379214() {
   vec3 res = vec3(0.01745329238474369049f);
 }
-void main() {
-  radians_379214();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_379214();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_379214();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_379214() {
-  vec3 res = vec3(0.01745329238474369049f);
-}
 void main() {
-  radians_379214();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_379214();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_379214();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_379214() {
-  vec3 res = vec3(0.01745329238474369049f);
-}
-void main() {
-  radians_379214();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_379214();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_379214();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.glsl
index 54bfe1a..538e53b 100644
--- a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_44a9f8() {
+  vec2 res = vec2(0.01745329238474369049f);
+}
+void main() {
+  radians_44a9f8();
+}
+#version 310 es
+
+void radians_44a9f8() {
+  vec2 res = vec2(0.01745329238474369049f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_44a9f8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_44a9f8() {
   vec2 res = vec2(0.01745329238474369049f);
 }
-void main() {
-  radians_44a9f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_44a9f8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_44a9f8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_44a9f8() {
-  vec2 res = vec2(0.01745329238474369049f);
-}
 void main() {
-  radians_44a9f8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_44a9f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_44a9f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_44a9f8() {
-  vec2 res = vec2(0.01745329238474369049f);
-}
-void main() {
-  radians_44a9f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_44a9f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_44a9f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.glsl
index 47ef343..e7f9a2b 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 radians_44f20b() {
   f16vec4 res = f16vec4(0.0174407958984375hf);
   return res;
 }
 void main() {
-  prevent_dce = radians_44f20b();
+  v.tint_symbol = radians_44f20b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_44f20b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_44f20b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 radians_44f20b() {
   f16vec4 res = f16vec4(0.0174407958984375hf);
   return res;
 }
-void main() {
-  prevent_dce = radians_44f20b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = radians_44f20b();
+  v.tint_symbol = radians_44f20b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_44f20b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 radians_44f20b() {
   f16vec4 res = f16vec4(0.0174407958984375hf);
   return res;
 }
-void main() {
-  prevent_dce = radians_44f20b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_44f20b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_44f20b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.glsl
index 87dba94..ded3a9f 100644
--- a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_524a91() {
+  vec4 res = vec4(0.01745329238474369049f);
+}
+void main() {
+  radians_524a91();
+}
+#version 310 es
+
+void radians_524a91() {
+  vec4 res = vec4(0.01745329238474369049f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_524a91();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_524a91() {
   vec4 res = vec4(0.01745329238474369049f);
 }
-void main() {
-  radians_524a91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_524a91();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_524a91();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_524a91() {
-  vec4 res = vec4(0.01745329238474369049f);
-}
 void main() {
-  radians_524a91();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_524a91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_524a91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_524a91() {
-  vec4 res = vec4(0.01745329238474369049f);
-}
-void main() {
-  radians_524a91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_524a91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_524a91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.glsl
index 67899a2..342c2bf 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 radians_61687a() {
+  vec2 res = vec2(0.01745329238474369049f);
+  return res;
+}
+void main() {
+  v.tint_symbol = radians_61687a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 radians_61687a() {
+  vec2 res = vec2(0.01745329238474369049f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = radians_61687a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 radians_61687a() {
   vec2 res = vec2(0.01745329238474369049f);
   return res;
 }
-void main() {
-  prevent_dce = radians_61687a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_61687a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_61687a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 radians_61687a() {
-  vec2 res = vec2(0.01745329238474369049f);
-  return res;
-}
 void main() {
-  prevent_dce = radians_61687a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_61687a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_61687a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 radians_61687a() {
-  vec2 res = vec2(0.01745329238474369049f);
-  return res;
-}
-void main() {
-  prevent_dce = radians_61687a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_61687a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_61687a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.glsl
index c6bb530..4111a4c 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float radians_6b0ff2() {
+  float res = 0.01745329238474369049f;
+  return res;
+}
+void main() {
+  v.tint_symbol = radians_6b0ff2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float radians_6b0ff2() {
+  float res = 0.01745329238474369049f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = radians_6b0ff2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float radians_6b0ff2() {
   float res = 0.01745329238474369049f;
   return res;
 }
-void main() {
-  prevent_dce = radians_6b0ff2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_6b0ff2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_6b0ff2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float radians_6b0ff2() {
-  float res = 0.01745329238474369049f;
-  return res;
-}
 void main() {
-  prevent_dce = radians_6b0ff2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_6b0ff2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_6b0ff2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float radians_6b0ff2() {
-  float res = 0.01745329238474369049f;
-  return res;
-}
-void main() {
-  prevent_dce = radians_6b0ff2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_6b0ff2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_6b0ff2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.glsl
index 0731c7f..67f9f89 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 radians_7ea4c7() {
   f16vec3 res = f16vec3(0.0174407958984375hf);
   return res;
 }
 void main() {
-  prevent_dce = radians_7ea4c7();
+  v.tint_symbol = radians_7ea4c7();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_7ea4c7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_7ea4c7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 radians_7ea4c7() {
   f16vec3 res = f16vec3(0.0174407958984375hf);
   return res;
 }
-void main() {
-  prevent_dce = radians_7ea4c7();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = radians_7ea4c7();
+  v.tint_symbol = radians_7ea4c7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_7ea4c7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 radians_7ea4c7() {
   f16vec3 res = f16vec3(0.0174407958984375hf);
   return res;
 }
-void main() {
-  prevent_dce = radians_7ea4c7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_7ea4c7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_7ea4c7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.glsl
index 10a9078..53b2a1d 100644
--- a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_bff231() {
+  float res = 0.01745329238474369049f;
+}
+void main() {
+  radians_bff231();
+}
+#version 310 es
+
+void radians_bff231() {
+  float res = 0.01745329238474369049f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_bff231();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_bff231() {
   float res = 0.01745329238474369049f;
 }
-void main() {
-  radians_bff231();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_bff231();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_bff231();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_bff231() {
-  float res = 0.01745329238474369049f;
-}
 void main() {
-  radians_bff231();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_bff231();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_bff231();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_bff231() {
-  float res = 0.01745329238474369049f;
-}
-void main() {
-  radians_bff231();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_bff231();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_bff231();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.glsl
index e469e04..f84af18 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 radians_f96258() {
+  vec3 res = vec3(0.01745329238474369049f);
+  return res;
+}
+void main() {
+  v.tint_symbol = radians_f96258();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 radians_f96258() {
+  vec3 res = vec3(0.01745329238474369049f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = radians_f96258();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 radians_f96258() {
   vec3 res = vec3(0.01745329238474369049f);
   return res;
 }
-void main() {
-  prevent_dce = radians_f96258();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_f96258();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_f96258();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 radians_f96258() {
-  vec3 res = vec3(0.01745329238474369049f);
-  return res;
-}
 void main() {
-  prevent_dce = radians_f96258();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_f96258();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_f96258();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 radians_f96258() {
-  vec3 res = vec3(0.01745329238474369049f);
-  return res;
-}
-void main() {
-  prevent_dce = radians_f96258();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_f96258();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_f96258();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.glsl
index 2b6211f..514bb99 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 radians_fbacf0() {
   f16vec2 res = f16vec2(0.0174407958984375hf);
   return res;
 }
 void main() {
-  prevent_dce = radians_fbacf0();
+  v.tint_symbol = radians_fbacf0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_fbacf0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_fbacf0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 radians_fbacf0() {
   f16vec2 res = f16vec2(0.0174407958984375hf);
   return res;
 }
-void main() {
-  prevent_dce = radians_fbacf0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = radians_fbacf0();
+  v.tint_symbol = radians_fbacf0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = radians_fbacf0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 radians_fbacf0() {
   f16vec2 res = f16vec2(0.0174407958984375hf);
   return res;
 }
-void main() {
-  prevent_dce = radians_fbacf0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = radians_fbacf0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = radians_fbacf0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.glsl
index 0fca695..e642510 100644
--- a/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/05357e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 reflect_05357e() {
+  vec4 res = vec4(-7.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = reflect_05357e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 reflect_05357e() {
+  vec4 res = vec4(-7.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reflect_05357e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 reflect_05357e() {
   vec4 res = vec4(-7.0f);
   return res;
 }
-void main() {
-  prevent_dce = reflect_05357e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_05357e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_05357e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 reflect_05357e() {
-  vec4 res = vec4(-7.0f);
-  return res;
-}
 void main() {
-  prevent_dce = reflect_05357e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_05357e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_05357e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 reflect_05357e() {
-  vec4 res = vec4(-7.0f);
-  return res;
-}
-void main() {
-  prevent_dce = reflect_05357e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_05357e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_05357e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.glsl
index e5c9c7f..39cc003 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 reflect_310de5() {
   f16vec4 res = f16vec4(-7.0hf);
   return res;
 }
 void main() {
-  prevent_dce = reflect_310de5();
+  v.tint_symbol = reflect_310de5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_310de5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_310de5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 reflect_310de5() {
   f16vec4 res = f16vec4(-7.0hf);
   return res;
 }
-void main() {
-  prevent_dce = reflect_310de5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_310de5();
+  v.tint_symbol = reflect_310de5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_310de5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 reflect_310de5() {
   f16vec4 res = f16vec4(-7.0hf);
   return res;
 }
-void main() {
-  prevent_dce = reflect_310de5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_310de5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_310de5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.glsl
index 5fded8d..b3d5f35 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 reflect_61ca21() {
   f16vec3 res = f16vec3(-5.0hf);
   return res;
 }
 void main() {
-  prevent_dce = reflect_61ca21();
+  v.tint_symbol = reflect_61ca21();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_61ca21();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_61ca21();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 reflect_61ca21() {
   f16vec3 res = f16vec3(-5.0hf);
   return res;
 }
-void main() {
-  prevent_dce = reflect_61ca21();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_61ca21();
+  v.tint_symbol = reflect_61ca21();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_61ca21();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 reflect_61ca21() {
   f16vec3 res = f16vec3(-5.0hf);
   return res;
 }
-void main() {
-  prevent_dce = reflect_61ca21();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_61ca21();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_61ca21();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.glsl
index db05061..bf24603 100644
--- a/test/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/a8baf2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void reflect_a8baf2() {
+  vec3 res = vec3(-5.0f);
+}
+void main() {
+  reflect_a8baf2();
+}
+#version 310 es
+
+void reflect_a8baf2() {
+  vec3 res = vec3(-5.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  reflect_a8baf2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void reflect_a8baf2() {
   vec3 res = vec3(-5.0f);
 }
-void main() {
-  reflect_a8baf2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_a8baf2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   reflect_a8baf2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_a8baf2() {
-  vec3 res = vec3(-5.0f);
-}
 void main() {
-  reflect_a8baf2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_a8baf2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_a8baf2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_a8baf2() {
-  vec3 res = vec3(-5.0f);
-}
-void main() {
-  reflect_a8baf2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_a8baf2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_a8baf2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.glsl
index ae8f299..5eaa075 100644
--- a/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/b61e10.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 reflect_b61e10() {
+  vec2 res = vec2(-3.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = reflect_b61e10();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 reflect_b61e10() {
+  vec2 res = vec2(-3.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reflect_b61e10();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 reflect_b61e10() {
   vec2 res = vec2(-3.0f);
   return res;
 }
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_b61e10();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 reflect_b61e10() {
-  vec2 res = vec2(-3.0f);
-  return res;
-}
 void main() {
-  prevent_dce = reflect_b61e10();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_b61e10();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 reflect_b61e10() {
-  vec2 res = vec2(-3.0f);
-  return res;
-}
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_b61e10();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.glsl
index 2a0838e..248aa90 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 reflect_bb15ac() {
   f16vec2 res = f16vec2(-3.0hf);
   return res;
 }
 void main() {
-  prevent_dce = reflect_bb15ac();
+  v.tint_symbol = reflect_bb15ac();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_bb15ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 reflect_bb15ac() {
   f16vec2 res = f16vec2(-3.0hf);
   return res;
 }
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_bb15ac();
+  v.tint_symbol = reflect_bb15ac();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_bb15ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 reflect_bb15ac() {
   f16vec2 res = f16vec2(-3.0hf);
   return res;
 }
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_bb15ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.glsl
index bd6e012..d28b1a7 100644
--- a/test/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/bba2d0.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void reflect_bba2d0() {
+  vec2 res = vec2(-3.0f);
+}
+void main() {
+  reflect_bba2d0();
+}
+#version 310 es
+
+void reflect_bba2d0() {
+  vec2 res = vec2(-3.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  reflect_bba2d0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void reflect_bba2d0() {
   vec2 res = vec2(-3.0f);
 }
-void main() {
-  reflect_bba2d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_bba2d0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   reflect_bba2d0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_bba2d0() {
-  vec2 res = vec2(-3.0f);
-}
 void main() {
-  reflect_bba2d0();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_bba2d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_bba2d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_bba2d0() {
-  vec2 res = vec2(-3.0f);
-}
-void main() {
-  reflect_bba2d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_bba2d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_bba2d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.glsl
index 599552f..252e52f 100644
--- a/test/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/d7e210.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void reflect_d7e210() {
+  vec4 res = vec4(-7.0f);
+}
+void main() {
+  reflect_d7e210();
+}
+#version 310 es
+
+void reflect_d7e210() {
+  vec4 res = vec4(-7.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  reflect_d7e210();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void reflect_d7e210() {
   vec4 res = vec4(-7.0f);
 }
-void main() {
-  reflect_d7e210();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_d7e210();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   reflect_d7e210();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_d7e210() {
-  vec4 res = vec4(-7.0f);
-}
 void main() {
-  reflect_d7e210();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_d7e210();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_d7e210();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_d7e210() {
-  vec4 res = vec4(-7.0f);
-}
-void main() {
-  reflect_d7e210();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_d7e210();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_d7e210();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.glsl
index 7d2bcaf..521ca2e 100644
--- a/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reflect/f47fdb.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 reflect_f47fdb() {
+  vec3 res = vec3(-5.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = reflect_f47fdb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 reflect_f47fdb() {
+  vec3 res = vec3(-5.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reflect_f47fdb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 reflect_f47fdb() {
   vec3 res = vec3(-5.0f);
   return res;
 }
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_f47fdb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 reflect_f47fdb() {
-  vec3 res = vec3(-5.0f);
-  return res;
-}
 void main() {
-  prevent_dce = reflect_f47fdb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_f47fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 reflect_f47fdb() {
-  vec3 res = vec3(-5.0f);
-  return res;
-}
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_f47fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.glsl
index bb1590e..92a31f4 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 refract_0594ba() {
   f16vec4 res = f16vec4(-7.0hf);
   return res;
 }
 void main() {
-  prevent_dce = refract_0594ba();
+  v.tint_symbol = refract_0594ba();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_0594ba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_0594ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 refract_0594ba() {
   f16vec4 res = f16vec4(-7.0hf);
   return res;
 }
-void main() {
-  prevent_dce = refract_0594ba();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_0594ba();
+  v.tint_symbol = refract_0594ba();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_0594ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 refract_0594ba() {
   f16vec4 res = f16vec4(-7.0hf);
   return res;
 }
-void main() {
-  prevent_dce = refract_0594ba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_0594ba();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_0594ba();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.glsl
index 28cc7e9..f0121a5 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 refract_570cb3() {
   f16vec2 res = f16vec2(-3.0hf);
   return res;
 }
 void main() {
-  prevent_dce = refract_570cb3();
+  v.tint_symbol = refract_570cb3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_570cb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_570cb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 refract_570cb3() {
   f16vec2 res = f16vec2(-3.0hf);
   return res;
 }
-void main() {
-  prevent_dce = refract_570cb3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_570cb3();
+  v.tint_symbol = refract_570cb3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_570cb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 refract_570cb3() {
   f16vec2 res = f16vec2(-3.0hf);
   return res;
 }
-void main() {
-  prevent_dce = refract_570cb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_570cb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_570cb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.glsl
index 6c67dc4..b985770 100644
--- a/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/7e02e6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 refract_7e02e6() {
+  vec4 res = vec4(-7.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = refract_7e02e6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 refract_7e02e6() {
+  vec4 res = vec4(-7.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = refract_7e02e6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 refract_7e02e6() {
   vec4 res = vec4(-7.0f);
   return res;
 }
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_7e02e6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 refract_7e02e6() {
-  vec4 res = vec4(-7.0f);
-  return res;
-}
 void main() {
-  prevent_dce = refract_7e02e6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_7e02e6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 refract_7e02e6() {
-  vec4 res = vec4(-7.0f);
-  return res;
-}
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_7e02e6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.glsl
index a8e3a3d..b10122f 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 refract_8984af() {
   f16vec3 res = f16vec3(-5.0hf);
   return res;
 }
 void main() {
-  prevent_dce = refract_8984af();
+  v.tint_symbol = refract_8984af();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_8984af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_8984af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 refract_8984af() {
   f16vec3 res = f16vec3(-5.0hf);
   return res;
 }
-void main() {
-  prevent_dce = refract_8984af();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_8984af();
+  v.tint_symbol = refract_8984af();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_8984af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 refract_8984af() {
   f16vec3 res = f16vec3(-5.0hf);
   return res;
 }
-void main() {
-  prevent_dce = refract_8984af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_8984af();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_8984af();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.glsl
index 41dd891..cd5d173 100644
--- a/test/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/8c192a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void refract_8c192a() {
+  vec4 res = vec4(-7.0f);
+}
+void main() {
+  refract_8c192a();
+}
+#version 310 es
+
+void refract_8c192a() {
+  vec4 res = vec4(-7.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  refract_8c192a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void refract_8c192a() {
   vec4 res = vec4(-7.0f);
 }
-void main() {
-  refract_8c192a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_8c192a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   refract_8c192a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_8c192a() {
-  vec4 res = vec4(-7.0f);
-}
 void main() {
-  refract_8c192a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_8c192a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_8c192a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_8c192a() {
-  vec4 res = vec4(-7.0f);
-}
-void main() {
-  refract_8c192a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_8c192a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_8c192a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.glsl
index b1406d3..e2f5920 100644
--- a/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/cbc1d2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 refract_cbc1d2() {
+  vec3 res = vec3(-5.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = refract_cbc1d2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 refract_cbc1d2() {
+  vec3 res = vec3(-5.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = refract_cbc1d2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 refract_cbc1d2() {
   vec3 res = vec3(-5.0f);
   return res;
 }
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_cbc1d2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 refract_cbc1d2() {
-  vec3 res = vec3(-5.0f);
-  return res;
-}
 void main() {
-  prevent_dce = refract_cbc1d2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cbc1d2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 refract_cbc1d2() {
-  vec3 res = vec3(-5.0f);
-  return res;
-}
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cbc1d2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.glsl
index 7254299..d5a1f4e 100644
--- a/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/cd905f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 refract_cd905f() {
+  vec2 res = vec2(-3.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = refract_cd905f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 refract_cd905f() {
+  vec2 res = vec2(-3.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = refract_cd905f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 refract_cd905f() {
   vec2 res = vec2(-3.0f);
   return res;
 }
-void main() {
-  prevent_dce = refract_cd905f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cd905f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_cd905f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 refract_cd905f() {
-  vec2 res = vec2(-3.0f);
-  return res;
-}
 void main() {
-  prevent_dce = refract_cd905f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cd905f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cd905f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 refract_cd905f() {
-  vec2 res = vec2(-3.0f);
-  return res;
-}
-void main() {
-  prevent_dce = refract_cd905f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cd905f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cd905f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.glsl
index 62189d7..7c09c6c 100644
--- a/test/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/cf1629.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void refract_cf1629() {
+  vec2 res = vec2(-3.0f);
+}
+void main() {
+  refract_cf1629();
+}
+#version 310 es
+
+void refract_cf1629() {
+  vec2 res = vec2(-3.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  refract_cf1629();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void refract_cf1629() {
   vec2 res = vec2(-3.0f);
 }
-void main() {
-  refract_cf1629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_cf1629();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   refract_cf1629();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_cf1629() {
-  vec2 res = vec2(-3.0f);
-}
 void main() {
-  refract_cf1629();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_cf1629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_cf1629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_cf1629() {
-  vec2 res = vec2(-3.0f);
-}
-void main() {
-  refract_cf1629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_cf1629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_cf1629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.glsl
index 02a7c4b..d96b8c9 100644
--- a/test/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/refract/d7569b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void refract_d7569b() {
+  vec3 res = vec3(-5.0f);
+}
+void main() {
+  refract_d7569b();
+}
+#version 310 es
+
+void refract_d7569b() {
+  vec3 res = vec3(-5.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  refract_d7569b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void refract_d7569b() {
   vec3 res = vec3(-5.0f);
 }
-void main() {
-  refract_d7569b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_d7569b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   refract_d7569b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_d7569b() {
-  vec3 res = vec3(-5.0f);
-}
 void main() {
-  refract_d7569b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_d7569b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_d7569b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_d7569b() {
-  vec3 res = vec3(-5.0f);
-}
-void main() {
-  refract_d7569b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_d7569b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_d7569b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.glsl
index 860e862..214cc02 100644
--- a/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/222177.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 reverseBits_222177() {
+  ivec2 res = ivec2((-2147483647 - 1));
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_222177();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 reverseBits_222177() {
+  ivec2 res = ivec2((-2147483647 - 1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_222177();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 reverseBits_222177() {
   ivec2 res = ivec2((-2147483647 - 1));
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_222177();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 reverseBits_222177() {
-  ivec2 res = ivec2((-2147483647 - 1));
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_222177();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_222177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 reverseBits_222177() {
-  ivec2 res = ivec2((-2147483647 - 1));
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_222177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.glsl
index 68ff893..133a53b 100644
--- a/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/35fea9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 reverseBits_35fea9() {
+  uvec4 res = uvec4(2147483648u);
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_35fea9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 reverseBits_35fea9() {
+  uvec4 res = uvec4(2147483648u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_35fea9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 reverseBits_35fea9() {
   uvec4 res = uvec4(2147483648u);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_35fea9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 reverseBits_35fea9() {
-  uvec4 res = uvec4(2147483648u);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_35fea9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_35fea9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 reverseBits_35fea9() {
-  uvec4 res = uvec4(2147483648u);
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_35fea9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.glsl
index 4c2cf26..2f093e923 100644
--- a/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/4dbd6f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 reverseBits_4dbd6f() {
+  ivec4 res = ivec4((-2147483647 - 1));
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_4dbd6f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 reverseBits_4dbd6f() {
+  ivec4 res = ivec4((-2147483647 - 1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_4dbd6f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 reverseBits_4dbd6f() {
   ivec4 res = ivec4((-2147483647 - 1));
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_4dbd6f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 reverseBits_4dbd6f() {
-  ivec4 res = ivec4((-2147483647 - 1));
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_4dbd6f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_4dbd6f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 reverseBits_4dbd6f() {
-  ivec4 res = ivec4((-2147483647 - 1));
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_4dbd6f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.glsl
index a0a77d0..178fbd1 100644
--- a/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/7c4269.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int reverseBits_7c4269() {
+  int res = (-2147483647 - 1);
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_7c4269();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int reverseBits_7c4269() {
+  int res = (-2147483647 - 1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_7c4269();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int reverseBits_7c4269() {
   int res = (-2147483647 - 1);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_7c4269();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int reverseBits_7c4269() {
-  int res = (-2147483647 - 1);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_7c4269();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_7c4269();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int reverseBits_7c4269() {
-  int res = (-2147483647 - 1);
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_7c4269();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.glsl
index 97d06a6..3774f09 100644
--- a/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/a6ccd4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 reverseBits_a6ccd4() {
+  uvec3 res = uvec3(2147483648u);
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_a6ccd4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 reverseBits_a6ccd4() {
+  uvec3 res = uvec3(2147483648u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_a6ccd4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 reverseBits_a6ccd4() {
   uvec3 res = uvec3(2147483648u);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_a6ccd4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 reverseBits_a6ccd4() {
-  uvec3 res = uvec3(2147483648u);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_a6ccd4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_a6ccd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 reverseBits_a6ccd4() {
-  uvec3 res = uvec3(2147483648u);
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_a6ccd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.glsl
index 6eca974..8798af1 100644
--- a/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/c21bc1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 reverseBits_c21bc1() {
+  ivec3 res = ivec3((-2147483647 - 1));
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_c21bc1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 reverseBits_c21bc1() {
+  ivec3 res = ivec3((-2147483647 - 1));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_c21bc1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 reverseBits_c21bc1() {
   ivec3 res = ivec3((-2147483647 - 1));
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_c21bc1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 reverseBits_c21bc1() {
-  ivec3 res = ivec3((-2147483647 - 1));
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_c21bc1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_c21bc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 reverseBits_c21bc1() {
-  ivec3 res = ivec3((-2147483647 - 1));
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_c21bc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.glsl
index d09dcaf..2ee7244 100644
--- a/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/e1f4c1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 reverseBits_e1f4c1() {
+  uvec2 res = uvec2(2147483648u);
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_e1f4c1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 reverseBits_e1f4c1() {
+  uvec2 res = uvec2(2147483648u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_e1f4c1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 reverseBits_e1f4c1() {
   uvec2 res = uvec2(2147483648u);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_e1f4c1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 reverseBits_e1f4c1() {
-  uvec2 res = uvec2(2147483648u);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_e1f4c1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e1f4c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 reverseBits_e1f4c1() {
-  uvec2 res = uvec2(2147483648u);
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e1f4c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.glsl
index d5f51f4..c32ad35 100644
--- a/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/reverseBits/e31adf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint reverseBits_e31adf() {
+  uint res = 2147483648u;
+  return res;
+}
+void main() {
+  v.tint_symbol = reverseBits_e31adf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint reverseBits_e31adf() {
+  uint res = 2147483648u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = reverseBits_e31adf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint reverseBits_e31adf() {
   uint res = 2147483648u;
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_e31adf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint reverseBits_e31adf() {
-  uint res = 2147483648u;
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_e31adf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e31adf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint reverseBits_e31adf() {
-  uint res = 2147483648u;
-  return res;
-}
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e31adf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.glsl
index 46f72be..ba8119d 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 round_106c0b() {
+  vec4 res = vec4(4.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = round_106c0b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 round_106c0b() {
+  vec4 res = vec4(4.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = round_106c0b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 round_106c0b() {
   vec4 res = vec4(4.0f);
   return res;
 }
-void main() {
-  prevent_dce = round_106c0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_106c0b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_106c0b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 round_106c0b() {
-  vec4 res = vec4(4.0f);
-  return res;
-}
 void main() {
-  prevent_dce = round_106c0b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_106c0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_106c0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 round_106c0b() {
-  vec4 res = vec4(4.0f);
-  return res;
-}
-void main() {
-  prevent_dce = round_106c0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_106c0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_106c0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.glsl
index bb9b841..df7edc4 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_184d5a() {
+  vec4 res = vec4(4.0f);
+}
+void main() {
+  round_184d5a();
+}
+#version 310 es
+
+void round_184d5a() {
+  vec4 res = vec4(4.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_184d5a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_184d5a() {
   vec4 res = vec4(4.0f);
 }
-void main() {
-  round_184d5a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_184d5a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_184d5a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_184d5a() {
-  vec4 res = vec4(4.0f);
-}
 void main() {
-  round_184d5a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_184d5a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_184d5a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_184d5a() {
-  vec4 res = vec4(4.0f);
-}
-void main() {
-  round_184d5a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_184d5a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_184d5a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.glsl
index c9e207b..c2a6e95 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 round_1c7897() {
+  vec3 res = vec3(4.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = round_1c7897();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 round_1c7897() {
+  vec3 res = vec3(4.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = round_1c7897();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 round_1c7897() {
   vec3 res = vec3(4.0f);
   return res;
 }
-void main() {
-  prevent_dce = round_1c7897();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_1c7897();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_1c7897();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 round_1c7897() {
-  vec3 res = vec3(4.0f);
-  return res;
-}
 void main() {
-  prevent_dce = round_1c7897();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_1c7897();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_1c7897();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 round_1c7897() {
-  vec3 res = vec3(4.0f);
-  return res;
-}
-void main() {
-  prevent_dce = round_1c7897();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_1c7897();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_1c7897();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.glsl
index e36d6ff..9e7ba05 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 round_52c84d() {
+  vec2 res = vec2(4.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = round_52c84d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 round_52c84d() {
+  vec2 res = vec2(4.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = round_52c84d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 round_52c84d() {
   vec2 res = vec2(4.0f);
   return res;
 }
-void main() {
-  prevent_dce = round_52c84d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_52c84d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_52c84d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 round_52c84d() {
-  vec2 res = vec2(4.0f);
-  return res;
-}
 void main() {
-  prevent_dce = round_52c84d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_52c84d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_52c84d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 round_52c84d() {
-  vec2 res = vec2(4.0f);
-  return res;
-}
-void main() {
-  prevent_dce = round_52c84d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_52c84d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_52c84d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.glsl
index d9df725..5ca3936 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_773a8f() {
+  float res = 4.0f;
+}
+void main() {
+  round_773a8f();
+}
+#version 310 es
+
+void round_773a8f() {
+  float res = 4.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_773a8f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_773a8f() {
   float res = 4.0f;
 }
-void main() {
-  round_773a8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_773a8f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_773a8f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_773a8f() {
-  float res = 4.0f;
-}
 void main() {
-  round_773a8f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_773a8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_773a8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_773a8f() {
-  float res = 4.0f;
-}
-void main() {
-  round_773a8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_773a8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_773a8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.glsl
index ecf4071..bf91065 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_8fdca3() {
+  vec2 res = vec2(4.0f);
+}
+void main() {
+  round_8fdca3();
+}
+#version 310 es
+
+void round_8fdca3() {
+  vec2 res = vec2(4.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_8fdca3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_8fdca3() {
   vec2 res = vec2(4.0f);
 }
-void main() {
-  round_8fdca3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_8fdca3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_8fdca3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_8fdca3() {
-  vec2 res = vec2(4.0f);
-}
 void main() {
-  round_8fdca3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_8fdca3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_8fdca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_8fdca3() {
-  vec2 res = vec2(4.0f);
-}
-void main() {
-  round_8fdca3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_8fdca3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_8fdca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.glsl
index eb7e14c..518f9aa 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t round_9078ef() {
   float16_t res = 4.0hf;
   return res;
 }
 void main() {
-  prevent_dce = round_9078ef();
+  v.tint_symbol = round_9078ef();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9078ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9078ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t round_9078ef() {
   float16_t res = 4.0hf;
   return res;
 }
-void main() {
-  prevent_dce = round_9078ef();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_9078ef();
+  v.tint_symbol = round_9078ef();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9078ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t round_9078ef() {
   float16_t res = 4.0hf;
   return res;
 }
-void main() {
-  prevent_dce = round_9078ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9078ef();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_9078ef();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.glsl
index ff8a385..0543223 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float round_9edc38() {
+  float res = 4.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = round_9edc38();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float round_9edc38() {
+  float res = 4.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = round_9edc38();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float round_9edc38() {
   float res = 4.0f;
   return res;
 }
-void main() {
-  prevent_dce = round_9edc38();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9edc38();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_9edc38();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float round_9edc38() {
-  float res = 4.0f;
-  return res;
-}
 void main() {
-  prevent_dce = round_9edc38();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9edc38();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9edc38();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float round_9edc38() {
-  float res = 4.0f;
-  return res;
-}
-void main() {
-  prevent_dce = round_9edc38();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9edc38();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9edc38();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.glsl
index 76e388a..2f1623e 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_a1673d() {
+  vec3 res = vec3(4.0f);
+}
+void main() {
+  round_a1673d();
+}
+#version 310 es
+
+void round_a1673d() {
+  vec3 res = vec3(4.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_a1673d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_a1673d() {
   vec3 res = vec3(4.0f);
 }
-void main() {
-  round_a1673d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_a1673d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_a1673d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_a1673d() {
-  vec3 res = vec3(4.0f);
-}
 void main() {
-  round_a1673d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_a1673d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_a1673d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_a1673d() {
-  vec3 res = vec3(4.0f);
-}
-void main() {
-  round_a1673d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_a1673d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_a1673d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.glsl
index d67f3e6..e21499a 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 round_d87e84() {
   f16vec2 res = f16vec2(4.0hf);
   return res;
 }
 void main() {
-  prevent_dce = round_d87e84();
+  v.tint_symbol = round_d87e84();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_d87e84();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_d87e84();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 round_d87e84() {
   f16vec2 res = f16vec2(4.0hf);
   return res;
 }
-void main() {
-  prevent_dce = round_d87e84();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_d87e84();
+  v.tint_symbol = round_d87e84();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_d87e84();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 round_d87e84() {
   f16vec2 res = f16vec2(4.0hf);
   return res;
 }
-void main() {
-  prevent_dce = round_d87e84();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_d87e84();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_d87e84();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.glsl
index 25ffd20..850f86f 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 round_e1bba2() {
   f16vec3 res = f16vec3(4.0hf);
   return res;
 }
 void main() {
-  prevent_dce = round_e1bba2();
+  v.tint_symbol = round_e1bba2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_e1bba2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_e1bba2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 round_e1bba2() {
   f16vec3 res = f16vec3(4.0hf);
   return res;
 }
-void main() {
-  prevent_dce = round_e1bba2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_e1bba2();
+  v.tint_symbol = round_e1bba2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_e1bba2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 round_e1bba2() {
   f16vec3 res = f16vec3(4.0hf);
   return res;
 }
-void main() {
-  prevent_dce = round_e1bba2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_e1bba2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_e1bba2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.glsl
index e8b28a8..00820a8 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 round_f665b5() {
   f16vec4 res = f16vec4(4.0hf);
   return res;
 }
 void main() {
-  prevent_dce = round_f665b5();
+  v.tint_symbol = round_f665b5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_f665b5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_f665b5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 round_f665b5() {
   f16vec4 res = f16vec4(4.0hf);
   return res;
 }
-void main() {
-  prevent_dce = round_f665b5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_f665b5();
+  v.tint_symbol = round_f665b5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_f665b5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 round_f665b5() {
   f16vec4 res = f16vec4(4.0hf);
   return res;
 }
-void main() {
-  prevent_dce = round_f665b5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_f665b5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_f665b5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.glsl
index 8d05de5..0395c85 100644
--- a/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/270da5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float saturate_270da5() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = saturate_270da5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float saturate_270da5() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = saturate_270da5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float saturate_270da5() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = saturate_270da5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_270da5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_270da5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float saturate_270da5() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = saturate_270da5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_270da5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_270da5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float saturate_270da5() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = saturate_270da5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_270da5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_270da5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.glsl
index 4a2c64c..e824af9 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 saturate_462535() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = saturate_462535();
+  v.tint_symbol = saturate_462535();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_462535();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_462535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 saturate_462535() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_462535();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_462535();
+  v.tint_symbol = saturate_462535();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_462535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 saturate_462535() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_462535();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_462535();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_462535();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.glsl
index a10c342..4a4d116 100644
--- a/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_4ed8d7() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  saturate_4ed8d7();
+}
+#version 310 es
+
+void saturate_4ed8d7() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_4ed8d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_4ed8d7() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  saturate_4ed8d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_4ed8d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_4ed8d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_4ed8d7() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  saturate_4ed8d7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_4ed8d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_4ed8d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_4ed8d7() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  saturate_4ed8d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_4ed8d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_4ed8d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.glsl
index cced356..9ec6c77 100644
--- a/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/51567f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 saturate_51567f() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = saturate_51567f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 saturate_51567f() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = saturate_51567f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 saturate_51567f() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = saturate_51567f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_51567f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_51567f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 saturate_51567f() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = saturate_51567f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_51567f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_51567f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 saturate_51567f() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = saturate_51567f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_51567f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_51567f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.glsl
index 7bf2886..6b3072f 100644
--- a/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/6bcddf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 saturate_6bcddf() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = saturate_6bcddf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 saturate_6bcddf() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = saturate_6bcddf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 saturate_6bcddf() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_6bcddf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 saturate_6bcddf() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = saturate_6bcddf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_6bcddf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 saturate_6bcddf() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_6bcddf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.glsl
index ab7cdc8..a0e1389 100644
--- a/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_78b37c() {
+  float res = 1.0f;
+}
+void main() {
+  saturate_78b37c();
+}
+#version 310 es
+
+void saturate_78b37c() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_78b37c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_78b37c() {
   float res = 1.0f;
 }
-void main() {
-  saturate_78b37c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_78b37c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_78b37c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_78b37c() {
-  float res = 1.0f;
-}
 void main() {
-  saturate_78b37c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_78b37c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_78b37c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_78b37c() {
-  float res = 1.0f;
-}
-void main() {
-  saturate_78b37c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_78b37c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_78b37c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.glsl
index 7a433e4..2ea32e5 100644
--- a/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/a5b571.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 saturate_a5b571() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = saturate_a5b571();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 saturate_a5b571() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = saturate_a5b571();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 saturate_a5b571() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_a5b571();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 saturate_a5b571() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = saturate_a5b571();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_a5b571();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 saturate_a5b571() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_a5b571();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.glsl
index aa13ec8..abb28b4 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 saturate_cd2028() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = saturate_cd2028();
+  v.tint_symbol = saturate_cd2028();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_cd2028();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_cd2028();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 saturate_cd2028() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_cd2028();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_cd2028();
+  v.tint_symbol = saturate_cd2028();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_cd2028();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 saturate_cd2028() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_cd2028();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_cd2028();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_cd2028();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.glsl
index ad4b630..6de7e06 100644
--- a/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_d55822() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  saturate_d55822();
+}
+#version 310 es
+
+void saturate_d55822() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_d55822();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_d55822() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  saturate_d55822();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_d55822();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_d55822();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_d55822() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  saturate_d55822();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_d55822();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_d55822();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_d55822() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  saturate_d55822();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_d55822();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_d55822();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.glsl
index de33aab..9e3f9af 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 saturate_dcde71() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = saturate_dcde71();
+  v.tint_symbol = saturate_dcde71();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_dcde71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_dcde71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 saturate_dcde71() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_dcde71();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_dcde71();
+  v.tint_symbol = saturate_dcde71();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_dcde71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 saturate_dcde71() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_dcde71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_dcde71();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_dcde71();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.glsl
index 78bbea2..5c65e39 100644
--- a/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_e40fb6() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  saturate_e40fb6();
+}
+#version 310 es
+
+void saturate_e40fb6() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_e40fb6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_e40fb6() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  saturate_e40fb6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_e40fb6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_e40fb6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_e40fb6() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  saturate_e40fb6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_e40fb6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_e40fb6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_e40fb6() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  saturate_e40fb6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_e40fb6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_e40fb6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.glsl
index 704791f..fd6ea4c 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t saturate_e8df56() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = saturate_e8df56();
+  v.tint_symbol = saturate_e8df56();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_e8df56();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_e8df56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t saturate_e8df56() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = saturate_e8df56();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_e8df56();
+  v.tint_symbol = saturate_e8df56();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_e8df56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t saturate_e8df56() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = saturate_e8df56();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_e8df56();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_e8df56();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.glsl
index 815cc2b..2702795 100644
--- a/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/00b848.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 select_00b848() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_00b848();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 select_00b848() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_00b848();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 select_00b848() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = select_00b848();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_00b848();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_00b848();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 select_00b848() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = select_00b848();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_00b848();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_00b848();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 select_00b848() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = select_00b848();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_00b848();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_00b848();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.glsl
index 8279b5a..2c2b71b 100644
--- a/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/01e2cd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 select_01e2cd() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_01e2cd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 select_01e2cd() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_01e2cd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 select_01e2cd() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = select_01e2cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_01e2cd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_01e2cd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 select_01e2cd() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = select_01e2cd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_01e2cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_01e2cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 select_01e2cd() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = select_01e2cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_01e2cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_01e2cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.glsl
index cc62210f..78b17eb 100644
--- a/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/087ea4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 select_087ea4() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_087ea4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 select_087ea4() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_087ea4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 select_087ea4() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = select_087ea4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_087ea4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_087ea4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 select_087ea4() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = select_087ea4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_087ea4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_087ea4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 select_087ea4() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = select_087ea4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_087ea4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_087ea4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.glsl
index 0c41f5f..e89f741 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_089657() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  select_089657();
+}
+#version 310 es
+
+void select_089657() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_089657();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_089657() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  select_089657();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_089657();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_089657();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_089657() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  select_089657();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_089657();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_089657();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_089657() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  select_089657();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_089657();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_089657();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.glsl
index f287783..3db5ead 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t select_10e73b() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = select_10e73b();
+  v.tint_symbol = select_10e73b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_10e73b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_10e73b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t select_10e73b() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = select_10e73b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_10e73b();
+  v.tint_symbol = select_10e73b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_10e73b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t select_10e73b() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = select_10e73b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_10e73b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_10e73b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.glsl
index 346b8fd..6d29974 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_17441a() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  select_17441a();
+}
+#version 310 es
+
+void select_17441a() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_17441a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_17441a() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  select_17441a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_17441a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_17441a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_17441a() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  select_17441a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_17441a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_17441a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_17441a() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  select_17441a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_17441a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_17441a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.glsl
index 08789a6..2c3ecbc 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 select_1ada2a() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = select_1ada2a();
+  v.tint_symbol = select_1ada2a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_1ada2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_1ada2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 select_1ada2a() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_1ada2a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_1ada2a();
+  v.tint_symbol = select_1ada2a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_1ada2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 select_1ada2a() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_1ada2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_1ada2a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_1ada2a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.glsl
index b03e537..e66342d 100644
--- a/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/1e960b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 select_1e960b() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_1e960b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 select_1e960b() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_1e960b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 select_1e960b() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = select_1e960b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_1e960b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_1e960b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 select_1e960b() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = select_1e960b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_1e960b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_1e960b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 select_1e960b() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = select_1e960b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_1e960b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_1e960b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.glsl
index 8cd9b7e..78c426e 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_1f4d93() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  select_1f4d93();
+}
+#version 310 es
+
+void select_1f4d93() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_1f4d93();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_1f4d93() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  select_1f4d93();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_1f4d93();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_1f4d93();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_1f4d93() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  select_1f4d93();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_1f4d93();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_1f4d93();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_1f4d93() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  select_1f4d93();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_1f4d93();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_1f4d93();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.glsl
index 9a41444..02235c9 100644
--- a/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/266aff.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 select_266aff() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_266aff();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 select_266aff() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_266aff();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 select_266aff() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = select_266aff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_266aff();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_266aff();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 select_266aff() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = select_266aff();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_266aff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_266aff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 select_266aff() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = select_266aff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_266aff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_266aff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.glsl
index c4e1555..502c50a 100644
--- a/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/28a27e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 select_28a27e() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_28a27e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 select_28a27e() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_28a27e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 select_28a27e() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = select_28a27e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_28a27e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_28a27e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 select_28a27e() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = select_28a27e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_28a27e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_28a27e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 select_28a27e() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = select_28a27e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_28a27e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_28a27e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.glsl
index af43fd4..c01268d 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_2c96d4() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  select_2c96d4();
+}
+#version 310 es
+
+void select_2c96d4() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_2c96d4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_2c96d4() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  select_2c96d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_2c96d4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_2c96d4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_2c96d4() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  select_2c96d4();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_2c96d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_2c96d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_2c96d4() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  select_2c96d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_2c96d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_2c96d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.glsl
index 8fcf36e..b1ca08d 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_3a14be() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  select_3a14be();
+}
+#version 310 es
+
+void select_3a14be() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_3a14be();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_3a14be() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  select_3a14be();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_3a14be();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_3a14be();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_3a14be() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  select_3a14be();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_3a14be();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_3a14be();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_3a14be() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  select_3a14be();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_3a14be();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_3a14be();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.glsl
index dd411c9..d8db3df 100644
--- a/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/416e14.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float select_416e14() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = select_416e14();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float select_416e14() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_416e14();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float select_416e14() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = select_416e14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_416e14();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_416e14();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float select_416e14() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = select_416e14();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_416e14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_416e14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float select_416e14() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = select_416e14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_416e14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_416e14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.glsl
index 33452c4..c9d6126 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_431dfb() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  select_431dfb();
+}
+#version 310 es
+
+void select_431dfb() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_431dfb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_431dfb() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  select_431dfb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_431dfb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_431dfb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_431dfb() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  select_431dfb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_431dfb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_431dfb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_431dfb() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  select_431dfb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_431dfb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_431dfb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.glsl
index dee770b..ada0def 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_43741e() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  select_43741e();
+}
+#version 310 es
+
+void select_43741e() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_43741e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_43741e() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  select_43741e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_43741e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_43741e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_43741e() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  select_43741e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_43741e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_43741e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_43741e() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  select_43741e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_43741e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_43741e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.glsl
index 3a81a3a..cc4e8e5 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_494051() {
+  float res = 1.0f;
+}
+void main() {
+  select_494051();
+}
+#version 310 es
+
+void select_494051() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_494051();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_494051() {
   float res = 1.0f;
 }
-void main() {
-  select_494051();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_494051();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_494051();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_494051() {
-  float res = 1.0f;
-}
 void main() {
-  select_494051();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_494051();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_494051();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_494051() {
-  float res = 1.0f;
-}
-void main() {
-  select_494051();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_494051();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_494051();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.glsl
index 5721644..30efc23 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_4c4738() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  select_4c4738();
+}
+#version 310 es
+
+void select_4c4738() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_4c4738();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_4c4738() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  select_4c4738();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_4c4738();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_4c4738();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_4c4738() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  select_4c4738();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_4c4738();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_4c4738();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_4c4738() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  select_4c4738();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_4c4738();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_4c4738();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.glsl
index 4faad2e..52c49f6 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_4e60da() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  select_4e60da();
+}
+#version 310 es
+
+void select_4e60da() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_4e60da();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_4e60da() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  select_4e60da();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_4e60da();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_4e60da();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_4e60da() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  select_4e60da();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_4e60da();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_4e60da();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_4e60da() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  select_4e60da();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_4e60da();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_4e60da();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.glsl
index 7e881cc..e0481d4 100644
--- a/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/51b047.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 select_51b047() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_51b047();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 select_51b047() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_51b047();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 select_51b047() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = select_51b047();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_51b047();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_51b047();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 select_51b047() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = select_51b047();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_51b047();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_51b047();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 select_51b047() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = select_51b047();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_51b047();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_51b047();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.glsl
index 1ff431e..7e0d03c 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 select_53d518() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = select_53d518();
+  v.tint_symbol = select_53d518();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_53d518();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_53d518();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 select_53d518() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_53d518();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_53d518();
+  v.tint_symbol = select_53d518();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_53d518();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 select_53d518() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_53d518();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_53d518();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_53d518();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.glsl
index 7bbaa5a..d59540a 100644
--- a/test/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/713567.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 select_713567() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_713567();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 select_713567() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_713567();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 select_713567() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = select_713567();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_713567();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_713567();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 select_713567() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = select_713567();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_713567();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_713567();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 select_713567() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = select_713567();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_713567();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_713567();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.glsl
index fca2f43..c14d61c 100644
--- a/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/78be5f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 select_78be5f() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_78be5f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 select_78be5f() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_78be5f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 select_78be5f() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = select_78be5f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_78be5f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_78be5f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 select_78be5f() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = select_78be5f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_78be5f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_78be5f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 select_78be5f() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = select_78be5f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_78be5f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_78be5f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.glsl
index 166a5ec..abd3940 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 select_830dd9() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = select_830dd9();
+  v.tint_symbol = select_830dd9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_830dd9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_830dd9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 select_830dd9() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_830dd9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_830dd9();
+  v.tint_symbol = select_830dd9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_830dd9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 select_830dd9() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_830dd9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_830dd9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_830dd9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.glsl
index 33aee40..929c9f1 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 select_86f9bd() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = select_86f9bd();
+  v.tint_symbol = select_86f9bd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_86f9bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_86f9bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 select_86f9bd() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_86f9bd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_86f9bd();
+  v.tint_symbol = select_86f9bd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_86f9bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 select_86f9bd() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_86f9bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_86f9bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_86f9bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.glsl
index 576c594..97053c8 100644
--- a/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/8fa62c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 select_8fa62c() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_8fa62c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 select_8fa62c() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_8fa62c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 select_8fa62c() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = select_8fa62c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_8fa62c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_8fa62c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 select_8fa62c() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = select_8fa62c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_8fa62c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_8fa62c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 select_8fa62c() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = select_8fa62c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_8fa62c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_8fa62c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.glsl
index fa9df30..c0f1c98 100644
--- a/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/99f883.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint select_99f883() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = select_99f883();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint select_99f883() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_99f883();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint select_99f883() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = select_99f883();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_99f883();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_99f883();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint select_99f883() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = select_99f883();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_99f883();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_99f883();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint select_99f883() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = select_99f883();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_99f883();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_99f883();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.glsl
index 49e3570..8253435 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_9b478d() {
+  int res = 1;
+}
+void main() {
+  select_9b478d();
+}
+#version 310 es
+
+void select_9b478d() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_9b478d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_9b478d() {
   int res = 1;
 }
-void main() {
-  select_9b478d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_9b478d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_9b478d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_9b478d() {
-  int res = 1;
-}
 void main() {
-  select_9b478d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_9b478d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_9b478d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_9b478d() {
-  int res = 1;
-}
-void main() {
-  select_9b478d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_9b478d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_9b478d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.glsl
index a26e4e8..913d806 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 select_a081f1() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = select_a081f1();
+  v.tint_symbol = select_a081f1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_a081f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_a081f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 select_a081f1() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_a081f1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_a081f1();
+  v.tint_symbol = select_a081f1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_a081f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 select_a081f1() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_a081f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_a081f1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_a081f1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.glsl
index 0264491..af32b0a 100644
--- a/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/a2860e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 select_a2860e() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_a2860e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 select_a2860e() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_a2860e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 select_a2860e() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = select_a2860e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_a2860e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_a2860e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 select_a2860e() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = select_a2860e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_a2860e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_a2860e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 select_a2860e() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = select_a2860e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_a2860e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_a2860e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.glsl
index 4e89948..0a3c2d1 100644
--- a/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/ab069f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 select_ab069f() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_ab069f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 select_ab069f() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_ab069f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 select_ab069f() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = select_ab069f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ab069f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_ab069f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 select_ab069f() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = select_ab069f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ab069f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ab069f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 select_ab069f() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = select_ab069f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ab069f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ab069f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.glsl
index 3c209aa..2e6a99b 100644
--- a/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/b04721.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 select_b04721() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_b04721();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 select_b04721() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_b04721();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 select_b04721() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = select_b04721();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_b04721();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_b04721();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 select_b04721() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = select_b04721();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_b04721();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_b04721();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 select_b04721() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = select_b04721();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_b04721();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_b04721();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.glsl
index 05361da..aa925f3 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_b93806() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  select_b93806();
+}
+#version 310 es
+
+void select_b93806() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_b93806();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_b93806() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  select_b93806();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_b93806();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_b93806();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_b93806() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  select_b93806();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_b93806();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_b93806();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_b93806() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  select_b93806();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_b93806();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_b93806();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.glsl
index cf319d5..9c3ec23 100644
--- a/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/bb447f.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 select_bb447f() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_bb447f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 select_bb447f() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_bb447f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 select_bb447f() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = select_bb447f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bb447f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_bb447f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 select_bb447f() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = select_bb447f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bb447f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_bb447f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 select_bb447f() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = select_bb447f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bb447f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_bb447f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.glsl
index 176713a..2dbfa50 100644
--- a/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/bb8aae.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 select_bb8aae() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_bb8aae();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 select_bb8aae() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_bb8aae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 select_bb8aae() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = select_bb8aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bb8aae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_bb8aae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 select_bb8aae() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = select_bb8aae();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bb8aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_bb8aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 select_bb8aae() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = select_bb8aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bb8aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_bb8aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.glsl
index 80fb9f7..17ce4b0 100644
--- a/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/bf3d29.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 select_bf3d29() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_bf3d29();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 select_bf3d29() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_bf3d29();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 select_bf3d29() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = select_bf3d29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bf3d29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_bf3d29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 select_bf3d29() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = select_bf3d29();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bf3d29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_bf3d29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 select_bf3d29() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = select_bf3d29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_bf3d29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_bf3d29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.glsl
index 4afd148..83a237d 100644
--- a/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/c4a4ef.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 select_c4a4ef() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_c4a4ef();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 select_c4a4ef() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_c4a4ef();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 select_c4a4ef() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = select_c4a4ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_c4a4ef();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_c4a4ef();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 select_c4a4ef() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = select_c4a4ef();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_c4a4ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_c4a4ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 select_c4a4ef() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = select_c4a4ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_c4a4ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_c4a4ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.glsl
index 651ae92..5c889ff 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_dfab3b() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  select_dfab3b();
+}
+#version 310 es
+
+void select_dfab3b() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_dfab3b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_dfab3b() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  select_dfab3b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_dfab3b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_dfab3b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_dfab3b() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  select_dfab3b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_dfab3b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_dfab3b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_dfab3b() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  select_dfab3b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_dfab3b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_dfab3b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.glsl
index 516d1c8..490aa02 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void select_e381c3() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  select_e381c3();
+}
+#version 310 es
+
+void select_e381c3() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  select_e381c3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void select_e381c3() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  select_e381c3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_e381c3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   select_e381c3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_e381c3() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  select_e381c3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_e381c3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_e381c3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void select_e381c3() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  select_e381c3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  select_e381c3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  select_e381c3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.glsl
index ad564c7..a0c9517 100644
--- a/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/ebfea2.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 select_ebfea2() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = select_ebfea2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 select_ebfea2() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_ebfea2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 select_ebfea2() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = select_ebfea2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ebfea2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_ebfea2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 select_ebfea2() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = select_ebfea2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ebfea2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ebfea2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 select_ebfea2() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = select_ebfea2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ebfea2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ebfea2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.glsl
index ff5b691..382f5e7 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 select_ed7c13() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = select_ed7c13();
+  v.tint_symbol = select_ed7c13();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ed7c13();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ed7c13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 select_ed7c13() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_ed7c13();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = select_ed7c13();
+  v.tint_symbol = select_ed7c13();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ed7c13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 select_ed7c13() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = select_ed7c13();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ed7c13();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_ed7c13();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.glsl
index 9ed0cac..bac9e86 100644
--- a/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/select/ed8a15.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int select_ed8a15() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = select_ed8a15();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int select_ed8a15() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = select_ed8a15();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int select_ed8a15() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = select_ed8a15();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ed8a15();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = select_ed8a15();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int select_ed8a15() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = select_ed8a15();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ed8a15();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ed8a15();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int select_ed8a15() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = select_ed8a15();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = select_ed8a15();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = select_ed8a15();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.glsl
index ddf1abe..1a6ae36 100644
--- a/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_0799fd() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  sign_0799fd();
+}
+#version 310 es
+
+void sign_0799fd() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_0799fd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_0799fd() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  sign_0799fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_0799fd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_0799fd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_0799fd() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  sign_0799fd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_0799fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_0799fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_0799fd() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  sign_0799fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_0799fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_0799fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.glsl
index f85664f..5d4f8f6 100644
--- a/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/159665.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sign_159665() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_159665();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sign_159665() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_159665();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sign_159665() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sign_159665();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_159665();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_159665();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sign_159665() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sign_159665();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_159665();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_159665();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sign_159665() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sign_159665();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_159665();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_159665();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.glsl
index 00a45fb..4101e56 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sign_160933() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = sign_160933();
+  v.tint_symbol = sign_160933();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_160933();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_160933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sign_160933() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sign_160933();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_160933();
+  v.tint_symbol = sign_160933();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_160933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sign_160933() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sign_160933();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_160933();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_160933();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.glsl
index 667e15b..b39c3f4 100644
--- a/test/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/3233fa.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int sign_3233fa() {
+  int res = 1;
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_3233fa();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int sign_3233fa() {
+  int res = 1;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_3233fa();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int sign_3233fa() {
   int res = 1;
   return res;
 }
-void main() {
-  prevent_dce = sign_3233fa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_3233fa();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_3233fa();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int sign_3233fa() {
-  int res = 1;
-  return res;
-}
 void main() {
-  prevent_dce = sign_3233fa();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_3233fa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_3233fa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int sign_3233fa() {
-  int res = 1;
-  return res;
-}
-void main() {
-  prevent_dce = sign_3233fa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_3233fa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_3233fa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.glsl
index 5dbf7ea..e0f3dd6 100644
--- a/test/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/3a39ac.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_3a39ac() {
+  int res = 1;
+}
+void main() {
+  sign_3a39ac();
+}
+#version 310 es
+
+void sign_3a39ac() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_3a39ac();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_3a39ac() {
   int res = 1;
 }
-void main() {
-  sign_3a39ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3a39ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_3a39ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3a39ac() {
-  int res = 1;
-}
 void main() {
-  sign_3a39ac();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3a39ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3a39ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3a39ac() {
-  int res = 1;
-}
-void main() {
-  sign_3a39ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3a39ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3a39ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.glsl
index 0f0a87c..9b04c3a 100644
--- a/test/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/3bdab6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_3bdab6() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  sign_3bdab6();
+}
+#version 310 es
+
+void sign_3bdab6() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_3bdab6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_3bdab6() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  sign_3bdab6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3bdab6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_3bdab6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3bdab6() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  sign_3bdab6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3bdab6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3bdab6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3bdab6() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  sign_3bdab6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3bdab6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3bdab6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.glsl
index 4ee1fef..257bb29 100644
--- a/test/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/55339e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_55339e() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  sign_55339e();
+}
+#version 310 es
+
+void sign_55339e() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_55339e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_55339e() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  sign_55339e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_55339e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_55339e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_55339e() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  sign_55339e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_55339e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_55339e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_55339e() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  sign_55339e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_55339e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_55339e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.glsl
index f73767a..586f8ae 100644
--- a/test/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/58d779.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 sign_58d779() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_58d779();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 sign_58d779() {
+  ivec4 res = ivec4(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_58d779();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 sign_58d779() {
   ivec4 res = ivec4(1);
   return res;
 }
-void main() {
-  prevent_dce = sign_58d779();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_58d779();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_58d779();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 sign_58d779() {
-  ivec4 res = ivec4(1);
-  return res;
-}
 void main() {
-  prevent_dce = sign_58d779();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_58d779();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_58d779();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 sign_58d779() {
-  ivec4 res = ivec4(1);
-  return res;
-}
-void main() {
-  prevent_dce = sign_58d779();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_58d779();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_58d779();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.glsl
index e12028e..339000f 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sign_5d283a() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = sign_5d283a();
+  v.tint_symbol = sign_5d283a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_5d283a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_5d283a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sign_5d283a() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sign_5d283a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_5d283a();
+  v.tint_symbol = sign_5d283a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_5d283a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sign_5d283a() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sign_5d283a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_5d283a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_5d283a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.glsl
index 23d7a44..eba8938 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sign_7c85ea() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = sign_7c85ea();
+  v.tint_symbol = sign_7c85ea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_7c85ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_7c85ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sign_7c85ea() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = sign_7c85ea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_7c85ea();
+  v.tint_symbol = sign_7c85ea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_7c85ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sign_7c85ea() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = sign_7c85ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_7c85ea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_7c85ea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.glsl
index 5eb7d0f..6d4377c 100644
--- a/test/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/926015.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 sign_926015() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_926015();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 sign_926015() {
+  ivec2 res = ivec2(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_926015();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 sign_926015() {
   ivec2 res = ivec2(1);
   return res;
 }
-void main() {
-  prevent_dce = sign_926015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_926015();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_926015();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 sign_926015() {
-  ivec2 res = ivec2(1);
-  return res;
-}
 void main() {
-  prevent_dce = sign_926015();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_926015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_926015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 sign_926015() {
-  ivec2 res = ivec2(1);
-  return res;
-}
-void main() {
-  prevent_dce = sign_926015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_926015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_926015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.glsl
index 12a56c4..6d08025 100644
--- a/test/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/943b2e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_943b2e() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  sign_943b2e();
+}
+#version 310 es
+
+void sign_943b2e() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_943b2e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_943b2e() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  sign_943b2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_943b2e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_943b2e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_943b2e() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  sign_943b2e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_943b2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_943b2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_943b2e() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  sign_943b2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_943b2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_943b2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.glsl
index 5c74fae..a4536cc 100644
--- a/test/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/9603b1.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 sign_9603b1() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_9603b1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 sign_9603b1() {
+  ivec3 res = ivec3(1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_9603b1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 sign_9603b1() {
   ivec3 res = ivec3(1);
   return res;
 }
-void main() {
-  prevent_dce = sign_9603b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_9603b1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_9603b1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 sign_9603b1() {
-  ivec3 res = ivec3(1);
-  return res;
-}
 void main() {
-  prevent_dce = sign_9603b1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_9603b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_9603b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 sign_9603b1() {
-  ivec3 res = ivec3(1);
-  return res;
-}
-void main() {
-  prevent_dce = sign_9603b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_9603b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_9603b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.glsl
index 9eaa0ae..bbf2d22 100644
--- a/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_ab6301() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  sign_ab6301();
+}
+#version 310 es
+
+void sign_ab6301() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_ab6301();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_ab6301() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  sign_ab6301();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_ab6301();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_ab6301();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_ab6301() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  sign_ab6301();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_ab6301();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_ab6301();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_ab6301() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  sign_ab6301();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_ab6301();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_ab6301();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.glsl
index 1fc7650..a8cd902 100644
--- a/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/b8f634.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sign_b8f634() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_b8f634();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sign_b8f634() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_b8f634();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sign_b8f634() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sign_b8f634();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_b8f634();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_b8f634();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sign_b8f634() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sign_b8f634();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_b8f634();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_b8f634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sign_b8f634() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sign_b8f634();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_b8f634();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_b8f634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.glsl
index a3f66c2..fe802f1 100644
--- a/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_c8289c() {
+  float res = 1.0f;
+}
+void main() {
+  sign_c8289c();
+}
+#version 310 es
+
+void sign_c8289c() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_c8289c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_c8289c() {
   float res = 1.0f;
 }
-void main() {
-  sign_c8289c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_c8289c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_c8289c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_c8289c() {
-  float res = 1.0f;
-}
 void main() {
-  sign_c8289c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_c8289c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_c8289c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_c8289c() {
-  float res = 1.0f;
-}
-void main() {
-  sign_c8289c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_c8289c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_c8289c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.glsl
index dc00677..33689c0 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sign_ccdb3c() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = sign_ccdb3c();
+  v.tint_symbol = sign_ccdb3c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_ccdb3c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sign_ccdb3c() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_ccdb3c();
+  v.tint_symbol = sign_ccdb3c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_ccdb3c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sign_ccdb3c() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_ccdb3c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.glsl
index 89e32e0..122a92a 100644
--- a/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/d065d8.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sign_d065d8() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_d065d8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sign_d065d8() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_d065d8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sign_d065d8() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sign_d065d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_d065d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_d065d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sign_d065d8() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sign_d065d8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_d065d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_d065d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sign_d065d8() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sign_d065d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_d065d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_d065d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.glsl
index 187a211..f0e0d39 100644
--- a/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/dd790e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sign_dd790e() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = sign_dd790e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sign_dd790e() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sign_dd790e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sign_dd790e() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = sign_dd790e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_dd790e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_dd790e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sign_dd790e() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = sign_dd790e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_dd790e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_dd790e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sign_dd790e() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = sign_dd790e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_dd790e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_dd790e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.glsl
index e5d7450..0a1f23c 100644
--- a/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_f5da6a() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  sign_f5da6a();
+}
+#version 310 es
+
+void sign_f5da6a() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_f5da6a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_f5da6a() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  sign_f5da6a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_f5da6a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_f5da6a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_f5da6a() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  sign_f5da6a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_f5da6a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_f5da6a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_f5da6a() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  sign_f5da6a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_f5da6a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_f5da6a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.glsl
index 43ac7e1..a7cadf5 100644
--- a/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sin_01f241() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sin_01f241();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sin_01f241() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sin_01f241();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sin_01f241() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sin_01f241();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_01f241();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_01f241();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sin_01f241() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sin_01f241();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_01f241();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_01f241();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sin_01f241() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sin_01f241();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_01f241();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_01f241();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.glsl
index 1f219c7..5cc6310 100644
--- a/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_15b2c6() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  sin_15b2c6();
+}
+#version 310 es
+
+void sin_15b2c6() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_15b2c6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_15b2c6() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  sin_15b2c6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_15b2c6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_15b2c6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_15b2c6() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  sin_15b2c6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_15b2c6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_15b2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_15b2c6() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  sin_15b2c6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_15b2c6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_15b2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.glsl
index 2becf94..e995679 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sin_2c903b() {
   f16vec3 res = f16vec3(0.99951171875hf);
   return res;
 }
 void main() {
-  prevent_dce = sin_2c903b();
+  v.tint_symbol = sin_2c903b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_2c903b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_2c903b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sin_2c903b() {
   f16vec3 res = f16vec3(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = sin_2c903b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_2c903b();
+  v.tint_symbol = sin_2c903b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_2c903b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sin_2c903b() {
   f16vec3 res = f16vec3(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = sin_2c903b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_2c903b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_2c903b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.glsl
index a1047c8..f2aa5e6 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sin_3cca11() {
   f16vec2 res = f16vec2(0.99951171875hf);
   return res;
 }
 void main() {
-  prevent_dce = sin_3cca11();
+  v.tint_symbol = sin_3cca11();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_3cca11();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_3cca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sin_3cca11() {
   f16vec2 res = f16vec2(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = sin_3cca11();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_3cca11();
+  v.tint_symbol = sin_3cca11();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_3cca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sin_3cca11() {
   f16vec2 res = f16vec2(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = sin_3cca11();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_3cca11();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_3cca11();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.glsl
index c5370ab..5d8197b 100644
--- a/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sin_4e3979() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sin_4e3979();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sin_4e3979() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sin_4e3979();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sin_4e3979() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sin_4e3979();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_4e3979();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_4e3979();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sin_4e3979() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sin_4e3979();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_4e3979();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_4e3979();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sin_4e3979() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sin_4e3979();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_4e3979();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_4e3979();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.glsl
index f7af2e2..0d0fb36 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sin_5c0712() {
   f16vec4 res = f16vec4(0.99951171875hf);
   return res;
 }
 void main() {
-  prevent_dce = sin_5c0712();
+  v.tint_symbol = sin_5c0712();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_5c0712();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_5c0712();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sin_5c0712() {
   f16vec4 res = f16vec4(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = sin_5c0712();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_5c0712();
+  v.tint_symbol = sin_5c0712();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_5c0712();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sin_5c0712() {
   f16vec4 res = f16vec4(0.99951171875hf);
   return res;
 }
-void main() {
-  prevent_dce = sin_5c0712();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_5c0712();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_5c0712();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.glsl
index 05d10bd..12b678c 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sin_66a59f() {
   float16_t res = 0.99951171875hf;
   return res;
 }
 void main() {
-  prevent_dce = sin_66a59f();
+  v.tint_symbol = sin_66a59f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_66a59f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_66a59f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sin_66a59f() {
   float16_t res = 0.99951171875hf;
   return res;
 }
-void main() {
-  prevent_dce = sin_66a59f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_66a59f();
+  v.tint_symbol = sin_66a59f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_66a59f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sin_66a59f() {
   float16_t res = 0.99951171875hf;
   return res;
 }
-void main() {
-  prevent_dce = sin_66a59f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_66a59f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_66a59f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.glsl
index 49a8556..01145e6 100644
--- a/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_67b03c() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  sin_67b03c();
+}
+#version 310 es
+
+void sin_67b03c() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_67b03c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_67b03c() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  sin_67b03c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_67b03c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_67b03c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_67b03c() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  sin_67b03c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_67b03c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_67b03c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_67b03c() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  sin_67b03c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_67b03c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_67b03c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.glsl
index 18d090c..6fbe2cb 100644
--- a/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_68d3ab() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  sin_68d3ab();
+}
+#version 310 es
+
+void sin_68d3ab() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_68d3ab();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_68d3ab() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  sin_68d3ab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_68d3ab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_68d3ab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_68d3ab() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  sin_68d3ab();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_68d3ab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_68d3ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_68d3ab() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  sin_68d3ab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_68d3ab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_68d3ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.glsl
index ee5eef1..17ef61c 100644
--- a/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_a9ab19() {
+  float res = 1.0f;
+}
+void main() {
+  sin_a9ab19();
+}
+#version 310 es
+
+void sin_a9ab19() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_a9ab19();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_a9ab19() {
   float res = 1.0f;
 }
-void main() {
-  sin_a9ab19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_a9ab19();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_a9ab19();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_a9ab19() {
-  float res = 1.0f;
-}
 void main() {
-  sin_a9ab19();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_a9ab19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_a9ab19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_a9ab19() {
-  float res = 1.0f;
-}
-void main() {
-  sin_a9ab19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_a9ab19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_a9ab19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.glsl
index 49e0661..501da05 100644
--- a/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sin_b78c91() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = sin_b78c91();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sin_b78c91() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sin_b78c91();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sin_b78c91() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = sin_b78c91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_b78c91();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_b78c91();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sin_b78c91() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = sin_b78c91();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_b78c91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_b78c91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sin_b78c91() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = sin_b78c91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_b78c91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_b78c91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.glsl
index 44f440c..4ea2487 100644
--- a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sin_fc8bc4() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sin_fc8bc4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sin_fc8bc4() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sin_fc8bc4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sin_fc8bc4() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_fc8bc4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sin_fc8bc4() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sin_fc8bc4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_fc8bc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sin_fc8bc4() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_fc8bc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.glsl
index ec44a1d..0d7fd9a 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sinh_0908c1() {
   f16vec3 res = f16vec3(1.1748046875hf);
   return res;
 }
 void main() {
-  prevent_dce = sinh_0908c1();
+  v.tint_symbol = sinh_0908c1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_0908c1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_0908c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sinh_0908c1() {
   f16vec3 res = f16vec3(1.1748046875hf);
   return res;
 }
-void main() {
-  prevent_dce = sinh_0908c1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_0908c1();
+  v.tint_symbol = sinh_0908c1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_0908c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sinh_0908c1() {
   f16vec3 res = f16vec3(1.1748046875hf);
   return res;
 }
-void main() {
-  prevent_dce = sinh_0908c1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_0908c1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_0908c1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.glsl
index 9429e38..aa0d181 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sinh_445e33() {
+  vec4 res = vec4(1.17520117759704589844f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sinh_445e33();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sinh_445e33() {
+  vec4 res = vec4(1.17520117759704589844f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sinh_445e33();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sinh_445e33() {
   vec4 res = vec4(1.17520117759704589844f);
   return res;
 }
-void main() {
-  prevent_dce = sinh_445e33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_445e33();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_445e33();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sinh_445e33() {
-  vec4 res = vec4(1.17520117759704589844f);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_445e33();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_445e33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_445e33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sinh_445e33() {
-  vec4 res = vec4(1.17520117759704589844f);
-  return res;
-}
-void main() {
-  prevent_dce = sinh_445e33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_445e33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_445e33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.glsl
index 1831921..d4299f1 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sinh_69cce2() {
   float16_t res = 1.1748046875hf;
   return res;
 }
 void main() {
-  prevent_dce = sinh_69cce2();
+  v.tint_symbol = sinh_69cce2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_69cce2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_69cce2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sinh_69cce2() {
   float16_t res = 1.1748046875hf;
   return res;
 }
-void main() {
-  prevent_dce = sinh_69cce2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_69cce2();
+  v.tint_symbol = sinh_69cce2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_69cce2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sinh_69cce2() {
   float16_t res = 1.1748046875hf;
   return res;
 }
-void main() {
-  prevent_dce = sinh_69cce2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_69cce2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_69cce2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.glsl
index bbffbbd..c14c188 100644
--- a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_77a2a3() {
+  vec3 res = vec3(1.17520117759704589844f);
+}
+void main() {
+  sinh_77a2a3();
+}
+#version 310 es
+
+void sinh_77a2a3() {
+  vec3 res = vec3(1.17520117759704589844f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_77a2a3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_77a2a3() {
   vec3 res = vec3(1.17520117759704589844f);
 }
-void main() {
-  sinh_77a2a3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_77a2a3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_77a2a3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_77a2a3() {
-  vec3 res = vec3(1.17520117759704589844f);
-}
 void main() {
-  sinh_77a2a3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_77a2a3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_77a2a3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_77a2a3() {
-  vec3 res = vec3(1.17520117759704589844f);
-}
-void main() {
-  sinh_77a2a3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_77a2a3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_77a2a3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.glsl
index 41eddd6..59d5aa5 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sinh_7bb598() {
+  float res = 1.17520117759704589844f;
+  return res;
+}
+void main() {
+  v.tint_symbol = sinh_7bb598();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sinh_7bb598() {
+  float res = 1.17520117759704589844f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sinh_7bb598();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sinh_7bb598() {
   float res = 1.17520117759704589844f;
   return res;
 }
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_7bb598();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sinh_7bb598() {
-  float res = 1.17520117759704589844f;
-  return res;
-}
 void main() {
-  prevent_dce = sinh_7bb598();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_7bb598();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sinh_7bb598() {
-  float res = 1.17520117759704589844f;
-  return res;
-}
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_7bb598();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.glsl
index 94f2008..3b91819 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sinh_924f19() {
   f16vec2 res = f16vec2(1.1748046875hf);
   return res;
 }
 void main() {
-  prevent_dce = sinh_924f19();
+  v.tint_symbol = sinh_924f19();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_924f19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_924f19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sinh_924f19() {
   f16vec2 res = f16vec2(1.1748046875hf);
   return res;
 }
-void main() {
-  prevent_dce = sinh_924f19();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_924f19();
+  v.tint_symbol = sinh_924f19();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_924f19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sinh_924f19() {
   f16vec2 res = f16vec2(1.1748046875hf);
   return res;
 }
-void main() {
-  prevent_dce = sinh_924f19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_924f19();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_924f19();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.glsl
index 502b0d6..077dcde 100644
--- a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_9c1092() {
+  vec2 res = vec2(1.17520117759704589844f);
+}
+void main() {
+  sinh_9c1092();
+}
+#version 310 es
+
+void sinh_9c1092() {
+  vec2 res = vec2(1.17520117759704589844f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_9c1092();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_9c1092() {
   vec2 res = vec2(1.17520117759704589844f);
 }
-void main() {
-  sinh_9c1092();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_9c1092();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_9c1092();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_9c1092() {
-  vec2 res = vec2(1.17520117759704589844f);
-}
 void main() {
-  sinh_9c1092();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_9c1092();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_9c1092();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_9c1092() {
-  vec2 res = vec2(1.17520117759704589844f);
-}
-void main() {
-  sinh_9c1092();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_9c1092();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_9c1092();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.glsl
index 9aae8d2..1733332 100644
--- a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_a3da7c() {
+  vec4 res = vec4(1.17520117759704589844f);
+}
+void main() {
+  sinh_a3da7c();
+}
+#version 310 es
+
+void sinh_a3da7c() {
+  vec4 res = vec4(1.17520117759704589844f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_a3da7c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_a3da7c() {
   vec4 res = vec4(1.17520117759704589844f);
 }
-void main() {
-  sinh_a3da7c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_a3da7c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_a3da7c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_a3da7c() {
-  vec4 res = vec4(1.17520117759704589844f);
-}
 void main() {
-  sinh_a3da7c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_a3da7c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_a3da7c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_a3da7c() {
-  vec4 res = vec4(1.17520117759704589844f);
-}
-void main() {
-  sinh_a3da7c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_a3da7c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_a3da7c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.glsl
index 5137a08..195101a 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sinh_b9860e() {
+  vec2 res = vec2(1.17520117759704589844f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sinh_b9860e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sinh_b9860e() {
+  vec2 res = vec2(1.17520117759704589844f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sinh_b9860e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sinh_b9860e() {
   vec2 res = vec2(1.17520117759704589844f);
   return res;
 }
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_b9860e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sinh_b9860e() {
-  vec2 res = vec2(1.17520117759704589844f);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_b9860e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_b9860e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sinh_b9860e() {
-  vec2 res = vec2(1.17520117759704589844f);
-  return res;
-}
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_b9860e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.glsl
index 3e7301d..d98d0c5 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sinh_ba7e25() {
   f16vec4 res = f16vec4(1.1748046875hf);
   return res;
 }
 void main() {
-  prevent_dce = sinh_ba7e25();
+  v.tint_symbol = sinh_ba7e25();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_ba7e25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sinh_ba7e25() {
   f16vec4 res = f16vec4(1.1748046875hf);
   return res;
 }
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_ba7e25();
+  v.tint_symbol = sinh_ba7e25();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_ba7e25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sinh_ba7e25() {
   f16vec4 res = f16vec4(1.1748046875hf);
   return res;
 }
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_ba7e25();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.glsl
index 69b1191..1c21cac 100644
--- a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_c4df74() {
+  float res = 1.17520117759704589844f;
+}
+void main() {
+  sinh_c4df74();
+}
+#version 310 es
+
+void sinh_c4df74() {
+  float res = 1.17520117759704589844f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_c4df74();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_c4df74() {
   float res = 1.17520117759704589844f;
 }
-void main() {
-  sinh_c4df74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_c4df74();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_c4df74();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_c4df74() {
-  float res = 1.17520117759704589844f;
-}
 void main() {
-  sinh_c4df74();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_c4df74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_c4df74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_c4df74() {
-  float res = 1.17520117759704589844f;
-}
-void main() {
-  sinh_c4df74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_c4df74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_c4df74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.glsl
index b19ee05..fd074e9 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sinh_c9a5eb() {
+  vec3 res = vec3(1.17520117759704589844f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sinh_c9a5eb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sinh_c9a5eb() {
+  vec3 res = vec3(1.17520117759704589844f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sinh_c9a5eb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sinh_c9a5eb() {
   vec3 res = vec3(1.17520117759704589844f);
   return res;
 }
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_c9a5eb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sinh_c9a5eb() {
-  vec3 res = vec3(1.17520117759704589844f);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_c9a5eb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_c9a5eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sinh_c9a5eb() {
-  vec3 res = vec3(1.17520117759704589844f);
-  return res;
-}
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_c9a5eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.glsl
index e191999..e2c9caf 100644
--- a/test/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/0c481b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_0c481b() {
+  vec2 res = vec2(0.5f);
+}
+void main() {
+  smoothstep_0c481b();
+}
+#version 310 es
+
+void smoothstep_0c481b() {
+  vec2 res = vec2(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_0c481b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_0c481b() {
   vec2 res = vec2(0.5f);
 }
-void main() {
-  smoothstep_0c481b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c481b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_0c481b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c481b() {
-  vec2 res = vec2(0.5f);
-}
 void main() {
-  smoothstep_0c481b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c481b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c481b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c481b() {
-  vec2 res = vec2(0.5f);
-}
-void main() {
-  smoothstep_0c481b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c481b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c481b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.glsl
index f740d57..a3ea126 100644
--- a/test/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/0c4ffc.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_0c4ffc() {
+  vec4 res = vec4(0.5f);
+}
+void main() {
+  smoothstep_0c4ffc();
+}
+#version 310 es
+
+void smoothstep_0c4ffc() {
+  vec4 res = vec4(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_0c4ffc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_0c4ffc() {
   vec4 res = vec4(0.5f);
 }
-void main() {
-  smoothstep_0c4ffc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c4ffc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_0c4ffc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c4ffc() {
-  vec4 res = vec4(0.5f);
-}
 void main() {
-  smoothstep_0c4ffc();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c4ffc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c4ffc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c4ffc() {
-  vec4 res = vec4(0.5f);
-}
-void main() {
-  smoothstep_0c4ffc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c4ffc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c4ffc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.glsl
index 1267463..04b7c98 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 smoothstep_12c031() {
   f16vec2 res = f16vec2(0.5hf);
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_12c031();
+  v.tint_symbol = smoothstep_12c031();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_12c031();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 smoothstep_12c031() {
   f16vec2 res = f16vec2(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_12c031();
+  v.tint_symbol = smoothstep_12c031();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_12c031();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 smoothstep_12c031() {
   f16vec2 res = f16vec2(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_12c031();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.glsl
index 61d56bcb..47a8b89 100644
--- a/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/392c19.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 smoothstep_392c19() {
+  vec2 res = vec2(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = smoothstep_392c19();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 smoothstep_392c19() {
+  vec2 res = vec2(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = smoothstep_392c19();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 smoothstep_392c19() {
   vec2 res = vec2(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_392c19();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 smoothstep_392c19() {
-  vec2 res = vec2(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = smoothstep_392c19();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_392c19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 smoothstep_392c19() {
-  vec2 res = vec2(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_392c19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.glsl
index 06777fb..45a20e0 100644
--- a/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/40864c.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 smoothstep_40864c() {
+  vec4 res = vec4(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = smoothstep_40864c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 smoothstep_40864c() {
+  vec4 res = vec4(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = smoothstep_40864c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 smoothstep_40864c() {
   vec4 res = vec4(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_40864c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 smoothstep_40864c() {
-  vec4 res = vec4(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = smoothstep_40864c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_40864c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 smoothstep_40864c() {
-  vec4 res = vec4(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_40864c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.glsl
index 4c6ff6f..aeb0966 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t smoothstep_586e12() {
   float16_t res = 0.5hf;
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_586e12();
+  v.tint_symbol = smoothstep_586e12();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_586e12();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t smoothstep_586e12() {
   float16_t res = 0.5hf;
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_586e12();
+  v.tint_symbol = smoothstep_586e12();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_586e12();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t smoothstep_586e12() {
   float16_t res = 0.5hf;
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_586e12();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.glsl
index beadacd..99a19ed 100644
--- a/test/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/66e4bd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_66e4bd() {
+  vec3 res = vec3(0.5f);
+}
+void main() {
+  smoothstep_66e4bd();
+}
+#version 310 es
+
+void smoothstep_66e4bd() {
+  vec3 res = vec3(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_66e4bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_66e4bd() {
   vec3 res = vec3(0.5f);
 }
-void main() {
-  smoothstep_66e4bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_66e4bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_66e4bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_66e4bd() {
-  vec3 res = vec3(0.5f);
-}
 void main() {
-  smoothstep_66e4bd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_66e4bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_66e4bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_66e4bd() {
-  vec3 res = vec3(0.5f);
-}
-void main() {
-  smoothstep_66e4bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_66e4bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_66e4bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.glsl
index 91aa00c..96c4d29 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6c4975.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float smoothstep_6c4975() {
+  float res = 0.5f;
+  return res;
+}
+void main() {
+  v.tint_symbol = smoothstep_6c4975();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float smoothstep_6c4975() {
+  float res = 0.5f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = smoothstep_6c4975();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float smoothstep_6c4975() {
   float res = 0.5f;
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_6c4975();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float smoothstep_6c4975() {
-  float res = 0.5f;
-  return res;
-}
 void main() {
-  prevent_dce = smoothstep_6c4975();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6c4975();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float smoothstep_6c4975() {
-  float res = 0.5f;
-  return res;
-}
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6c4975();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.glsl
index 2f21d61..9542e5c 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 smoothstep_6e7a74() {
   f16vec3 res = f16vec3(0.5hf);
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_6e7a74();
+  v.tint_symbol = smoothstep_6e7a74();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6e7a74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 smoothstep_6e7a74() {
   f16vec3 res = f16vec3(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_6e7a74();
+  v.tint_symbol = smoothstep_6e7a74();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6e7a74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 smoothstep_6e7a74() {
   f16vec3 res = f16vec3(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_6e7a74();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.glsl
index 33fc9d0..e19491d 100644
--- a/test/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/a80fff.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_a80fff() {
+  float res = 0.5f;
+}
+void main() {
+  smoothstep_a80fff();
+}
+#version 310 es
+
+void smoothstep_a80fff() {
+  float res = 0.5f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_a80fff();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_a80fff() {
   float res = 0.5f;
 }
-void main() {
-  smoothstep_a80fff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_a80fff();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_a80fff();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_a80fff() {
-  float res = 0.5f;
-}
 void main() {
-  smoothstep_a80fff();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_a80fff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_a80fff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_a80fff() {
-  float res = 0.5f;
-}
-void main() {
-  smoothstep_a80fff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_a80fff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_a80fff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.glsl
index 5a1dda7..7347958 100644
--- a/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/aad1db.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 smoothstep_aad1db() {
+  vec3 res = vec3(0.5f);
+  return res;
+}
+void main() {
+  v.tint_symbol = smoothstep_aad1db();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 smoothstep_aad1db() {
+  vec3 res = vec3(0.5f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = smoothstep_aad1db();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 smoothstep_aad1db() {
   vec3 res = vec3(0.5f);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_aad1db();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 smoothstep_aad1db() {
-  vec3 res = vec3(0.5f);
-  return res;
-}
 void main() {
-  prevent_dce = smoothstep_aad1db();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_aad1db();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 smoothstep_aad1db() {
-  vec3 res = vec3(0.5f);
-  return res;
-}
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_aad1db();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.glsl
index 2cc5c39..d336e5c 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 smoothstep_c43ebd() {
   f16vec4 res = f16vec4(0.5hf);
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_c43ebd();
+  v.tint_symbol = smoothstep_c43ebd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_c43ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 smoothstep_c43ebd() {
   f16vec4 res = f16vec4(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_c43ebd();
+  v.tint_symbol = smoothstep_c43ebd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_c43ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 smoothstep_c43ebd() {
   f16vec4 res = f16vec4(0.5hf);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_c43ebd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.glsl
index f3c7ff0..0b0fcb0 100644
--- a/test/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/072192.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_072192() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  sqrt_072192();
+}
+#version 310 es
+
+void sqrt_072192() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_072192();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_072192() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  sqrt_072192();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_072192();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_072192();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_072192() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  sqrt_072192();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_072192();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_072192();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_072192() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  sqrt_072192();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_072192();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_072192();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.glsl
index b2c8429..e4a3143 100644
--- a/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/20c74e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sqrt_20c74e() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = sqrt_20c74e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sqrt_20c74e() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sqrt_20c74e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sqrt_20c74e() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_20c74e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sqrt_20c74e() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_20c74e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_20c74e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sqrt_20c74e() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_20c74e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.glsl
index 6d0cd90..48c80ba 100644
--- a/test/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/4ac2c5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_4ac2c5() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  sqrt_4ac2c5();
+}
+#version 310 es
+
+void sqrt_4ac2c5() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_4ac2c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_4ac2c5() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  sqrt_4ac2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_4ac2c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_4ac2c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_4ac2c5() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  sqrt_4ac2c5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_4ac2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_4ac2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_4ac2c5() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  sqrt_4ac2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_4ac2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_4ac2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.glsl
index b6adca3..330cba8 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sqrt_803d1c() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_803d1c();
+  v.tint_symbol = sqrt_803d1c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_803d1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sqrt_803d1c() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_803d1c();
+  v.tint_symbol = sqrt_803d1c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_803d1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sqrt_803d1c() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_803d1c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.glsl
index fd62b24..1e1353d 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sqrt_895a0c() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_895a0c();
+  v.tint_symbol = sqrt_895a0c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_895a0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sqrt_895a0c() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_895a0c();
+  v.tint_symbol = sqrt_895a0c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_895a0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sqrt_895a0c() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_895a0c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.glsl
index a4f1263..bbdbf1c 100644
--- a/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/8c7024.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sqrt_8c7024() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sqrt_8c7024();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sqrt_8c7024() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sqrt_8c7024();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sqrt_8c7024() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_8c7024();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sqrt_8c7024() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_8c7024();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_8c7024();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sqrt_8c7024() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_8c7024();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.glsl
index e11044e..3220a3c 100644
--- a/test/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/8da177.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_8da177() {
+  float res = 1.0f;
+}
+void main() {
+  sqrt_8da177();
+}
+#version 310 es
+
+void sqrt_8da177() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_8da177();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_8da177() {
   float res = 1.0f;
 }
-void main() {
-  sqrt_8da177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_8da177();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_8da177();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_8da177() {
-  float res = 1.0f;
-}
 void main() {
-  sqrt_8da177();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_8da177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_8da177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_8da177() {
-  float res = 1.0f;
-}
-void main() {
-  sqrt_8da177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_8da177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_8da177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.glsl
index 11cbc1e..72889da 100644
--- a/test/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/9c5cbe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_9c5cbe() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  sqrt_9c5cbe();
+}
+#version 310 es
+
+void sqrt_9c5cbe() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_9c5cbe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_9c5cbe() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  sqrt_9c5cbe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_9c5cbe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_9c5cbe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_9c5cbe() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  sqrt_9c5cbe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_9c5cbe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_9c5cbe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_9c5cbe() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  sqrt_9c5cbe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_9c5cbe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_9c5cbe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.glsl
index 38a14da..a968187 100644
--- a/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/aa0d7a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sqrt_aa0d7a() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sqrt_aa0d7a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sqrt_aa0d7a() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sqrt_aa0d7a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sqrt_aa0d7a() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_aa0d7a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sqrt_aa0d7a() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_aa0d7a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_aa0d7a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sqrt_aa0d7a() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_aa0d7a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.glsl
index 0ee75e9..76dc16e 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sqrt_d9ab4d() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_d9ab4d();
+  v.tint_symbol = sqrt_d9ab4d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_d9ab4d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sqrt_d9ab4d() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_d9ab4d();
+  v.tint_symbol = sqrt_d9ab4d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_d9ab4d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sqrt_d9ab4d() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_d9ab4d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.glsl
index 41d428d..bc55f24 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sqrt_ec33e9() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = sqrt_ec33e9();
+  v.tint_symbol = sqrt_ec33e9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_ec33e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sqrt_ec33e9() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_ec33e9();
+  v.tint_symbol = sqrt_ec33e9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_ec33e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sqrt_ec33e9() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_ec33e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.glsl
index 011debd..ae21c5e 100644
--- a/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/f8c59a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sqrt_f8c59a() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = sqrt_f8c59a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sqrt_f8c59a() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = sqrt_f8c59a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sqrt_f8c59a() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_f8c59a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sqrt_f8c59a() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_f8c59a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_f8c59a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sqrt_f8c59a() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_f8c59a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.glsl
index 39bb24f..17a2ab4 100644
--- a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 step_07cb06() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = step_07cb06();
+  v.tint_symbol = step_07cb06();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_07cb06();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_07cb06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 step_07cb06() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = step_07cb06();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_07cb06();
+  v.tint_symbol = step_07cb06();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_07cb06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 step_07cb06() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = step_07cb06();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_07cb06();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_07cb06();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.glsl
index 54cb42e..3fd15c7 100644
--- a/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/0b073b.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float step_0b073b() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = step_0b073b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float step_0b073b() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = step_0b073b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float step_0b073b() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = step_0b073b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_0b073b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_0b073b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float step_0b073b() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = step_0b073b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_0b073b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_0b073b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float step_0b073b() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = step_0b073b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_0b073b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_0b073b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.glsl
index c0bf907..75a87fa 100644
--- a/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/19accd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 step_19accd() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = step_19accd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 step_19accd() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = step_19accd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 step_19accd() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = step_19accd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_19accd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_19accd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 step_19accd() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = step_19accd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_19accd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_19accd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 step_19accd() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = step_19accd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_19accd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_19accd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.glsl
index 784ca04..90d6296 100644
--- a/test/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/334303.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 step_334303() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = step_334303();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 step_334303() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = step_334303();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 step_334303() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = step_334303();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_334303();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_334303();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 step_334303() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = step_334303();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_334303();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_334303();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 step_334303() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = step_334303();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_334303();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_334303();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.glsl
index d701f8b..6cc8062 100644
--- a/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_38cd79() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  step_38cd79();
+}
+#version 310 es
+
+void step_38cd79() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_38cd79();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_38cd79() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  step_38cd79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_38cd79();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_38cd79();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_38cd79() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  step_38cd79();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_38cd79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_38cd79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_38cd79() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  step_38cd79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_38cd79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_38cd79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.glsl
index aa27fee..ae67f8f 100644
--- a/test/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/415879.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_415879() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  step_415879();
+}
+#version 310 es
+
+void step_415879() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_415879();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_415879() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  step_415879();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_415879();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_415879();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_415879() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  step_415879();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_415879();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_415879();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_415879() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  step_415879();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_415879();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_415879();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.glsl
index 1d17759..6d7273a 100644
--- a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t step_630d07() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = step_630d07();
+  v.tint_symbol = step_630d07();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_630d07();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_630d07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t step_630d07() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = step_630d07();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_630d07();
+  v.tint_symbol = step_630d07();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_630d07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t step_630d07() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = step_630d07();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_630d07();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_630d07();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.glsl
index 1eae3d6..b87d3e2 100644
--- a/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_7c7e5c() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  step_7c7e5c();
+}
+#version 310 es
+
+void step_7c7e5c() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_7c7e5c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_7c7e5c() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  step_7c7e5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_7c7e5c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_7c7e5c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_7c7e5c() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  step_7c7e5c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_7c7e5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_7c7e5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_7c7e5c() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  step_7c7e5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_7c7e5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_7c7e5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.glsl
index 54d3581..8487a06 100644
--- a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 step_baa320() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = step_baa320();
+  v.tint_symbol = step_baa320();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_baa320();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_baa320();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 step_baa320() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = step_baa320();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_baa320();
+  v.tint_symbol = step_baa320();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_baa320();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 step_baa320() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = step_baa320();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_baa320();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_baa320();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.glsl
index 50684bb..d6ea298 100644
--- a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 step_cc6b61() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = step_cc6b61();
+  v.tint_symbol = step_cc6b61();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_cc6b61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_cc6b61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 step_cc6b61() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = step_cc6b61();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_cc6b61();
+  v.tint_symbol = step_cc6b61();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_cc6b61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 step_cc6b61() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = step_cc6b61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_cc6b61();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_cc6b61();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.glsl
index dbfabd1..d45a552 100644
--- a/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/e2b337.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 step_e2b337() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = step_e2b337();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 step_e2b337() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = step_e2b337();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 step_e2b337() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = step_e2b337();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_e2b337();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_e2b337();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 step_e2b337() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = step_e2b337();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_e2b337();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_e2b337();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 step_e2b337() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = step_e2b337();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_e2b337();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_e2b337();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.glsl
index 497d392..c19ef16 100644
--- a/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_f9b70c() {
+  float res = 1.0f;
+}
+void main() {
+  step_f9b70c();
+}
+#version 310 es
+
+void step_f9b70c() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_f9b70c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_f9b70c() {
   float res = 1.0f;
 }
-void main() {
-  step_f9b70c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_f9b70c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_f9b70c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_f9b70c() {
-  float res = 1.0f;
-}
 void main() {
-  step_f9b70c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_f9b70c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_f9b70c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_f9b70c() {
-  float res = 1.0f;
-}
-void main() {
-  step_f9b70c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_f9b70c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_f9b70c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.glsl
index b9426ff..57a1e40 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 tan_244e2a() {
+  vec4 res = vec4(1.55740773677825927734f);
+  return res;
+}
+void main() {
+  v.tint_symbol = tan_244e2a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 tan_244e2a() {
+  vec4 res = vec4(1.55740773677825927734f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tan_244e2a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 tan_244e2a() {
   vec4 res = vec4(1.55740773677825927734f);
   return res;
 }
-void main() {
-  prevent_dce = tan_244e2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_244e2a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_244e2a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 tan_244e2a() {
-  vec4 res = vec4(1.55740773677825927734f);
-  return res;
-}
 void main() {
-  prevent_dce = tan_244e2a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_244e2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_244e2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 tan_244e2a() {
-  vec4 res = vec4(1.55740773677825927734f);
-  return res;
-}
-void main() {
-  prevent_dce = tan_244e2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_244e2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_244e2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.glsl
index e7fdde5..488f2fb 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float tan_2f030e() {
+  float res = 1.55740773677825927734f;
+  return res;
+}
+void main() {
+  v.tint_symbol = tan_2f030e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float tan_2f030e() {
+  float res = 1.55740773677825927734f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tan_2f030e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float tan_2f030e() {
   float res = 1.55740773677825927734f;
   return res;
 }
-void main() {
-  prevent_dce = tan_2f030e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_2f030e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_2f030e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float tan_2f030e() {
-  float res = 1.55740773677825927734f;
-  return res;
-}
 void main() {
-  prevent_dce = tan_2f030e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_2f030e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_2f030e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float tan_2f030e() {
-  float res = 1.55740773677825927734f;
-  return res;
-}
-void main() {
-  prevent_dce = tan_2f030e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_2f030e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_2f030e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.glsl
index 47eb319..600b075 100644
--- a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_311400() {
+  float res = 1.55740773677825927734f;
+}
+void main() {
+  tan_311400();
+}
+#version 310 es
+
+void tan_311400() {
+  float res = 1.55740773677825927734f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_311400();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_311400() {
   float res = 1.55740773677825927734f;
 }
-void main() {
-  tan_311400();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_311400();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_311400();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_311400() {
-  float res = 1.55740773677825927734f;
-}
 void main() {
-  tan_311400();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_311400();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_311400();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_311400() {
-  float res = 1.55740773677825927734f;
-}
-void main() {
-  tan_311400();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_311400();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_311400();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.glsl
index df3a8a6..7ed9189 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tan_539e54() {
   f16vec4 res = f16vec4(1.556640625hf);
   return res;
 }
 void main() {
-  prevent_dce = tan_539e54();
+  v.tint_symbol = tan_539e54();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_539e54();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_539e54();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tan_539e54() {
   f16vec4 res = f16vec4(1.556640625hf);
   return res;
 }
-void main() {
-  prevent_dce = tan_539e54();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_539e54();
+  v.tint_symbol = tan_539e54();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_539e54();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 tan_539e54() {
   f16vec4 res = f16vec4(1.556640625hf);
   return res;
 }
-void main() {
-  prevent_dce = tan_539e54();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_539e54();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_539e54();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.glsl
index 5bb5992..67635ef 100644
--- a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_7be368() {
+  vec2 res = vec2(1.55740773677825927734f);
+}
+void main() {
+  tan_7be368();
+}
+#version 310 es
+
+void tan_7be368() {
+  vec2 res = vec2(1.55740773677825927734f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_7be368();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_7be368() {
   vec2 res = vec2(1.55740773677825927734f);
 }
-void main() {
-  tan_7be368();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_7be368();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_7be368();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_7be368() {
-  vec2 res = vec2(1.55740773677825927734f);
-}
 void main() {
-  tan_7be368();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_7be368();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_7be368();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_7be368() {
-  vec2 res = vec2(1.55740773677825927734f);
-}
-void main() {
-  tan_7be368();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_7be368();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_7be368();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.glsl
index 5be718a..bc00577 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 tan_7ea104() {
+  vec3 res = vec3(1.55740773677825927734f);
+  return res;
+}
+void main() {
+  v.tint_symbol = tan_7ea104();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 tan_7ea104() {
+  vec3 res = vec3(1.55740773677825927734f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tan_7ea104();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 tan_7ea104() {
   vec3 res = vec3(1.55740773677825927734f);
   return res;
 }
-void main() {
-  prevent_dce = tan_7ea104();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_7ea104();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_7ea104();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 tan_7ea104() {
-  vec3 res = vec3(1.55740773677825927734f);
-  return res;
-}
 void main() {
-  prevent_dce = tan_7ea104();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_7ea104();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_7ea104();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 tan_7ea104() {
-  vec3 res = vec3(1.55740773677825927734f);
-  return res;
-}
-void main() {
-  prevent_dce = tan_7ea104();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_7ea104();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_7ea104();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.glsl
index a50a682..14efcb3 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 tan_8ce3e9() {
+  vec2 res = vec2(1.55740773677825927734f);
+  return res;
+}
+void main() {
+  v.tint_symbol = tan_8ce3e9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 tan_8ce3e9() {
+  vec2 res = vec2(1.55740773677825927734f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tan_8ce3e9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 tan_8ce3e9() {
   vec2 res = vec2(1.55740773677825927734f);
   return res;
 }
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_8ce3e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 tan_8ce3e9() {
-  vec2 res = vec2(1.55740773677825927734f);
-  return res;
-}
 void main() {
-  prevent_dce = tan_8ce3e9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_8ce3e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 tan_8ce3e9() {
-  vec2 res = vec2(1.55740773677825927734f);
-  return res;
-}
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_8ce3e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.glsl
index 7d72729..be9ab6e 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tan_9f7c9c() {
   f16vec2 res = f16vec2(1.556640625hf);
   return res;
 }
 void main() {
-  prevent_dce = tan_9f7c9c();
+  v.tint_symbol = tan_9f7c9c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_9f7c9c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tan_9f7c9c() {
   f16vec2 res = f16vec2(1.556640625hf);
   return res;
 }
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_9f7c9c();
+  v.tint_symbol = tan_9f7c9c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_9f7c9c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 tan_9f7c9c() {
   f16vec2 res = f16vec2(1.556640625hf);
   return res;
 }
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_9f7c9c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.glsl
index 30f1985..fca70d2 100644
--- a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_a0966f() {
+  vec4 res = vec4(1.55740773677825927734f);
+}
+void main() {
+  tan_a0966f();
+}
+#version 310 es
+
+void tan_a0966f() {
+  vec4 res = vec4(1.55740773677825927734f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_a0966f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_a0966f() {
   vec4 res = vec4(1.55740773677825927734f);
 }
-void main() {
-  tan_a0966f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_a0966f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_a0966f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_a0966f() {
-  vec4 res = vec4(1.55740773677825927734f);
-}
 void main() {
-  tan_a0966f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_a0966f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_a0966f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_a0966f() {
-  vec4 res = vec4(1.55740773677825927734f);
-}
-void main() {
-  tan_a0966f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_a0966f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_a0966f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.glsl
index 453e57f..3c5af49 100644
--- a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_ae26ae() {
+  vec3 res = vec3(1.55740773677825927734f);
+}
+void main() {
+  tan_ae26ae();
+}
+#version 310 es
+
+void tan_ae26ae() {
+  vec3 res = vec3(1.55740773677825927734f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_ae26ae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_ae26ae() {
   vec3 res = vec3(1.55740773677825927734f);
 }
-void main() {
-  tan_ae26ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_ae26ae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_ae26ae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_ae26ae() {
-  vec3 res = vec3(1.55740773677825927734f);
-}
 void main() {
-  tan_ae26ae();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_ae26ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_ae26ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_ae26ae() {
-  vec3 res = vec3(1.55740773677825927734f);
-}
-void main() {
-  tan_ae26ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_ae26ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_ae26ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.glsl
index b71525c..5954bac 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tan_d4d491() {
   float16_t res = 1.556640625hf;
   return res;
 }
 void main() {
-  prevent_dce = tan_d4d491();
+  v.tint_symbol = tan_d4d491();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_d4d491();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_d4d491();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tan_d4d491() {
   float16_t res = 1.556640625hf;
   return res;
 }
-void main() {
-  prevent_dce = tan_d4d491();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_d4d491();
+  v.tint_symbol = tan_d4d491();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_d4d491();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t tan_d4d491() {
   float16_t res = 1.556640625hf;
   return res;
 }
-void main() {
-  prevent_dce = tan_d4d491();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_d4d491();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_d4d491();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.glsl
index 1797423..c0329ec 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tan_db0456() {
   f16vec3 res = f16vec3(1.556640625hf);
   return res;
 }
 void main() {
-  prevent_dce = tan_db0456();
+  v.tint_symbol = tan_db0456();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_db0456();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_db0456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tan_db0456() {
   f16vec3 res = f16vec3(1.556640625hf);
   return res;
 }
-void main() {
-  prevent_dce = tan_db0456();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_db0456();
+  v.tint_symbol = tan_db0456();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_db0456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 tan_db0456() {
   f16vec3 res = f16vec3(1.556640625hf);
   return res;
 }
-void main() {
-  prevent_dce = tan_db0456();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_db0456();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_db0456();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.glsl
index 1ebf661..f3ef8a8 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tanh_06a4fe() {
   f16vec3 res = f16vec3(0.76123046875hf);
   return res;
 }
 void main() {
-  prevent_dce = tanh_06a4fe();
+  v.tint_symbol = tanh_06a4fe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_06a4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tanh_06a4fe() {
   f16vec3 res = f16vec3(0.76123046875hf);
   return res;
 }
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_06a4fe();
+  v.tint_symbol = tanh_06a4fe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_06a4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 tanh_06a4fe() {
   f16vec3 res = f16vec3(0.76123046875hf);
   return res;
 }
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_06a4fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.glsl
index 63d9b15..6cb14cf 100644
--- a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_313aa1() {
+  float res = 0.76159417629241943359f;
+}
+void main() {
+  tanh_313aa1();
+}
+#version 310 es
+
+void tanh_313aa1() {
+  float res = 0.76159417629241943359f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_313aa1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_313aa1() {
   float res = 0.76159417629241943359f;
 }
-void main() {
-  tanh_313aa1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_313aa1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_313aa1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_313aa1() {
-  float res = 0.76159417629241943359f;
-}
 void main() {
-  tanh_313aa1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_313aa1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_313aa1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_313aa1() {
-  float res = 0.76159417629241943359f;
-}
-void main() {
-  tanh_313aa1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_313aa1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_313aa1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.glsl
index 4c02b84..65928a9 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 tanh_5663c5() {
+  vec4 res = vec4(0.76159417629241943359f);
+  return res;
+}
+void main() {
+  v.tint_symbol = tanh_5663c5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 tanh_5663c5() {
+  vec4 res = vec4(0.76159417629241943359f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tanh_5663c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 tanh_5663c5() {
   vec4 res = vec4(0.76159417629241943359f);
   return res;
 }
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_5663c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 tanh_5663c5() {
-  vec4 res = vec4(0.76159417629241943359f);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_5663c5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5663c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 tanh_5663c5() {
-  vec4 res = vec4(0.76159417629241943359f);
-  return res;
-}
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5663c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.glsl
index 359703a..d795584 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 tanh_5724b3() {
+  vec2 res = vec2(0.76159417629241943359f);
+  return res;
+}
+void main() {
+  v.tint_symbol = tanh_5724b3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 tanh_5724b3() {
+  vec2 res = vec2(0.76159417629241943359f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tanh_5724b3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 tanh_5724b3() {
   vec2 res = vec2(0.76159417629241943359f);
   return res;
 }
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_5724b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 tanh_5724b3() {
-  vec2 res = vec2(0.76159417629241943359f);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_5724b3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5724b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 tanh_5724b3() {
-  vec2 res = vec2(0.76159417629241943359f);
-  return res;
-}
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5724b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.glsl
index 8eb0781..4ea2798 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tanh_5b19af() {
   float16_t res = 0.76123046875hf;
   return res;
 }
 void main() {
-  prevent_dce = tanh_5b19af();
+  v.tint_symbol = tanh_5b19af();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5b19af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5b19af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tanh_5b19af() {
   float16_t res = 0.76123046875hf;
   return res;
 }
-void main() {
-  prevent_dce = tanh_5b19af();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_5b19af();
+  v.tint_symbol = tanh_5b19af();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5b19af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t tanh_5b19af() {
   float16_t res = 0.76123046875hf;
   return res;
 }
-void main() {
-  prevent_dce = tanh_5b19af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5b19af();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_5b19af();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.glsl
index 1467d1c..6f08f81 100644
--- a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_6289fd() {
+  vec3 res = vec3(0.76159417629241943359f);
+}
+void main() {
+  tanh_6289fd();
+}
+#version 310 es
+
+void tanh_6289fd() {
+  vec3 res = vec3(0.76159417629241943359f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_6289fd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_6289fd() {
   vec3 res = vec3(0.76159417629241943359f);
 }
-void main() {
-  tanh_6289fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_6289fd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_6289fd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_6289fd() {
-  vec3 res = vec3(0.76159417629241943359f);
-}
 void main() {
-  tanh_6289fd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_6289fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_6289fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_6289fd() {
-  vec3 res = vec3(0.76159417629241943359f);
-}
-void main() {
-  tanh_6289fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_6289fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_6289fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.glsl
index 54a61ee..594b66d 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tanh_6d105a() {
   f16vec2 res = f16vec2(0.76123046875hf);
   return res;
 }
 void main() {
-  prevent_dce = tanh_6d105a();
+  v.tint_symbol = tanh_6d105a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_6d105a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_6d105a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tanh_6d105a() {
   f16vec2 res = f16vec2(0.76123046875hf);
   return res;
 }
-void main() {
-  prevent_dce = tanh_6d105a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_6d105a();
+  v.tint_symbol = tanh_6d105a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_6d105a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 tanh_6d105a() {
   f16vec2 res = f16vec2(0.76123046875hf);
   return res;
 }
-void main() {
-  prevent_dce = tanh_6d105a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_6d105a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_6d105a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.glsl
index eb37016..bb8bc8c 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 tanh_9f9fb9() {
+  vec3 res = vec3(0.76159417629241943359f);
+  return res;
+}
+void main() {
+  v.tint_symbol = tanh_9f9fb9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 tanh_9f9fb9() {
+  vec3 res = vec3(0.76159417629241943359f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tanh_9f9fb9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 tanh_9f9fb9() {
   vec3 res = vec3(0.76159417629241943359f);
   return res;
 }
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_9f9fb9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 tanh_9f9fb9() {
-  vec3 res = vec3(0.76159417629241943359f);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_9f9fb9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_9f9fb9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 tanh_9f9fb9() {
-  vec3 res = vec3(0.76159417629241943359f);
-  return res;
-}
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_9f9fb9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.glsl
index 0c4670b..99832a9 100644
--- a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_ac5d33() {
+  vec4 res = vec4(0.76159417629241943359f);
+}
+void main() {
+  tanh_ac5d33();
+}
+#version 310 es
+
+void tanh_ac5d33() {
+  vec4 res = vec4(0.76159417629241943359f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_ac5d33();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_ac5d33() {
   vec4 res = vec4(0.76159417629241943359f);
 }
-void main() {
-  tanh_ac5d33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_ac5d33();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_ac5d33();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_ac5d33() {
-  vec4 res = vec4(0.76159417629241943359f);
-}
 void main() {
-  tanh_ac5d33();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_ac5d33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_ac5d33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_ac5d33() {
-  vec4 res = vec4(0.76159417629241943359f);
-}
-void main() {
-  tanh_ac5d33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_ac5d33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_ac5d33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.glsl
index 71c25ba..61c2afb 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float tanh_c15fdb() {
+  float res = 0.76159417629241943359f;
+  return res;
+}
+void main() {
+  v.tint_symbol = tanh_c15fdb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float tanh_c15fdb() {
+  float res = 0.76159417629241943359f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = tanh_c15fdb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float tanh_c15fdb() {
   float res = 0.76159417629241943359f;
   return res;
 }
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_c15fdb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float tanh_c15fdb() {
-  float res = 0.76159417629241943359f;
-  return res;
-}
 void main() {
-  prevent_dce = tanh_c15fdb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_c15fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float tanh_c15fdb() {
-  float res = 0.76159417629241943359f;
-  return res;
-}
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_c15fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.glsl
index ee7de12..0d5f3aa 100644
--- a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_c48aa6() {
+  vec2 res = vec2(0.76159417629241943359f);
+}
+void main() {
+  tanh_c48aa6();
+}
+#version 310 es
+
+void tanh_c48aa6() {
+  vec2 res = vec2(0.76159417629241943359f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_c48aa6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_c48aa6() {
   vec2 res = vec2(0.76159417629241943359f);
 }
-void main() {
-  tanh_c48aa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_c48aa6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_c48aa6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_c48aa6() {
-  vec2 res = vec2(0.76159417629241943359f);
-}
 void main() {
-  tanh_c48aa6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_c48aa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_c48aa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_c48aa6() {
-  vec2 res = vec2(0.76159417629241943359f);
-}
-void main() {
-  tanh_c48aa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_c48aa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_c48aa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.glsl
index beb4d1d..53b03ec 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tanh_e8efb3() {
   f16vec4 res = f16vec4(0.76123046875hf);
   return res;
 }
 void main() {
-  prevent_dce = tanh_e8efb3();
+  v.tint_symbol = tanh_e8efb3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_e8efb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tanh_e8efb3() {
   f16vec4 res = f16vec4(0.76123046875hf);
   return res;
 }
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_e8efb3();
+  v.tint_symbol = tanh_e8efb3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_e8efb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 tanh_e8efb3() {
   f16vec4 res = f16vec4(0.76123046875hf);
   return res;
 }
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_e8efb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.glsl
index 0709d10..1606433 100644
--- a/test/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/32dd64.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_32dd64() {
+  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+void main() {
+  transpose_32dd64();
+}
+#version 310 es
+
+void transpose_32dd64() {
+  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_32dd64();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_32dd64() {
   mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
 }
-void main() {
-  transpose_32dd64();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_32dd64();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_32dd64();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_32dd64() {
-  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
 void main() {
-  transpose_32dd64();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_32dd64();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_32dd64();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_32dd64() {
-  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
-void main() {
-  transpose_32dd64();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_32dd64();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_32dd64();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.glsl
index 0780c52..9ed21db 100644
--- a/test/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/553e90.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_553e90() {
+  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
+}
+void main() {
+  transpose_553e90();
+}
+#version 310 es
+
+void transpose_553e90() {
+  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_553e90();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_553e90() {
   mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
 }
-void main() {
-  transpose_553e90();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_553e90();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_553e90();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_553e90() {
-  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
-}
 void main() {
-  transpose_553e90();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_553e90();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_553e90();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_553e90() {
-  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
-}
-void main() {
-  transpose_553e90();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_553e90();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_553e90();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.glsl
index e7f0b44..f58d140 100644
--- a/test/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/5c133c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_5c133c() {
+  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+void main() {
+  transpose_5c133c();
+}
+#version 310 es
+
+void transpose_5c133c() {
+  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_5c133c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_5c133c() {
   mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
 }
-void main() {
-  transpose_5c133c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_5c133c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_5c133c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_5c133c() {
-  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
 void main() {
-  transpose_5c133c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_5c133c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_5c133c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_5c133c() {
-  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
-void main() {
-  transpose_5c133c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_5c133c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_5c133c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.glsl
index 8fb501e..bbf467f 100644
--- a/test/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/66fce8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_66fce8() {
+  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+void main() {
+  transpose_66fce8();
+}
+#version 310 es
+
+void transpose_66fce8() {
+  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_66fce8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_66fce8() {
   mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
 }
-void main() {
-  transpose_66fce8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_66fce8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_66fce8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_66fce8() {
-  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
 void main() {
-  transpose_66fce8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_66fce8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_66fce8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_66fce8() {
-  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
-void main() {
-  transpose_66fce8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_66fce8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_66fce8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.glsl
index 8041e2f..b0ec527 100644
--- a/test/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/70ca11.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_70ca11() {
+  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+void main() {
+  transpose_70ca11();
+}
+#version 310 es
+
+void transpose_70ca11() {
+  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_70ca11();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_70ca11() {
   mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
 }
-void main() {
-  transpose_70ca11();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_70ca11();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_70ca11();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_70ca11() {
-  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
 void main() {
-  transpose_70ca11();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_70ca11();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_70ca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_70ca11() {
-  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
-void main() {
-  transpose_70ca11();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_70ca11();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_70ca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.glsl
index 9cb49f1..d59e245 100644
--- a/test/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/7eb2c5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_7eb2c5() {
+  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
+}
+void main() {
+  transpose_7eb2c5();
+}
+#version 310 es
+
+void transpose_7eb2c5() {
+  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_7eb2c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_7eb2c5() {
   mat2 res = mat2(vec2(1.0f), vec2(1.0f));
 }
-void main() {
-  transpose_7eb2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_7eb2c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_7eb2c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_7eb2c5() {
-  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
-}
 void main() {
-  transpose_7eb2c5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_7eb2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_7eb2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_7eb2c5() {
-  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
-}
-void main() {
-  transpose_7eb2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_7eb2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_7eb2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.glsl
index a5b39fb..cf902e5 100644
--- a/test/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/84a763.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_84a763() {
+  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+void main() {
+  transpose_84a763();
+}
+#version 310 es
+
+void transpose_84a763() {
+  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_84a763();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_84a763() {
   mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
 }
-void main() {
-  transpose_84a763();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_84a763();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_84a763();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_84a763() {
-  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
 void main() {
-  transpose_84a763();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_84a763();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_84a763();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_84a763() {
-  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
-void main() {
-  transpose_84a763();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_84a763();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_84a763();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.glsl
index d8d864c..a4fd65e 100644
--- a/test/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/ace596.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_ace596() {
+  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
+}
+void main() {
+  transpose_ace596();
+}
+#version 310 es
+
+void transpose_ace596() {
+  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_ace596();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_ace596() {
   mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
 }
-void main() {
-  transpose_ace596();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_ace596();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_ace596();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_ace596() {
-  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
-}
 void main() {
-  transpose_ace596();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_ace596();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_ace596();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_ace596() {
-  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
-}
-void main() {
-  transpose_ace596();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_ace596();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_ace596();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.glsl
index b92b502..325104a 100644
--- a/test/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/transpose/dc671a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_dc671a() {
+  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+void main() {
+  transpose_dc671a();
+}
+#version 310 es
+
+void transpose_dc671a() {
+  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_dc671a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_dc671a() {
   mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
 }
-void main() {
-  transpose_dc671a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_dc671a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_dc671a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_dc671a() {
-  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
 void main() {
-  transpose_dc671a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_dc671a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_dc671a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_dc671a() {
-  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
-void main() {
-  transpose_dc671a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_dc671a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_dc671a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.glsl
index b83a13c..5af28cc 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 trunc_103ab8() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = trunc_103ab8();
+  v.tint_symbol = trunc_103ab8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_103ab8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_103ab8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 trunc_103ab8() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = trunc_103ab8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_103ab8();
+  v.tint_symbol = trunc_103ab8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_103ab8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 trunc_103ab8() {
   f16vec3 res = f16vec3(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = trunc_103ab8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_103ab8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_103ab8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.glsl
index e7bb6f0..0e4d909 100644
--- a/test/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/117396.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_117396() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  trunc_117396();
+}
+#version 310 es
+
+void trunc_117396() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_117396();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_117396() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  trunc_117396();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_117396();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_117396();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_117396() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  trunc_117396();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_117396();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_117396();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_117396() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  trunc_117396();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_117396();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_117396();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.glsl
index f19bb8e..553c5da 100644
--- a/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/562d05.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 trunc_562d05() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = trunc_562d05();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 trunc_562d05() {
+  vec3 res = vec3(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = trunc_562d05();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 trunc_562d05() {
   vec3 res = vec3(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = trunc_562d05();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_562d05();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_562d05();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 trunc_562d05() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_562d05();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_562d05();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_562d05();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 trunc_562d05() {
-  vec3 res = vec3(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = trunc_562d05();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_562d05();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_562d05();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.glsl
index c42cc92..7fbbf86 100644
--- a/test/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/7d6ded.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_7d6ded() {
+  float res = 1.0f;
+}
+void main() {
+  trunc_7d6ded();
+}
+#version 310 es
+
+void trunc_7d6ded() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_7d6ded();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_7d6ded() {
   float res = 1.0f;
 }
-void main() {
-  trunc_7d6ded();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_7d6ded();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_7d6ded();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_7d6ded() {
-  float res = 1.0f;
-}
 void main() {
-  trunc_7d6ded();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_7d6ded();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_7d6ded();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_7d6ded() {
-  float res = 1.0f;
-}
-void main() {
-  trunc_7d6ded();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_7d6ded();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_7d6ded();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.glsl
index 82f7da8..b6f1575 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 trunc_a56109() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = trunc_a56109();
+  v.tint_symbol = trunc_a56109();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_a56109();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_a56109();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 trunc_a56109() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = trunc_a56109();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_a56109();
+  v.tint_symbol = trunc_a56109();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_a56109();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 trunc_a56109() {
   f16vec2 res = f16vec2(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = trunc_a56109();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_a56109();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_a56109();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.glsl
index 39f30c0..e312044 100644
--- a/test/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/c12555.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_c12555() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  trunc_c12555();
+}
+#version 310 es
+
+void trunc_c12555() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_c12555();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_c12555() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  trunc_c12555();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_c12555();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_c12555();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_c12555() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  trunc_c12555();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_c12555();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_c12555();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_c12555() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  trunc_c12555();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_c12555();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_c12555();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.glsl
index f4b7ff8..deb25e1 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t trunc_cc2b0d() {
   float16_t res = 1.0hf;
   return res;
 }
 void main() {
-  prevent_dce = trunc_cc2b0d();
+  v.tint_symbol = trunc_cc2b0d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_cc2b0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t trunc_cc2b0d() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_cc2b0d();
+  v.tint_symbol = trunc_cc2b0d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_cc2b0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t trunc_cc2b0d() {
   float16_t res = 1.0hf;
   return res;
 }
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_cc2b0d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.glsl
index e523e9c..903912d 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 trunc_ce7c17() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = trunc_ce7c17();
+  v.tint_symbol = trunc_ce7c17();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_ce7c17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 trunc_ce7c17() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_ce7c17();
+  v.tint_symbol = trunc_ce7c17();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_ce7c17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 trunc_ce7c17() {
   f16vec4 res = f16vec4(1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_ce7c17();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.glsl
index a8dc79b..465fde7 100644
--- a/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/e183aa.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 trunc_e183aa() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = trunc_e183aa();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 trunc_e183aa() {
+  vec4 res = vec4(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = trunc_e183aa();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 trunc_e183aa() {
   vec4 res = vec4(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_e183aa();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 trunc_e183aa() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_e183aa();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_e183aa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 trunc_e183aa() {
-  vec4 res = vec4(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_e183aa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.glsl
index 4165eb4..f6db2c4 100644
--- a/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/eb83df.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float trunc_eb83df() {
+  float res = 1.0f;
+  return res;
+}
+void main() {
+  v.tint_symbol = trunc_eb83df();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float trunc_eb83df() {
+  float res = 1.0f;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = trunc_eb83df();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float trunc_eb83df() {
   float res = 1.0f;
   return res;
 }
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_eb83df();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float trunc_eb83df() {
-  float res = 1.0f;
-  return res;
-}
 void main() {
-  prevent_dce = trunc_eb83df();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_eb83df();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float trunc_eb83df() {
-  float res = 1.0f;
-  return res;
-}
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_eb83df();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.glsl
index d8868b1..6557248 100644
--- a/test/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/f0f1a1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_f0f1a1() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  trunc_f0f1a1();
+}
+#version 310 es
+
+void trunc_f0f1a1() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_f0f1a1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_f0f1a1() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  trunc_f0f1a1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_f0f1a1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_f0f1a1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_f0f1a1() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  trunc_f0f1a1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_f0f1a1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_f0f1a1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_f0f1a1() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  trunc_f0f1a1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_f0f1a1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_f0f1a1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.glsl
index c0ad471..d60ac15 100644
--- a/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/trunc/f370d3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 trunc_f370d3() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = trunc_f370d3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 trunc_f370d3() {
+  vec2 res = vec2(1.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = trunc_f370d3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 trunc_f370d3() {
   vec2 res = vec2(1.0f);
   return res;
 }
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_f370d3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 trunc_f370d3() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_f370d3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_f370d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 trunc_f370d3() {
-  vec2 res = vec2(1.0f);
-  return res;
-}
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_f370d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.glsl
index ce9d3de..a345571 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16float_32a5cf() {
+  vec2 res = vec2(0.00000005960464477539f, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack2x16float_32a5cf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16float_32a5cf() {
+  vec2 res = vec2(0.00000005960464477539f, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack2x16float_32a5cf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 unpack2x16float_32a5cf() {
   vec2 res = vec2(0.00000005960464477539f, 0.0f);
   return res;
 }
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack2x16float_32a5cf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16float_32a5cf() {
-  vec2 res = vec2(0.00000005960464477539f, 0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = unpack2x16float_32a5cf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16float_32a5cf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16float_32a5cf() {
-  vec2 res = vec2(0.00000005960464477539f, 0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16float_32a5cf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl
index 2a39582..dd017be 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16snorm_b4aea6() {
+  vec2 res = vec2(0.00003051850944757462f, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack2x16snorm_b4aea6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16snorm_b4aea6() {
+  vec2 res = vec2(0.00003051850944757462f, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack2x16snorm_b4aea6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 unpack2x16snorm_b4aea6() {
   vec2 res = vec2(0.00003051850944757462f, 0.0f);
   return res;
 }
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack2x16snorm_b4aea6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16snorm_b4aea6() {
-  vec2 res = vec2(0.00003051850944757462f, 0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16snorm_b4aea6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16snorm_b4aea6() {
-  vec2 res = vec2(0.00003051850944757462f, 0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16snorm_b4aea6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl
index da57d2b..0d62da4 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16unorm_7699c0() {
+  vec2 res = vec2(0.00001525902189314365f, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack2x16unorm_7699c0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16unorm_7699c0() {
+  vec2 res = vec2(0.00001525902189314365f, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack2x16unorm_7699c0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 unpack2x16unorm_7699c0() {
   vec2 res = vec2(0.00001525902189314365f, 0.0f);
   return res;
 }
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack2x16unorm_7699c0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16unorm_7699c0() {
-  vec2 res = vec2(0.00001525902189314365f, 0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16unorm_7699c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16unorm_7699c0() {
-  vec2 res = vec2(0.00001525902189314365f, 0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16unorm_7699c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl
index 7ac4bd0..1c744c9 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 unpack4x8snorm_523fb3() {
+  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack4x8snorm_523fb3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 unpack4x8snorm_523fb3() {
+  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack4x8snorm_523fb3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 unpack4x8snorm_523fb3() {
   vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
   return res;
 }
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4x8snorm_523fb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 unpack4x8snorm_523fb3() {
-  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8snorm_523fb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 unpack4x8snorm_523fb3() {
-  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8snorm_523fb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.glsl
index c726de7..a508469 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 unpack4x8unorm_750c74() {
+  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack4x8unorm_750c74();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 unpack4x8unorm_750c74() {
+  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack4x8unorm_750c74();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 unpack4x8unorm_750c74() {
   vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
   return res;
 }
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4x8unorm_750c74();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 unpack4x8unorm_750c74() {
-  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
-  return res;
-}
 void main() {
-  prevent_dce = unpack4x8unorm_750c74();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8unorm_750c74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 unpack4x8unorm_750c74() {
-  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
-  return res;
-}
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8unorm_750c74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.ir.glsl
index 3c86fde..2fb6b3b 100644
--- a/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack4xI8/830900.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 unpack4xI8_830900() {
+  ivec4 res = ivec4(1, 0, 0, 0);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack4xI8_830900();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 unpack4xI8_830900() {
+  ivec4 res = ivec4(1, 0, 0, 0);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack4xI8_830900();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 unpack4xI8_830900() {
   ivec4 res = ivec4(1, 0, 0, 0);
   return res;
 }
-void main() {
-  prevent_dce = unpack4xI8_830900();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xI8_830900();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4xI8_830900();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 unpack4xI8_830900() {
-  ivec4 res = ivec4(1, 0, 0, 0);
-  return res;
-}
 void main() {
-  prevent_dce = unpack4xI8_830900();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xI8_830900();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4xI8_830900();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 unpack4xI8_830900() {
-  ivec4 res = ivec4(1, 0, 0, 0);
-  return res;
-}
-void main() {
-  prevent_dce = unpack4xI8_830900();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xI8_830900();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4xI8_830900();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.ir.glsl b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.ir.glsl
index c689821..b17d61b 100644
--- a/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/literal/unpack4xU8/a5ea55.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 unpack4xU8_a5ea55() {
+  uvec4 res = uvec4(1u, 0u, 0u, 0u);
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack4xU8_a5ea55();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 unpack4xU8_a5ea55() {
+  uvec4 res = uvec4(1u, 0u, 0u, 0u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack4xU8_a5ea55();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 unpack4xU8_a5ea55() {
   uvec4 res = uvec4(1u, 0u, 0u, 0u);
   return res;
 }
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4xU8_a5ea55();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 unpack4xU8_a5ea55() {
-  uvec4 res = uvec4(1u, 0u, 0u, 0u);
-  return res;
-}
 void main() {
-  prevent_dce = unpack4xU8_a5ea55();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4xU8_a5ea55();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 unpack4xU8_a5ea55() {
-  uvec4 res = uvec4(1u, 0u, 0u, 0u);
-  return res;
-}
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4xU8_a5ea55();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.glsl
index e5aa533..e5cece3 100644
--- a/test/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/002533.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 abs_002533() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_002533();
+  v.tint_symbol = abs_002533();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 abs_002533() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_002533();
+  v.tint_symbol = abs_002533();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_002533();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 abs_002533() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_002533();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_002533();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_002533();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 abs_002533() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_002533();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_002533();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_002533();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.glsl
index 5a29e96..9a09e44 100644
--- a/test/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/005174.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 abs_005174() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_005174();
+  v.tint_symbol = abs_005174();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 abs_005174() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_005174();
+  v.tint_symbol = abs_005174();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_005174();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 abs_005174() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_005174();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_005174();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_005174();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 abs_005174() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_005174();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_005174();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_005174();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.glsl
index bc5e836..0b8c0e8 100644
--- a/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/1e9d53.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 abs_1e9d53() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_1e9d53();
+  v.tint_symbol = abs_1e9d53();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 abs_1e9d53() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_1e9d53();
+  v.tint_symbol = abs_1e9d53();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_1e9d53();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 abs_1e9d53() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_1e9d53();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 abs_1e9d53() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_1e9d53();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_1e9d53();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_1e9d53();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.glsl
index 4a88d83..9835581 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_2f861b() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  abs_2f861b();
+}
+#version 310 es
+
+void abs_2f861b() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_2f861b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_2f861b() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  abs_2f861b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_2f861b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_2f861b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_2f861b() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  abs_2f861b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_2f861b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_2f861b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_2f861b() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  abs_2f861b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_2f861b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_2f861b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.glsl
index 5c0e9d3..41f7f65 100644
--- a/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/421ca3.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 abs_421ca3() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_421ca3();
+  v.tint_symbol = abs_421ca3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_421ca3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_421ca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 abs_421ca3() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_421ca3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_421ca3();
+  v.tint_symbol = abs_421ca3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_421ca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 abs_421ca3() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_421ca3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_421ca3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_421ca3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.glsl
index 064f546..69e4c7d 100644
--- a/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/4ad288.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int abs_4ad288() {
   int arg_0 = 1;
   int res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_4ad288();
+  v.tint_symbol = abs_4ad288();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int abs_4ad288() {
+  int arg_0 = 1;
+  int res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_4ad288();
+  v.tint_symbol = abs_4ad288();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_4ad288();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int abs_4ad288() {
   int arg_0 = 1;
   int res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_4ad288();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_4ad288();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_4ad288();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int abs_4ad288() {
-  int arg_0 = 1;
-  int res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_4ad288();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_4ad288();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_4ad288();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.glsl
index 81c7de6..bacacda 100644
--- a/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/538d29.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 abs_538d29() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_538d29();
+  v.tint_symbol = abs_538d29();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_538d29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_538d29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 abs_538d29() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_538d29();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_538d29();
+  v.tint_symbol = abs_538d29();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_538d29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 abs_538d29() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_538d29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_538d29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_538d29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.glsl
index ede5bb8..54714a8 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_577d6e() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  abs_577d6e();
+}
+#version 310 es
+
+void abs_577d6e() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_577d6e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_577d6e() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  abs_577d6e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_577d6e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_577d6e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_577d6e() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  abs_577d6e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_577d6e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_577d6e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_577d6e() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  abs_577d6e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_577d6e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_577d6e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.glsl
index 5bc7884..34eac65 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_5a8af1() {
+  int res = 1;
+}
+void main() {
+  abs_5a8af1();
+}
+#version 310 es
+
+void abs_5a8af1() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_5a8af1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_5a8af1() {
   int res = 1;
 }
-void main() {
-  abs_5a8af1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_5a8af1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_5a8af1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_5a8af1() {
-  int res = 1;
-}
 void main() {
-  abs_5a8af1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_5a8af1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_5a8af1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_5a8af1() {
-  int res = 1;
-}
-void main() {
-  abs_5a8af1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_5a8af1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_5a8af1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.glsl
index 908192f..f8238bd 100644
--- a/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/5ad50a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 abs_5ad50a() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_5ad50a();
+  v.tint_symbol = abs_5ad50a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 abs_5ad50a() {
+  ivec3 arg_0 = ivec3(1);
+  ivec3 res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_5ad50a();
+  v.tint_symbol = abs_5ad50a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ad50a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 abs_5ad50a() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_5ad50a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 abs_5ad50a() {
-  ivec3 arg_0 = ivec3(1);
-  ivec3 res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_5ad50a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ad50a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ad50a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.glsl
index bca4b3b..1b0ccb8 100644
--- a/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/5ae4fe.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 abs_5ae4fe() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_5ae4fe();
+  v.tint_symbol = abs_5ae4fe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ae4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 abs_5ae4fe() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_5ae4fe();
+  v.tint_symbol = abs_5ae4fe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_5ae4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 abs_5ae4fe() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_5ae4fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_5ae4fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.glsl
index ea98cfb..c82e279 100644
--- a/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/7faa9e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 abs_7faa9e() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_7faa9e();
+  v.tint_symbol = abs_7faa9e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 abs_7faa9e() {
+  ivec2 arg_0 = ivec2(1);
+  ivec2 res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_7faa9e();
+  v.tint_symbol = abs_7faa9e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7faa9e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 abs_7faa9e() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_7faa9e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 abs_7faa9e() {
-  ivec2 arg_0 = ivec2(1);
-  ivec2 res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_7faa9e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_7faa9e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_7faa9e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.glsl
index 03804f4..a48800b 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_82ff9d() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  abs_82ff9d();
+}
+#version 310 es
+
+void abs_82ff9d() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_82ff9d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_82ff9d() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  abs_82ff9d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_82ff9d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_82ff9d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_82ff9d() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  abs_82ff9d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_82ff9d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_82ff9d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_82ff9d() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  abs_82ff9d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_82ff9d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_82ff9d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.glsl
index 6dc976b..c34b852 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_8ca9b1() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  abs_8ca9b1();
+}
+#version 310 es
+
+void abs_8ca9b1() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_8ca9b1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_8ca9b1() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  abs_8ca9b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_8ca9b1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_8ca9b1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_8ca9b1() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  abs_8ca9b1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_8ca9b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_8ca9b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_8ca9b1() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  abs_8ca9b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_8ca9b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_8ca9b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.glsl
index 365c3c1..376baed 100644
--- a/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/9c80a6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 abs_9c80a6() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_9c80a6();
+  v.tint_symbol = abs_9c80a6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 abs_9c80a6() {
+  ivec4 arg_0 = ivec4(1);
+  ivec4 res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_9c80a6();
+  v.tint_symbol = abs_9c80a6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_9c80a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 abs_9c80a6() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_9c80a6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 abs_9c80a6() {
-  ivec4 arg_0 = ivec4(1);
-  ivec4 res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_9c80a6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_9c80a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_9c80a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.glsl
index abca85c..6a56d49 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_aedb6d() {
+  float res = 1.0f;
+}
+void main() {
+  abs_aedb6d();
+}
+#version 310 es
+
+void abs_aedb6d() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_aedb6d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_aedb6d() {
   float res = 1.0f;
 }
-void main() {
-  abs_aedb6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_aedb6d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_aedb6d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_aedb6d() {
-  float res = 1.0f;
-}
 void main() {
-  abs_aedb6d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_aedb6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_aedb6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_aedb6d() {
-  float res = 1.0f;
-}
-void main() {
-  abs_aedb6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_aedb6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_aedb6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.glsl
index 7b1cfe7..9e12592 100644
--- a/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/b96037.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float abs_b96037() {
   float arg_0 = 1.0f;
   float res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_b96037();
+  v.tint_symbol = abs_b96037();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float abs_b96037() {
+  float arg_0 = 1.0f;
+  float res = abs(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_b96037();
+  v.tint_symbol = abs_b96037();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_b96037();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float abs_b96037() {
   float arg_0 = 1.0f;
   float res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_b96037();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_b96037();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_b96037();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float abs_b96037() {
-  float arg_0 = 1.0f;
-  float res = abs(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = abs_b96037();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_b96037();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_b96037();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.glsl
index 974e81d..019254e 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_c3321c() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  abs_c3321c();
+}
+#version 310 es
+
+void abs_c3321c() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_c3321c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_c3321c() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  abs_c3321c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_c3321c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_c3321c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_c3321c() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  abs_c3321c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_c3321c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_c3321c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_c3321c() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  abs_c3321c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_c3321c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_c3321c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.glsl
index 3d8d9e4..97e4bd4 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void abs_e28785() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  abs_e28785();
+}
+#version 310 es
+
+void abs_e28785() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  abs_e28785();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void abs_e28785() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  abs_e28785();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_e28785();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   abs_e28785();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_e28785() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  abs_e28785();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_e28785();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_e28785();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void abs_e28785() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  abs_e28785();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  abs_e28785();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  abs_e28785();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.glsl
index 87669ef..40a6594 100644
--- a/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/abs/fd247f.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t abs_fd247f() {
   float16_t arg_0 = 1.0hf;
   float16_t res = abs(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = abs_fd247f();
+  v.tint_symbol = abs_fd247f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_fd247f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_fd247f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t abs_fd247f() {
   float16_t arg_0 = 1.0hf;
   float16_t res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_fd247f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = abs_fd247f();
+  v.tint_symbol = abs_fd247f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = abs_fd247f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t abs_fd247f() {
   float16_t arg_0 = 1.0hf;
   float16_t res = abs(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = abs_fd247f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = abs_fd247f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = abs_fd247f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.glsl
index 6608715..3650881 100644
--- a/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/004aff.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acos_004aff() {
   f16vec2 arg_0 = f16vec2(0.96875hf);
   f16vec2 res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_004aff();
+  v.tint_symbol = acos_004aff();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_004aff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_004aff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acos_004aff() {
   f16vec2 arg_0 = f16vec2(0.96875hf);
   f16vec2 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_004aff();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_004aff();
+  v.tint_symbol = acos_004aff();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_004aff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 acos_004aff() {
   f16vec2 arg_0 = f16vec2(0.96875hf);
   f16vec2 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_004aff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_004aff();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_004aff();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.glsl
index 0ae4906..9200608 100644
--- a/test/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/069188.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_069188() {
+  vec3 res = vec3(0.25f);
+}
+void main() {
+  acos_069188();
+}
+#version 310 es
+
+void acos_069188() {
+  vec3 res = vec3(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_069188();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_069188() {
   vec3 res = vec3(0.25f);
 }
-void main() {
-  acos_069188();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_069188();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_069188();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_069188() {
-  vec3 res = vec3(0.25f);
-}
 void main() {
-  acos_069188();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_069188();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_069188();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_069188() {
-  vec3 res = vec3(0.25f);
-}
-void main() {
-  acos_069188();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_069188();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_069188();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.glsl
index a5b141e..4e385db 100644
--- a/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_15d35b() {
+  vec2 res = vec2(0.25f);
+}
+void main() {
+  acos_15d35b();
+}
+#version 310 es
+
+void acos_15d35b() {
+  vec2 res = vec2(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_15d35b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_15d35b() {
   vec2 res = vec2(0.25f);
 }
-void main() {
-  acos_15d35b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_15d35b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_15d35b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_15d35b() {
-  vec2 res = vec2(0.25f);
-}
 void main() {
-  acos_15d35b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_15d35b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_15d35b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_15d35b() {
-  vec2 res = vec2(0.25f);
-}
-void main() {
-  acos_15d35b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_15d35b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_15d35b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.glsl
index 006320a..d20cc96 100644
--- a/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/203628.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acos_203628() {
   f16vec4 arg_0 = f16vec4(0.96875hf);
   f16vec4 res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_203628();
+  v.tint_symbol = acos_203628();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_203628();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_203628();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acos_203628() {
   f16vec4 arg_0 = f16vec4(0.96875hf);
   f16vec4 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_203628();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_203628();
+  v.tint_symbol = acos_203628();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_203628();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 acos_203628() {
   f16vec4 arg_0 = f16vec4(0.96875hf);
   f16vec4 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_203628();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_203628();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_203628();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.glsl
index e2c973b..6f5e9cc 100644
--- a/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/303e3d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acos_303e3d() {
   float16_t arg_0 = 0.96875hf;
   float16_t res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_303e3d();
+  v.tint_symbol = acos_303e3d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_303e3d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_303e3d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acos_303e3d() {
   float16_t arg_0 = 0.96875hf;
   float16_t res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_303e3d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_303e3d();
+  v.tint_symbol = acos_303e3d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_303e3d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t acos_303e3d() {
   float16_t arg_0 = 0.96875hf;
   float16_t res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_303e3d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_303e3d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_303e3d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.glsl
index a318e5b..849a45f 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float acos_489247() {
   float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_489247();
+  v.tint_symbol = acos_489247();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float acos_489247() {
+  float arg_0 = 0.96891242265701293945f;
+  float res = acos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_489247();
+  v.tint_symbol = acos_489247();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_489247();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float acos_489247() {
   float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_489247();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_489247();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_489247();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float acos_489247() {
-  float arg_0 = 0.96891242265701293945f;
-  float res = acos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acos_489247();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_489247();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_489247();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.glsl
index 377e0a3..4d92fb6 100644
--- a/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_4dac75() {
+  vec4 res = vec4(0.25f);
+}
+void main() {
+  acos_4dac75();
+}
+#version 310 es
+
+void acos_4dac75() {
+  vec4 res = vec4(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_4dac75();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_4dac75() {
   vec4 res = vec4(0.25f);
 }
-void main() {
-  acos_4dac75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_4dac75();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_4dac75();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_4dac75() {
-  vec4 res = vec4(0.25f);
-}
 void main() {
-  acos_4dac75();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_4dac75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_4dac75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_4dac75() {
-  vec4 res = vec4(0.25f);
-}
-void main() {
-  acos_4dac75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_4dac75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_4dac75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.glsl
index 4df6e06..12c3548 100644
--- a/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acos_5e9ad2() {
+  float res = 0.25f;
+}
+void main() {
+  acos_5e9ad2();
+}
+#version 310 es
+
+void acos_5e9ad2() {
+  float res = 0.25f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acos_5e9ad2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acos_5e9ad2() {
   float res = 0.25f;
 }
-void main() {
-  acos_5e9ad2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_5e9ad2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acos_5e9ad2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_5e9ad2() {
-  float res = 0.25f;
-}
 void main() {
-  acos_5e9ad2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_5e9ad2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_5e9ad2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acos_5e9ad2() {
-  float res = 0.25f;
-}
-void main() {
-  acos_5e9ad2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acos_5e9ad2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acos_5e9ad2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.glsl
index 3cc375c..92b206a 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 acos_8e2acf() {
   vec4 arg_0 = vec4(0.96891242265701293945f);
   vec4 res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_8e2acf();
+  v.tint_symbol = acos_8e2acf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 acos_8e2acf() {
+  vec4 arg_0 = vec4(0.96891242265701293945f);
+  vec4 res = acos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_8e2acf();
+  v.tint_symbol = acos_8e2acf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_8e2acf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 acos_8e2acf() {
   vec4 arg_0 = vec4(0.96891242265701293945f);
   vec4 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_8e2acf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 acos_8e2acf() {
-  vec4 arg_0 = vec4(0.96891242265701293945f);
-  vec4 res = acos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acos_8e2acf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_8e2acf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_8e2acf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.glsl
index f7d54a2..fefe5ac 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 acos_a610c4() {
   vec3 arg_0 = vec3(0.96891242265701293945f);
   vec3 res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_a610c4();
+  v.tint_symbol = acos_a610c4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 acos_a610c4() {
+  vec3 arg_0 = vec3(0.96891242265701293945f);
+  vec3 res = acos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_a610c4();
+  v.tint_symbol = acos_a610c4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_a610c4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 acos_a610c4() {
   vec3 arg_0 = vec3(0.96891242265701293945f);
   vec3 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_a610c4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_a610c4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_a610c4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 acos_a610c4() {
-  vec3 arg_0 = vec3(0.96891242265701293945f);
-  vec3 res = acos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acos_a610c4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_a610c4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_a610c4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.glsl
index 76f28cd..09018fb 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 acos_dfc915() {
   vec2 arg_0 = vec2(0.96891242265701293945f);
   vec2 res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_dfc915();
+  v.tint_symbol = acos_dfc915();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 acos_dfc915() {
+  vec2 arg_0 = vec2(0.96891242265701293945f);
+  vec2 res = acos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_dfc915();
+  v.tint_symbol = acos_dfc915();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_dfc915();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 acos_dfc915() {
   vec2 arg_0 = vec2(0.96891242265701293945f);
   vec2 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_dfc915();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_dfc915();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_dfc915();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 acos_dfc915() {
-  vec2 arg_0 = vec2(0.96891242265701293945f);
-  vec2 res = acos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acos_dfc915();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_dfc915();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_dfc915();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.glsl
index 08424e0..eb5dce9 100644
--- a/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acos/f47057.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acos_f47057() {
   f16vec3 arg_0 = f16vec3(0.96875hf);
   f16vec3 res = acos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acos_f47057();
+  v.tint_symbol = acos_f47057();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_f47057();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_f47057();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acos_f47057() {
   f16vec3 arg_0 = f16vec3(0.96875hf);
   f16vec3 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_f47057();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acos_f47057();
+  v.tint_symbol = acos_f47057();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acos_f47057();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 acos_f47057() {
   f16vec3 arg_0 = f16vec3(0.96875hf);
   f16vec3 res = acos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acos_f47057();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acos_f47057();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acos_f47057();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.glsl
index 298b06b..9232c07 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_17260e() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  acosh_17260e();
+}
+#version 310 es
+
+void acosh_17260e() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_17260e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_17260e() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  acosh_17260e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_17260e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_17260e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_17260e() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  acosh_17260e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_17260e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_17260e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_17260e() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  acosh_17260e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_17260e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_17260e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.glsl
index 31eb23e..f2d76b7 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_3433e8() {
+  float res = 1.0f;
+}
+void main() {
+  acosh_3433e8();
+}
+#version 310 es
+
+void acosh_3433e8() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_3433e8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_3433e8() {
   float res = 1.0f;
 }
-void main() {
-  acosh_3433e8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_3433e8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_3433e8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_3433e8() {
-  float res = 1.0f;
-}
 void main() {
-  acosh_3433e8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_3433e8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_3433e8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_3433e8() {
-  float res = 1.0f;
-}
-void main() {
-  acosh_3433e8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_3433e8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_3433e8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.glsl
index 49604ab..1bed89c 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_490aae() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  acosh_490aae();
+}
+#version 310 es
+
+void acosh_490aae() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_490aae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_490aae() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  acosh_490aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_490aae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_490aae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_490aae() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  acosh_490aae();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_490aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_490aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_490aae() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  acosh_490aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_490aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_490aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.glsl
index 635337e..427c395 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acosh_5f49d8() {
   f16vec2 arg_0 = f16vec2(1.54296875hf);
   f16vec2 res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_5f49d8();
+  v.tint_symbol = acosh_5f49d8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_5f49d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 acosh_5f49d8() {
   f16vec2 arg_0 = f16vec2(1.54296875hf);
   f16vec2 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_5f49d8();
+  v.tint_symbol = acosh_5f49d8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_5f49d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 acosh_5f49d8() {
   f16vec2 arg_0 = f16vec2(1.54296875hf);
   f16vec2 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_5f49d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_5f49d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.glsl
index 2827e93..4714030 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 acosh_640883() {
   vec2 arg_0 = vec2(1.54308068752288818359f);
   vec2 res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_640883();
+  v.tint_symbol = acosh_640883();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 acosh_640883() {
+  vec2 arg_0 = vec2(1.54308068752288818359f);
+  vec2 res = acosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_640883();
+  v.tint_symbol = acosh_640883();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_640883();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 acosh_640883() {
   vec2 arg_0 = vec2(1.54308068752288818359f);
   vec2 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_640883();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_640883();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_640883();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 acosh_640883() {
-  vec2 arg_0 = vec2(1.54308068752288818359f);
-  vec2 res = acosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_640883();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_640883();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_640883();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.glsl
index e9dc64a..32e0851 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void acosh_9f213e() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  acosh_9f213e();
+}
+#version 310 es
+
+void acosh_9f213e() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  acosh_9f213e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void acosh_9f213e() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  acosh_9f213e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_9f213e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   acosh_9f213e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_9f213e() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  acosh_9f213e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_9f213e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_9f213e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void acosh_9f213e() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  acosh_9f213e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  acosh_9f213e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  acosh_9f213e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.glsl
index e919f14..543867c 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acosh_a37dfe() {
   float16_t arg_0 = 1.54296875hf;
   float16_t res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_a37dfe();
+  v.tint_symbol = acosh_a37dfe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_a37dfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t acosh_a37dfe() {
   float16_t arg_0 = 1.54296875hf;
   float16_t res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_a37dfe();
+  v.tint_symbol = acosh_a37dfe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_a37dfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t acosh_a37dfe() {
   float16_t arg_0 = 1.54296875hf;
   float16_t res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_a37dfe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_a37dfe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.glsl
index fe0b00d..70877af 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 acosh_d51ccb() {
   vec4 arg_0 = vec4(1.54308068752288818359f);
   vec4 res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_d51ccb();
+  v.tint_symbol = acosh_d51ccb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 acosh_d51ccb() {
+  vec4 arg_0 = vec4(1.54308068752288818359f);
+  vec4 res = acosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_d51ccb();
+  v.tint_symbol = acosh_d51ccb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_d51ccb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 acosh_d51ccb() {
   vec4 arg_0 = vec4(1.54308068752288818359f);
   vec4 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_d51ccb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 acosh_d51ccb() {
-  vec4 arg_0 = vec4(1.54308068752288818359f);
-  vec4 res = acosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_d51ccb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_d51ccb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_d51ccb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.glsl
index 0a92042..2e10d72 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acosh_de60d8() {
   f16vec4 arg_0 = f16vec4(1.54296875hf);
   f16vec4 res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_de60d8();
+  v.tint_symbol = acosh_de60d8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_de60d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_de60d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 acosh_de60d8() {
   f16vec4 arg_0 = f16vec4(1.54296875hf);
   f16vec4 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_de60d8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_de60d8();
+  v.tint_symbol = acosh_de60d8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_de60d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 acosh_de60d8() {
   f16vec4 arg_0 = f16vec4(1.54296875hf);
   f16vec4 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_de60d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_de60d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_de60d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.glsl
index 0bcacfe..0637127 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 acosh_e38f5c() {
   vec3 arg_0 = vec3(1.54308068752288818359f);
   vec3 res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_e38f5c();
+  v.tint_symbol = acosh_e38f5c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 acosh_e38f5c() {
+  vec3 arg_0 = vec3(1.54308068752288818359f);
+  vec3 res = acosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_e38f5c();
+  v.tint_symbol = acosh_e38f5c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_e38f5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 acosh_e38f5c() {
   vec3 arg_0 = vec3(1.54308068752288818359f);
   vec3 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_e38f5c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 acosh_e38f5c() {
-  vec3 arg_0 = vec3(1.54308068752288818359f);
-  vec3 res = acosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_e38f5c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_e38f5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_e38f5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.glsl
index 6eeb05c..ea0a4f4 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float acosh_ecf2d1() {
   float arg_0 = 1.54308068752288818359f;
   float res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_ecf2d1();
+  v.tint_symbol = acosh_ecf2d1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float acosh_ecf2d1() {
+  float arg_0 = 1.54308068752288818359f;
+  float res = acosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_ecf2d1();
+  v.tint_symbol = acosh_ecf2d1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_ecf2d1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float acosh_ecf2d1() {
   float arg_0 = 1.54308068752288818359f;
   float res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_ecf2d1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float acosh_ecf2d1() {
-  float arg_0 = 1.54308068752288818359f;
-  float res = acosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = acosh_ecf2d1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_ecf2d1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_ecf2d1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.glsl
index aa87473..a5c2364 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acosh_f56574() {
   f16vec3 arg_0 = f16vec3(1.54296875hf);
   f16vec3 res = acosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = acosh_f56574();
+  v.tint_symbol = acosh_f56574();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_f56574();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_f56574();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 acosh_f56574() {
   f16vec3 arg_0 = f16vec3(1.54296875hf);
   f16vec3 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_f56574();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = acosh_f56574();
+  v.tint_symbol = acosh_f56574();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = acosh_f56574();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 acosh_f56574() {
   f16vec3 arg_0 = f16vec3(1.54296875hf);
   f16vec3 res = acosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = acosh_f56574();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = acosh_f56574();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = acosh_f56574();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.glsl
index 40c2af1..aa66fc7 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 asin_064953() {
   vec4 arg_0 = vec4(0.47942554950714111328f);
   vec4 res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_064953();
+  v.tint_symbol = asin_064953();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 asin_064953() {
+  vec4 arg_0 = vec4(0.47942554950714111328f);
+  vec4 res = asin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_064953();
+  v.tint_symbol = asin_064953();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_064953();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 asin_064953() {
   vec4 arg_0 = vec4(0.47942554950714111328f);
   vec4 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_064953();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_064953();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_064953();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 asin_064953() {
-  vec4 arg_0 = vec4(0.47942554950714111328f);
-  vec4 res = asin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asin_064953();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_064953();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_064953();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.glsl
index 5c0c217..1195fb0 100644
--- a/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_0bac07() {
+  vec3 res = vec3(0.5f);
+}
+void main() {
+  asin_0bac07();
+}
+#version 310 es
+
+void asin_0bac07() {
+  vec3 res = vec3(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_0bac07();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_0bac07() {
   vec3 res = vec3(0.5f);
 }
-void main() {
-  asin_0bac07();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_0bac07();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_0bac07();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_0bac07() {
-  vec3 res = vec3(0.5f);
-}
 void main() {
-  asin_0bac07();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_0bac07();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_0bac07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_0bac07() {
-  vec3 res = vec3(0.5f);
-}
-void main() {
-  asin_0bac07();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_0bac07();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_0bac07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.glsl
index c52eaa0..5c5d3e4 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asin_11dfda() {
   float16_t arg_0 = 0.479248046875hf;
   float16_t res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_11dfda();
+  v.tint_symbol = asin_11dfda();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_11dfda();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_11dfda();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asin_11dfda() {
   float16_t arg_0 = 0.479248046875hf;
   float16_t res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_11dfda();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_11dfda();
+  v.tint_symbol = asin_11dfda();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_11dfda();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t asin_11dfda() {
   float16_t arg_0 = 0.479248046875hf;
   float16_t res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_11dfda();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_11dfda();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_11dfda();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.glsl
index 1740f1a..8165b7e 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asin_2d8e29() {
   f16vec3 arg_0 = f16vec3(0.479248046875hf);
   f16vec3 res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_2d8e29();
+  v.tint_symbol = asin_2d8e29();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_2d8e29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_2d8e29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asin_2d8e29() {
   f16vec3 arg_0 = f16vec3(0.479248046875hf);
   f16vec3 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_2d8e29();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_2d8e29();
+  v.tint_symbol = asin_2d8e29();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_2d8e29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 asin_2d8e29() {
   f16vec3 arg_0 = f16vec3(0.479248046875hf);
   f16vec3 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_2d8e29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_2d8e29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_2d8e29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.glsl
index 04c9b1b..75520ba 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asin_3cfbd4() {
   f16vec4 arg_0 = f16vec4(0.479248046875hf);
   f16vec4 res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_3cfbd4();
+  v.tint_symbol = asin_3cfbd4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_3cfbd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asin_3cfbd4() {
   f16vec4 arg_0 = f16vec4(0.479248046875hf);
   f16vec4 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_3cfbd4();
+  v.tint_symbol = asin_3cfbd4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_3cfbd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 asin_3cfbd4() {
   f16vec4 arg_0 = f16vec4(0.479248046875hf);
   f16vec4 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_3cfbd4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_3cfbd4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.glsl
index 55d1161..2ac68c5 100644
--- a/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_64bb1f() {
+  vec4 res = vec4(0.5f);
+}
+void main() {
+  asin_64bb1f();
+}
+#version 310 es
+
+void asin_64bb1f() {
+  vec4 res = vec4(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_64bb1f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_64bb1f() {
   vec4 res = vec4(0.5f);
 }
-void main() {
-  asin_64bb1f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_64bb1f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_64bb1f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_64bb1f() {
-  vec4 res = vec4(0.5f);
-}
 void main() {
-  asin_64bb1f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_64bb1f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_64bb1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_64bb1f() {
-  vec4 res = vec4(0.5f);
-}
-void main() {
-  asin_64bb1f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_64bb1f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_64bb1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.glsl
index ad004c1..30bafe7 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 asin_7b6a44() {
   vec2 arg_0 = vec2(0.47942554950714111328f);
   vec2 res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_7b6a44();
+  v.tint_symbol = asin_7b6a44();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 asin_7b6a44() {
+  vec2 arg_0 = vec2(0.47942554950714111328f);
+  vec2 res = asin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_7b6a44();
+  v.tint_symbol = asin_7b6a44();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_7b6a44();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 asin_7b6a44() {
   vec2 arg_0 = vec2(0.47942554950714111328f);
   vec2 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_7b6a44();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 asin_7b6a44() {
-  vec2 arg_0 = vec2(0.47942554950714111328f);
-  vec2 res = asin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asin_7b6a44();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_7b6a44();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_7b6a44();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.glsl
index 57a7ba6..8e90267 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 asin_8cd9c9() {
   vec3 arg_0 = vec3(0.47942554950714111328f);
   vec3 res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_8cd9c9();
+  v.tint_symbol = asin_8cd9c9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 asin_8cd9c9() {
+  vec3 arg_0 = vec3(0.47942554950714111328f);
+  vec3 res = asin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_8cd9c9();
+  v.tint_symbol = asin_8cd9c9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_8cd9c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 asin_8cd9c9() {
   vec3 arg_0 = vec3(0.47942554950714111328f);
   vec3 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_8cd9c9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 asin_8cd9c9() {
-  vec3 arg_0 = vec3(0.47942554950714111328f);
-  vec3 res = asin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asin_8cd9c9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_8cd9c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_8cd9c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.glsl
index 88b526d..048e94d 100644
--- a/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_a5dd88() {
+  vec2 res = vec2(0.5f);
+}
+void main() {
+  asin_a5dd88();
+}
+#version 310 es
+
+void asin_a5dd88() {
+  vec2 res = vec2(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_a5dd88();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_a5dd88() {
   vec2 res = vec2(0.5f);
 }
-void main() {
-  asin_a5dd88();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a5dd88();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_a5dd88();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a5dd88() {
-  vec2 res = vec2(0.5f);
-}
 void main() {
-  asin_a5dd88();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a5dd88();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a5dd88();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a5dd88() {
-  vec2 res = vec2(0.5f);
-}
-void main() {
-  asin_a5dd88();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a5dd88();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a5dd88();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.glsl
index 0de4fc2..a63b426 100644
--- a/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asin_a6d73a() {
+  float res = 0.5f;
+}
+void main() {
+  asin_a6d73a();
+}
+#version 310 es
+
+void asin_a6d73a() {
+  float res = 0.5f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asin_a6d73a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asin_a6d73a() {
   float res = 0.5f;
 }
-void main() {
-  asin_a6d73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a6d73a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asin_a6d73a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a6d73a() {
-  float res = 0.5f;
-}
 void main() {
-  asin_a6d73a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a6d73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a6d73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asin_a6d73a() {
-  float res = 0.5f;
-}
-void main() {
-  asin_a6d73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asin_a6d73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asin_a6d73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.glsl
index ea2d76e..49f4e93 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asin_b4aced() {
   f16vec2 arg_0 = f16vec2(0.479248046875hf);
   f16vec2 res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_b4aced();
+  v.tint_symbol = asin_b4aced();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_b4aced();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_b4aced();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asin_b4aced() {
   f16vec2 arg_0 = f16vec2(0.479248046875hf);
   f16vec2 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_b4aced();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_b4aced();
+  v.tint_symbol = asin_b4aced();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_b4aced();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 asin_b4aced() {
   f16vec2 arg_0 = f16vec2(0.479248046875hf);
   f16vec2 res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_b4aced();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_b4aced();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_b4aced();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.glsl
index e0a5a40..18224a5 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float asin_c0c272() {
   float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asin_c0c272();
+  v.tint_symbol = asin_c0c272();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float asin_c0c272() {
+  float arg_0 = 0.47942554950714111328f;
+  float res = asin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asin_c0c272();
+  v.tint_symbol = asin_c0c272();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_c0c272();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float asin_c0c272() {
   float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asin_c0c272();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_c0c272();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asin_c0c272();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float asin_c0c272() {
-  float arg_0 = 0.47942554950714111328f;
-  float res = asin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asin_c0c272();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asin_c0c272();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asin_c0c272();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.glsl
index 4fb85e1..10bc556 100644
--- a/test/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/157447.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float asinh_157447() {
   float arg_0 = 1.0f;
   float res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_157447();
+  v.tint_symbol = asinh_157447();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float asinh_157447() {
+  float arg_0 = 1.0f;
+  float res = asinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_157447();
+  v.tint_symbol = asinh_157447();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_157447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float asinh_157447() {
   float arg_0 = 1.0f;
   float res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_157447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_157447();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_157447();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float asinh_157447() {
-  float arg_0 = 1.0f;
-  float res = asinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_157447();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_157447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_157447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.glsl
index eca502c..01f1328 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_16b543() {
+  vec2 res = vec2(0.88137358427047729492f);
+}
+void main() {
+  asinh_16b543();
+}
+#version 310 es
+
+void asinh_16b543() {
+  vec2 res = vec2(0.88137358427047729492f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_16b543();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_16b543() {
   vec2 res = vec2(0.88137358427047729492f);
 }
-void main() {
-  asinh_16b543();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_16b543();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_16b543();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_16b543() {
-  vec2 res = vec2(0.88137358427047729492f);
-}
 void main() {
-  asinh_16b543();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_16b543();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_16b543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_16b543() {
-  vec2 res = vec2(0.88137358427047729492f);
-}
-void main() {
-  asinh_16b543();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_16b543();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_16b543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.glsl
index 0abd766..2deb7f4 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_180015() {
+  float res = 0.88137358427047729492f;
+}
+void main() {
+  asinh_180015();
+}
+#version 310 es
+
+void asinh_180015() {
+  float res = 0.88137358427047729492f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_180015();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_180015() {
   float res = 0.88137358427047729492f;
 }
-void main() {
-  asinh_180015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_180015();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_180015();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_180015() {
-  float res = 0.88137358427047729492f;
-}
 void main() {
-  asinh_180015();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_180015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_180015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_180015() {
-  float res = 0.88137358427047729492f;
-}
-void main() {
-  asinh_180015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_180015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_180015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.glsl
index 76edb4f..51d497d 100644
--- a/test/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/2265ee.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 asinh_2265ee() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_2265ee();
+  v.tint_symbol = asinh_2265ee();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 asinh_2265ee() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = asinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_2265ee();
+  v.tint_symbol = asinh_2265ee();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_2265ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 asinh_2265ee() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_2265ee();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 asinh_2265ee() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = asinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_2265ee();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_2265ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_2265ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.glsl
index ff94fa9..b0395ee 100644
--- a/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/468a48.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asinh_468a48() {
   float16_t arg_0 = 1.0hf;
   float16_t res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_468a48();
+  v.tint_symbol = asinh_468a48();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_468a48();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_468a48();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t asinh_468a48() {
   float16_t arg_0 = 1.0hf;
   float16_t res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_468a48();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_468a48();
+  v.tint_symbol = asinh_468a48();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_468a48();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t asinh_468a48() {
   float16_t arg_0 = 1.0hf;
   float16_t res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_468a48();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_468a48();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_468a48();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.glsl
index ed7906d..a365d6a 100644
--- a/test/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/4a2226.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 asinh_4a2226() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_4a2226();
+  v.tint_symbol = asinh_4a2226();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 asinh_4a2226() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = asinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_4a2226();
+  v.tint_symbol = asinh_4a2226();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_4a2226();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 asinh_4a2226() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_4a2226();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 asinh_4a2226() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = asinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_4a2226();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_4a2226();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_4a2226();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.glsl
index 5b40511..a917715 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_51079e() {
+  vec3 res = vec3(0.88137358427047729492f);
+}
+void main() {
+  asinh_51079e();
+}
+#version 310 es
+
+void asinh_51079e() {
+  vec3 res = vec3(0.88137358427047729492f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_51079e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_51079e() {
   vec3 res = vec3(0.88137358427047729492f);
 }
-void main() {
-  asinh_51079e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_51079e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_51079e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_51079e() {
-  vec3 res = vec3(0.88137358427047729492f);
-}
 void main() {
-  asinh_51079e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_51079e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_51079e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_51079e() {
-  vec3 res = vec3(0.88137358427047729492f);
-}
-void main() {
-  asinh_51079e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_51079e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_51079e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.glsl
index 1a3f61a..15775de 100644
--- a/test/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/8d2e51.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 asinh_8d2e51() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_8d2e51();
+  v.tint_symbol = asinh_8d2e51();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 asinh_8d2e51() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = asinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_8d2e51();
+  v.tint_symbol = asinh_8d2e51();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_8d2e51();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 asinh_8d2e51() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_8d2e51();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 asinh_8d2e51() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = asinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = asinh_8d2e51();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_8d2e51();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_8d2e51();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.glsl
index 73aa4b5..282be25 100644
--- a/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/95ab2b.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asinh_95ab2b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_95ab2b();
+  v.tint_symbol = asinh_95ab2b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_95ab2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 asinh_95ab2b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_95ab2b();
+  v.tint_symbol = asinh_95ab2b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_95ab2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 asinh_95ab2b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_95ab2b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_95ab2b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.glsl
index 5cd8cbc..ce86dd1 100644
--- a/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/ad8f8b.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asinh_ad8f8b() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_ad8f8b();
+  v.tint_symbol = asinh_ad8f8b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_ad8f8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 asinh_ad8f8b() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_ad8f8b();
+  v.tint_symbol = asinh_ad8f8b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_ad8f8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 asinh_ad8f8b() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_ad8f8b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_ad8f8b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.glsl
index 7cd71de..c4fcf26 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void asinh_cf8603() {
+  vec4 res = vec4(0.88137358427047729492f);
+}
+void main() {
+  asinh_cf8603();
+}
+#version 310 es
+
+void asinh_cf8603() {
+  vec4 res = vec4(0.88137358427047729492f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  asinh_cf8603();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void asinh_cf8603() {
   vec4 res = vec4(0.88137358427047729492f);
 }
-void main() {
-  asinh_cf8603();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_cf8603();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   asinh_cf8603();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_cf8603() {
-  vec4 res = vec4(0.88137358427047729492f);
-}
 void main() {
-  asinh_cf8603();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_cf8603();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_cf8603();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void asinh_cf8603() {
-  vec4 res = vec4(0.88137358427047729492f);
-}
-void main() {
-  asinh_cf8603();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  asinh_cf8603();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  asinh_cf8603();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.glsl
index 82bfa8f..fafed37 100644
--- a/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/asinh/fb5e8c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asinh_fb5e8c() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = asinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = asinh_fb5e8c();
+  v.tint_symbol = asinh_fb5e8c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_fb5e8c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 asinh_fb5e8c() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = asinh_fb5e8c();
+  v.tint_symbol = asinh_fb5e8c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = asinh_fb5e8c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 asinh_fb5e8c() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = asinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = asinh_fb5e8c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = asinh_fb5e8c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.glsl
index d138741..39d5966 100644
--- a/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/02979a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float atan_02979a() {
   float arg_0 = 1.0f;
   float res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_02979a();
+  v.tint_symbol = atan_02979a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atan_02979a() {
+  float arg_0 = 1.0f;
+  float res = atan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_02979a();
+  v.tint_symbol = atan_02979a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_02979a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float atan_02979a() {
   float arg_0 = 1.0f;
   float res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_02979a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_02979a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_02979a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atan_02979a() {
-  float arg_0 = 1.0f;
-  float res = atan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atan_02979a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_02979a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_02979a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.glsl
index 0c0c6aa..13f61b4 100644
--- a/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/19faea.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan_19faea() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_19faea();
+  v.tint_symbol = atan_19faea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_19faea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_19faea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan_19faea() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_19faea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_19faea();
+  v.tint_symbol = atan_19faea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_19faea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 atan_19faea() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_19faea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_19faea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_19faea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.glsl
index fd6bcdc..30aac5d 100644
--- a/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/1e1764.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan_1e1764() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_1e1764();
+  v.tint_symbol = atan_1e1764();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_1e1764();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_1e1764();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan_1e1764() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_1e1764();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_1e1764();
+  v.tint_symbol = atan_1e1764();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_1e1764();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 atan_1e1764() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_1e1764();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_1e1764();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_1e1764();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.glsl
index 5ed7c77..9f6ea5f 100644
--- a/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/331e6d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 atan_331e6d() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_331e6d();
+  v.tint_symbol = atan_331e6d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atan_331e6d() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = atan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_331e6d();
+  v.tint_symbol = atan_331e6d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_331e6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 atan_331e6d() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_331e6d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_331e6d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_331e6d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atan_331e6d() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = atan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atan_331e6d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_331e6d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_331e6d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.glsl
index cc25868..dcd81e9 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_5ca7b8() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+void main() {
+  atan_5ca7b8();
+}
+#version 310 es
+
+void atan_5ca7b8() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_5ca7b8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_5ca7b8() {
   vec2 res = vec2(0.78539818525314331055f);
 }
-void main() {
-  atan_5ca7b8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_5ca7b8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_5ca7b8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_5ca7b8() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
 void main() {
-  atan_5ca7b8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_5ca7b8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_5ca7b8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_5ca7b8() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
-void main() {
-  atan_5ca7b8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_5ca7b8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_5ca7b8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.glsl
index 914b192..907578a 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_749e1b() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+void main() {
+  atan_749e1b();
+}
+#version 310 es
+
+void atan_749e1b() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_749e1b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_749e1b() {
   vec3 res = vec3(0.78539818525314331055f);
 }
-void main() {
-  atan_749e1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_749e1b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_749e1b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_749e1b() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
 void main() {
-  atan_749e1b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_749e1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_749e1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_749e1b() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
-void main() {
-  atan_749e1b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_749e1b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_749e1b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.glsl
index 04c59c4..8721302 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_7a2a75() {
+  float res = 0.78539818525314331055f;
+}
+void main() {
+  atan_7a2a75();
+}
+#version 310 es
+
+void atan_7a2a75() {
+  float res = 0.78539818525314331055f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_7a2a75();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_7a2a75() {
   float res = 0.78539818525314331055f;
 }
-void main() {
-  atan_7a2a75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_7a2a75();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_7a2a75();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_7a2a75() {
-  float res = 0.78539818525314331055f;
-}
 void main() {
-  atan_7a2a75();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_7a2a75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_7a2a75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_7a2a75() {
-  float res = 0.78539818525314331055f;
-}
-void main() {
-  atan_7a2a75();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_7a2a75();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_7a2a75();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.glsl
index 5946275..b5ba4bc 100644
--- a/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/a5f421.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan_a5f421() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_a5f421();
+  v.tint_symbol = atan_a5f421();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a5f421();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a5f421();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan_a5f421() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_a5f421();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_a5f421();
+  v.tint_symbol = atan_a5f421();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a5f421();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 atan_a5f421() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_a5f421();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a5f421();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_a5f421();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.glsl
index f971fb6..d7be303 100644
--- a/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/a7ba61.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan_a7ba61() {
   float16_t arg_0 = 1.0hf;
   float16_t res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_a7ba61();
+  v.tint_symbol = atan_a7ba61();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a7ba61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a7ba61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan_a7ba61() {
   float16_t arg_0 = 1.0hf;
   float16_t res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_a7ba61();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_a7ba61();
+  v.tint_symbol = atan_a7ba61();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a7ba61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t atan_a7ba61() {
   float16_t arg_0 = 1.0hf;
   float16_t res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_a7ba61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a7ba61();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_a7ba61();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.glsl
index 9056e43..2460de5 100644
--- a/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/a8b696.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 atan_a8b696() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_a8b696();
+  v.tint_symbol = atan_a8b696();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atan_a8b696() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = atan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_a8b696();
+  v.tint_symbol = atan_a8b696();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a8b696();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 atan_a8b696() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_a8b696();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a8b696();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_a8b696();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atan_a8b696() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = atan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atan_a8b696();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_a8b696();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_a8b696();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.glsl
index 5c51f93..12c11bd 100644
--- a/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/ad96e4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 atan_ad96e4() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = atan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atan_ad96e4();
+  v.tint_symbol = atan_ad96e4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atan_ad96e4() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = atan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan_ad96e4();
+  v.tint_symbol = atan_ad96e4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_ad96e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 atan_ad96e4() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = atan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan_ad96e4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atan_ad96e4() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = atan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atan_ad96e4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan_ad96e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan_ad96e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl
index 4308d79..cfd1eb2 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan_d17fb2() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+void main() {
+  atan_d17fb2();
+}
+#version 310 es
+
+void atan_d17fb2() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan_d17fb2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan_d17fb2() {
   vec4 res = vec4(0.78539818525314331055f);
 }
-void main() {
-  atan_d17fb2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan_d17fb2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_d17fb2() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
 void main() {
-  atan_d17fb2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_d17fb2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan_d17fb2() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
-void main() {
-  atan_d17fb2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan_d17fb2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan_d17fb2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.glsl
index d73b9c5..ab41168 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_034ace() {
+  float res = 0.78539818525314331055f;
+}
+void main() {
+  atan2_034ace();
+}
+#version 310 es
+
+void atan2_034ace() {
+  float res = 0.78539818525314331055f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_034ace();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_034ace() {
   float res = 0.78539818525314331055f;
 }
-void main() {
-  atan2_034ace();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_034ace();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_034ace();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_034ace() {
-  float res = 0.78539818525314331055f;
-}
 void main() {
-  atan2_034ace();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_034ace();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_034ace();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_034ace() {
-  float res = 0.78539818525314331055f;
-}
-void main() {
-  atan2_034ace();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_034ace();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_034ace();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.glsl
index 4a6e036..0831b7c 100644
--- a/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/21dfea.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan2_21dfea() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_21dfea();
+  v.tint_symbol = atan2_21dfea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_21dfea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_21dfea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atan2_21dfea() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_21dfea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_21dfea();
+  v.tint_symbol = atan2_21dfea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_21dfea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 atan2_21dfea() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_21dfea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_21dfea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_21dfea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.glsl
index 1c8489b..fc3d9e3 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_3c2865() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+void main() {
+  atan2_3c2865();
+}
+#version 310 es
+
+void atan2_3c2865() {
+  vec3 res = vec3(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_3c2865();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_3c2865() {
   vec3 res = vec3(0.78539818525314331055f);
 }
-void main() {
-  atan2_3c2865();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_3c2865();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_3c2865();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_3c2865() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
 void main() {
-  atan2_3c2865();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_3c2865();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_3c2865();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_3c2865() {
-  vec3 res = vec3(0.78539818525314331055f);
-}
-void main() {
-  atan2_3c2865();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_3c2865();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_3c2865();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.glsl
index ca10649..a3f12c2 100644
--- a/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/57fb13.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 atan2_57fb13() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_57fb13();
+  v.tint_symbol = atan2_57fb13();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_57fb13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 atan2_57fb13() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_57fb13();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_57fb13();
+  v.tint_symbol = atan2_57fb13();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_57fb13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 atan2_57fb13() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_57fb13();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_57fb13();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.glsl
index c64cdf1..8ea794d 100644
--- a/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/93febc.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan2_93febc() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_93febc();
+  v.tint_symbol = atan2_93febc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_93febc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_93febc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atan2_93febc() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_93febc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_93febc();
+  v.tint_symbol = atan2_93febc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_93febc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 atan2_93febc() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_93febc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_93febc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_93febc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.glsl
index cf82550..db7517e 100644
--- a/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/96057c.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float atan2_96057c() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_96057c();
+  v.tint_symbol = atan2_96057c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_96057c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_96057c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float atan2_96057c() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_96057c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_96057c();
+  v.tint_symbol = atan2_96057c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_96057c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float atan2_96057c() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_96057c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_96057c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_96057c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.glsl
index fc79a8b..365e45a 100644
--- a/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/a70d0d.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 atan2_a70d0d() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_a70d0d();
+  v.tint_symbol = atan2_a70d0d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_a70d0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 atan2_a70d0d() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_a70d0d();
+  v.tint_symbol = atan2_a70d0d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_a70d0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 atan2_a70d0d() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_a70d0d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_a70d0d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.glsl
index adda368..a2995e6 100644
--- a/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/ae713e.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 atan2_ae713e() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_ae713e();
+  v.tint_symbol = atan2_ae713e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ae713e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 atan2_ae713e() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_ae713e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_ae713e();
+  v.tint_symbol = atan2_ae713e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ae713e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 atan2_ae713e() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ae713e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_ae713e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.glsl
index e341891..31aa131 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_c19683() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+void main() {
+  atan2_c19683();
+}
+#version 310 es
+
+void atan2_c19683() {
+  vec2 res = vec2(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_c19683();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_c19683() {
   vec2 res = vec2(0.78539818525314331055f);
 }
-void main() {
-  atan2_c19683();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c19683();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_c19683();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c19683() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
 void main() {
-  atan2_c19683();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c19683();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c19683();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c19683() {
-  vec2 res = vec2(0.78539818525314331055f);
-}
-void main() {
-  atan2_c19683();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c19683();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c19683();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.glsl
index e8f9d40..4a208d3 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atan2_c4be45() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+void main() {
+  atan2_c4be45();
+}
+#version 310 es
+
+void atan2_c4be45() {
+  vec4 res = vec4(0.78539818525314331055f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atan2_c4be45();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atan2_c4be45() {
   vec4 res = vec4(0.78539818525314331055f);
 }
-void main() {
-  atan2_c4be45();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c4be45();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atan2_c4be45();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c4be45() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
 void main() {
-  atan2_c4be45();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c4be45();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c4be45();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atan2_c4be45() {
-  vec4 res = vec4(0.78539818525314331055f);
-}
-void main() {
-  atan2_c4be45();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atan2_c4be45();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atan2_c4be45();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.glsl
index b4aa5c6..3f44623 100644
--- a/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/ca698e.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan2_ca698e() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_ca698e();
+  v.tint_symbol = atan2_ca698e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ca698e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ca698e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atan2_ca698e() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_ca698e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_ca698e();
+  v.tint_symbol = atan2_ca698e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_ca698e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t atan2_ca698e() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_ca698e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_ca698e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_ca698e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.glsl
index fd716d3..f8523c1 100644
--- a/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atan2/d983ab.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan2_d983ab() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = atan2_d983ab();
+  v.tint_symbol = atan2_d983ab();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_d983ab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_d983ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atan2_d983ab() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_d983ab();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atan2_d983ab();
+  v.tint_symbol = atan2_d983ab();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atan2_d983ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 atan2_d983ab() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = atan(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = atan2_d983ab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atan2_d983ab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atan2_d983ab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.glsl
index 185caa5..10ca02e 100644
--- a/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 atanh_440cca() {
   vec3 arg_0 = vec3(0.5f);
   vec3 res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_440cca();
+  v.tint_symbol = atanh_440cca();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 atanh_440cca() {
+  vec3 arg_0 = vec3(0.5f);
+  vec3 res = atanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_440cca();
+  v.tint_symbol = atanh_440cca();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_440cca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 atanh_440cca() {
   vec3 arg_0 = vec3(0.5f);
   vec3 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_440cca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_440cca();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_440cca();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 atanh_440cca() {
-  vec3 arg_0 = vec3(0.5f);
-  vec3 res = atanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_440cca();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_440cca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_440cca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.glsl
index 18d8eda..ee7d382 100644
--- a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atanh_5bf88d() {
   f16vec2 arg_0 = f16vec2(0.5hf);
   f16vec2 res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_5bf88d();
+  v.tint_symbol = atanh_5bf88d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_5bf88d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 atanh_5bf88d() {
   f16vec2 arg_0 = f16vec2(0.5hf);
   f16vec2 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_5bf88d();
+  v.tint_symbol = atanh_5bf88d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_5bf88d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 atanh_5bf88d() {
   f16vec2 arg_0 = f16vec2(0.5hf);
   f16vec2 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_5bf88d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_5bf88d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.glsl
index 74280c6..1c3a757 100644
--- a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_70d5bd() {
+  vec2 res = vec2(0.54930615425109863281f);
+}
+void main() {
+  atanh_70d5bd();
+}
+#version 310 es
+
+void atanh_70d5bd() {
+  vec2 res = vec2(0.54930615425109863281f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_70d5bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_70d5bd() {
   vec2 res = vec2(0.54930615425109863281f);
 }
-void main() {
-  atanh_70d5bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_70d5bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_70d5bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_70d5bd() {
-  vec2 res = vec2(0.54930615425109863281f);
-}
 void main() {
-  atanh_70d5bd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_70d5bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_70d5bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_70d5bd() {
-  vec2 res = vec2(0.54930615425109863281f);
-}
-void main() {
-  atanh_70d5bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_70d5bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_70d5bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.glsl
index 89431bb..44fa45f 100644
--- a/test/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/7997d8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float atanh_7997d8() {
   float arg_0 = 0.5f;
   float res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_7997d8();
+  v.tint_symbol = atanh_7997d8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float atanh_7997d8() {
+  float arg_0 = 0.5f;
+  float res = atanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_7997d8();
+  v.tint_symbol = atanh_7997d8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_7997d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float atanh_7997d8() {
   float arg_0 = 0.5f;
   float res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_7997d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float atanh_7997d8() {
-  float arg_0 = 0.5f;
-  float res = atanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_7997d8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_7997d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_7997d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.glsl
index 91a66c9..9129cb3 100644
--- a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_7f2874() {
+  vec3 res = vec3(0.54930615425109863281f);
+}
+void main() {
+  atanh_7f2874();
+}
+#version 310 es
+
+void atanh_7f2874() {
+  vec3 res = vec3(0.54930615425109863281f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_7f2874();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_7f2874() {
   vec3 res = vec3(0.54930615425109863281f);
 }
-void main() {
-  atanh_7f2874();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_7f2874();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_7f2874();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_7f2874() {
-  vec3 res = vec3(0.54930615425109863281f);
-}
 void main() {
-  atanh_7f2874();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_7f2874();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_7f2874();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_7f2874() {
-  vec3 res = vec3(0.54930615425109863281f);
-}
-void main() {
-  atanh_7f2874();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_7f2874();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_7f2874();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.glsl
index e55c854..f51bf10 100644
--- a/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 atanh_c0e634() {
   vec2 arg_0 = vec2(0.5f);
   vec2 res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_c0e634();
+  v.tint_symbol = atanh_c0e634();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 atanh_c0e634() {
+  vec2 arg_0 = vec2(0.5f);
+  vec2 res = atanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_c0e634();
+  v.tint_symbol = atanh_c0e634();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_c0e634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 atanh_c0e634() {
   vec2 arg_0 = vec2(0.5f);
   vec2 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_c0e634();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 atanh_c0e634() {
-  vec2 arg_0 = vec2(0.5f);
-  vec2 res = atanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_c0e634();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_c0e634();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_c0e634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.glsl
index 50143f0..64cb96d 100644
--- a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_c5dc32() {
+  float res = 0.54930615425109863281f;
+}
+void main() {
+  atanh_c5dc32();
+}
+#version 310 es
+
+void atanh_c5dc32() {
+  float res = 0.54930615425109863281f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_c5dc32();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_c5dc32() {
   float res = 0.54930615425109863281f;
 }
-void main() {
-  atanh_c5dc32();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_c5dc32();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_c5dc32();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_c5dc32() {
-  float res = 0.54930615425109863281f;
-}
 void main() {
-  atanh_c5dc32();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_c5dc32();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_c5dc32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_c5dc32() {
-  float res = 0.54930615425109863281f;
-}
-void main() {
-  atanh_c5dc32();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_c5dc32();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_c5dc32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.glsl
index 18f9ef9..e23862b 100644
--- a/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/d2d8cd.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atanh_d2d8cd() {
   float16_t arg_0 = 0.5hf;
   float16_t res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_d2d8cd();
+  v.tint_symbol = atanh_d2d8cd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_d2d8cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t atanh_d2d8cd() {
   float16_t arg_0 = 0.5hf;
   float16_t res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_d2d8cd();
+  v.tint_symbol = atanh_d2d8cd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_d2d8cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t atanh_d2d8cd() {
   float16_t arg_0 = 0.5hf;
   float16_t res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_d2d8cd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_d2d8cd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.glsl
index 4063add..e3c0ff9 100644
--- a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atanh_e3b450() {
   f16vec4 arg_0 = f16vec4(0.5hf);
   f16vec4 res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_e3b450();
+  v.tint_symbol = atanh_e3b450();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_e3b450();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_e3b450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 atanh_e3b450() {
   f16vec4 arg_0 = f16vec4(0.5hf);
   f16vec4 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_e3b450();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_e3b450();
+  v.tint_symbol = atanh_e3b450();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_e3b450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 atanh_e3b450() {
   f16vec4 arg_0 = f16vec4(0.5hf);
   f16vec4 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_e3b450();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_e3b450();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_e3b450();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.glsl
index 1e223c9..6c080bc 100644
--- a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void atanh_e431bb() {
+  vec4 res = vec4(0.54930615425109863281f);
+}
+void main() {
+  atanh_e431bb();
+}
+#version 310 es
+
+void atanh_e431bb() {
+  vec4 res = vec4(0.54930615425109863281f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  atanh_e431bb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void atanh_e431bb() {
   vec4 res = vec4(0.54930615425109863281f);
 }
-void main() {
-  atanh_e431bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_e431bb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   atanh_e431bb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_e431bb() {
-  vec4 res = vec4(0.54930615425109863281f);
-}
 void main() {
-  atanh_e431bb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_e431bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_e431bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void atanh_e431bb() {
-  vec4 res = vec4(0.54930615425109863281f);
-}
-void main() {
-  atanh_e431bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  atanh_e431bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  atanh_e431bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.glsl
index b5e91c4..201c182 100644
--- a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atanh_ec4b06() {
   f16vec3 arg_0 = f16vec3(0.5hf);
   f16vec3 res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_ec4b06();
+  v.tint_symbol = atanh_ec4b06();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_ec4b06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 atanh_ec4b06() {
   f16vec3 arg_0 = f16vec3(0.5hf);
   f16vec3 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_ec4b06();
+  v.tint_symbol = atanh_ec4b06();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_ec4b06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 atanh_ec4b06() {
   f16vec3 arg_0 = f16vec3(0.5hf);
   f16vec3 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_ec4b06();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_ec4b06();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.glsl
index ee3834b..1c9543f 100644
--- a/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 atanh_f3e01b() {
   vec4 arg_0 = vec4(0.5f);
   vec4 res = atanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = atanh_f3e01b();
+  v.tint_symbol = atanh_f3e01b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 atanh_f3e01b() {
+  vec4 arg_0 = vec4(0.5f);
+  vec4 res = atanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = atanh_f3e01b();
+  v.tint_symbol = atanh_f3e01b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_f3e01b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 atanh_f3e01b() {
   vec4 arg_0 = vec4(0.5f);
   vec4 res = atanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = atanh_f3e01b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 atanh_f3e01b() {
-  vec4 arg_0 = vec4(0.5f);
-  vec4 res = atanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = atanh_f3e01b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = atanh_f3e01b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = atanh_f3e01b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.ir.glsl
index 4643a17..68e23f2 100644
--- a/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/bitcast/160c09.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_160c09() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_160c09();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 bitcast_160c09() {
+  uvec4 res = uvec4(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_160c09();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 bitcast_160c09() {
   uvec4 res = uvec4(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_160c09();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_160c09() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_160c09();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_160c09();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 bitcast_160c09() {
-  uvec4 res = uvec4(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_160c09();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_160c09();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/bitcast/70b121.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/bitcast/70b121.wgsl.expected.ir.glsl
index 8f7979c..09df200 100644
--- a/test/tint/builtins/gen/var/bitcast/70b121.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/bitcast/70b121.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_70b121() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_70b121();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 bitcast_70b121() {
+  uvec2 res = uvec2(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_70b121();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 bitcast_70b121() {
   uvec2 res = uvec2(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_70b121();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_70b121() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_70b121();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_70b121();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 bitcast_70b121() {
-  uvec2 res = uvec2(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_70b121();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_70b121();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/bitcast/879dc9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/bitcast/879dc9.wgsl.expected.ir.glsl
index 737a284..45e65f4 100644
--- a/test/tint/builtins/gen/var/bitcast/879dc9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/bitcast/879dc9.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_879dc9() {
+  uint res = 1u;
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_879dc9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint bitcast_879dc9() {
+  uint res = 1u;
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_879dc9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint bitcast_879dc9() {
   uint res = 1u;
   return res;
 }
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_879dc9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_879dc9() {
-  uint res = 1u;
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_879dc9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_879dc9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint bitcast_879dc9() {
-  uint res = 1u;
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_879dc9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_879dc9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/bitcast/f756cd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/bitcast/f756cd.wgsl.expected.ir.glsl
index a00140c..31fcfdc 100644
--- a/test/tint/builtins/gen/var/bitcast/f756cd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/bitcast/f756cd.wgsl.expected.ir.glsl
@@ -1,109 +1,56 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_f756cd() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+void main() {
+  v.tint_symbol = bitcast_f756cd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 bitcast_f756cd() {
+  uvec3 res = uvec3(1u);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = bitcast_f756cd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 bitcast_f756cd() {
   uvec3 res = uvec3(1u);
   return res;
 }
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = bitcast_f756cd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_f756cd() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
 void main() {
-  prevent_dce = bitcast_f756cd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_f756cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function already has a body 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 bitcast_f756cd() {
-  uvec3 res = uvec3(1u);
-  return res;
-}
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = bitcast_f756cd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = bitcast_f756cd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.glsl
index d1d1432..a129595 100644
--- a/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/09bf52.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ceil_09bf52() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_09bf52();
+  v.tint_symbol = ceil_09bf52();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_09bf52();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_09bf52();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ceil_09bf52() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_09bf52();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_09bf52();
+  v.tint_symbol = ceil_09bf52();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_09bf52();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 ceil_09bf52() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_09bf52();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_09bf52();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_09bf52();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.glsl
index 8c8bbfb..ad89344 100644
--- a/test/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/11b1dc.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_11b1dc() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  ceil_11b1dc();
+}
+#version 310 es
+
+void ceil_11b1dc() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_11b1dc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_11b1dc() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  ceil_11b1dc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_11b1dc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_11b1dc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_11b1dc() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  ceil_11b1dc();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_11b1dc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_11b1dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_11b1dc() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  ceil_11b1dc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_11b1dc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_11b1dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.glsl
index e9656cf..aac61af 100644
--- a/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/18c240.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ceil_18c240() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_18c240();
+  v.tint_symbol = ceil_18c240();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_18c240();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_18c240();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ceil_18c240() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_18c240();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_18c240();
+  v.tint_symbol = ceil_18c240();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_18c240();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 ceil_18c240() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_18c240();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_18c240();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_18c240();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.glsl
index 0564c87..dbfe5d1 100644
--- a/test/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/32c946.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_32c946() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  ceil_32c946();
+}
+#version 310 es
+
+void ceil_32c946() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_32c946();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_32c946() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  ceil_32c946();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_32c946();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_32c946();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_32c946() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  ceil_32c946();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_32c946();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_32c946();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_32c946() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  ceil_32c946();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_32c946();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_32c946();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.glsl
index 3ad5796..a349ed9 100644
--- a/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/34064b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 ceil_34064b() {
   vec3 arg_0 = vec3(1.5f);
   vec3 res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_34064b();
+  v.tint_symbol = ceil_34064b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ceil_34064b() {
+  vec3 arg_0 = vec3(1.5f);
+  vec3 res = ceil(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_34064b();
+  v.tint_symbol = ceil_34064b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_34064b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 ceil_34064b() {
   vec3 arg_0 = vec3(1.5f);
   vec3 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_34064b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_34064b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_34064b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ceil_34064b() {
-  vec3 arg_0 = vec3(1.5f);
-  vec3 res = ceil(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_34064b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_34064b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_34064b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.glsl
index bb79990..d108ea1 100644
--- a/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/4bca2a.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ceil_4bca2a() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_4bca2a();
+  v.tint_symbol = ceil_4bca2a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_4bca2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ceil_4bca2a() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_4bca2a();
+  v.tint_symbol = ceil_4bca2a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_4bca2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 ceil_4bca2a() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_4bca2a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_4bca2a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.glsl
index 79a0415..46c965c 100644
--- a/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/678655.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float ceil_678655() {
   float arg_0 = 1.5f;
   float res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_678655();
+  v.tint_symbol = ceil_678655();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ceil_678655() {
+  float arg_0 = 1.5f;
+  float res = ceil(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_678655();
+  v.tint_symbol = ceil_678655();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_678655();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float ceil_678655() {
   float arg_0 = 1.5f;
   float res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_678655();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_678655();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_678655();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ceil_678655() {
-  float arg_0 = 1.5f;
-  float res = ceil(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_678655();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_678655();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_678655();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.glsl
index 3fbdb47..ff968e9 100644
--- a/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/96f597.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 ceil_96f597() {
   vec2 arg_0 = vec2(1.5f);
   vec2 res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_96f597();
+  v.tint_symbol = ceil_96f597();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ceil_96f597() {
+  vec2 arg_0 = vec2(1.5f);
+  vec2 res = ceil(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_96f597();
+  v.tint_symbol = ceil_96f597();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_96f597();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 ceil_96f597() {
   vec2 arg_0 = vec2(1.5f);
   vec2 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_96f597();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_96f597();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_96f597();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ceil_96f597() {
-  vec2 arg_0 = vec2(1.5f);
-  vec2 res = ceil(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_96f597();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_96f597();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_96f597();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.glsl
index 8fdc761..a1d8eef 100644
--- a/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/b74c16.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 ceil_b74c16() {
   vec4 arg_0 = vec4(1.5f);
   vec4 res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_b74c16();
+  v.tint_symbol = ceil_b74c16();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ceil_b74c16() {
+  vec4 arg_0 = vec4(1.5f);
+  vec4 res = ceil(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_b74c16();
+  v.tint_symbol = ceil_b74c16();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_b74c16();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 ceil_b74c16() {
   vec4 arg_0 = vec4(1.5f);
   vec4 res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_b74c16();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ceil_b74c16() {
-  vec4 arg_0 = vec4(1.5f);
-  vec4 res = ceil(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = ceil_b74c16();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_b74c16();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_b74c16();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.glsl
index eeb9c34..45e1857 100644
--- a/test/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/bb2ca2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_bb2ca2() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  ceil_bb2ca2();
+}
+#version 310 es
+
+void ceil_bb2ca2() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_bb2ca2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_bb2ca2() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  ceil_bb2ca2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_bb2ca2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_bb2ca2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_bb2ca2() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  ceil_bb2ca2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_bb2ca2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_bb2ca2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_bb2ca2() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  ceil_bb2ca2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_bb2ca2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_bb2ca2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.glsl
index bb8ea8e..f7dc596 100644
--- a/test/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/e0b70a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ceil_e0b70a() {
+  float res = 2.0f;
+}
+void main() {
+  ceil_e0b70a();
+}
+#version 310 es
+
+void ceil_e0b70a() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ceil_e0b70a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ceil_e0b70a() {
   float res = 2.0f;
 }
-void main() {
-  ceil_e0b70a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_e0b70a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ceil_e0b70a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_e0b70a() {
-  float res = 2.0f;
-}
 void main() {
-  ceil_e0b70a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_e0b70a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_e0b70a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ceil_e0b70a() {
-  float res = 2.0f;
-}
-void main() {
-  ceil_e0b70a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ceil_e0b70a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ceil_e0b70a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.glsl
index 4ca8d4b..e241b00 100644
--- a/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ceil/f3f889.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ceil_f3f889() {
   float16_t arg_0 = 1.5hf;
   float16_t res = ceil(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = ceil_f3f889();
+  v.tint_symbol = ceil_f3f889();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_f3f889();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_f3f889();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ceil_f3f889() {
   float16_t arg_0 = 1.5hf;
   float16_t res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_f3f889();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ceil_f3f889();
+  v.tint_symbol = ceil_f3f889();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ceil_f3f889();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t ceil_f3f889() {
   float16_t arg_0 = 1.5hf;
   float16_t res = ceil(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = ceil_f3f889();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ceil_f3f889();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ceil_f3f889();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.glsl
index 76a3429..3e3cf34 100644
--- a/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/0acf8f.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 clamp_0acf8f() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_0acf8f();
+  v.tint_symbol = clamp_0acf8f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_0acf8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 clamp_0acf8f() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -56,37 +30,18 @@
   vec2 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_0acf8f();
+  v.tint_symbol = clamp_0acf8f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_0acf8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 clamp_0acf8f() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -94,25 +49,17 @@
   vec2 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_0acf8f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_0acf8f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.glsl
index 9dd57ef..2407c92 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_177548() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  clamp_177548();
+}
+#version 310 es
+
+void clamp_177548() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_177548();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_177548() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  clamp_177548();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_177548();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_177548();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_177548() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  clamp_177548();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_177548();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_177548();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_177548() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  clamp_177548();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_177548();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_177548();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.glsl
index be8c185..c10f489 100644
--- a/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/1a32e3.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 clamp_1a32e3() {
+  ivec4 arg_0 = ivec4(1);
+  ivec4 arg_1 = ivec4(1);
+  ivec4 arg_2 = ivec4(1);
+  ivec4 v_1 = arg_2;
+  ivec4 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_1a32e3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 clamp_1a32e3() {
+  ivec4 arg_0 = ivec4(1);
+  ivec4 arg_1 = ivec4(1);
+  ivec4 arg_2 = ivec4(1);
+  ivec4 v_1 = arg_2;
+  ivec4 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_1a32e3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 clamp_1a32e3() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
@@ -19,103 +52,17 @@
   ivec4 res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_1a32e3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 clamp_1a32e3() {
-  ivec4 arg_0 = ivec4(1);
-  ivec4 arg_1 = ivec4(1);
-  ivec4 arg_2 = ivec4(1);
-  ivec4 v = arg_2;
-  ivec4 res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_1a32e3();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_1a32e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 clamp_1a32e3() {
-  ivec4 arg_0 = ivec4(1);
-  ivec4 arg_1 = ivec4(1);
-  ivec4 arg_2 = ivec4(1);
-  ivec4 v = arg_2;
-  ivec4 res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_1a32e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_1a32e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.glsl
index cc28a91..79cf2f8 100644
--- a/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/235b29.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 clamp_235b29() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_235b29();
+  v.tint_symbol = clamp_235b29();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_235b29();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_235b29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 clamp_235b29() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -58,38 +32,19 @@
   f16vec2 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_235b29();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_235b29();
+  v.tint_symbol = clamp_235b29();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_235b29();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 clamp_235b29() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -97,25 +52,17 @@
   f16vec2 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_235b29();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_235b29();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_235b29();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.glsl
index fa40ad9..61c510c 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_23aa4f() {
+  float res = 1.0f;
+}
+void main() {
+  clamp_23aa4f();
+}
+#version 310 es
+
+void clamp_23aa4f() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_23aa4f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_23aa4f() {
   float res = 1.0f;
 }
-void main() {
-  clamp_23aa4f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_23aa4f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_23aa4f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_23aa4f() {
-  float res = 1.0f;
-}
 void main() {
-  clamp_23aa4f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_23aa4f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_23aa4f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_23aa4f() {
-  float res = 1.0f;
-}
-void main() {
-  clamp_23aa4f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_23aa4f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_23aa4f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.glsl
index 33bb58a..0b17c72 100644
--- a/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/2bd567.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float clamp_2bd567() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_2bd567();
+  v.tint_symbol = clamp_2bd567();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bd567();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float clamp_2bd567() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -56,37 +30,18 @@
   float res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2bd567();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_2bd567();
+  v.tint_symbol = clamp_2bd567();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bd567();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float clamp_2bd567() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -94,25 +49,17 @@
   float res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bd567();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_2bd567();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.glsl
index 10802be..d456def 100644
--- a/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/2bde41.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 clamp_2bde41() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_2bde41();
+  v.tint_symbol = clamp_2bde41();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bde41();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 clamp_2bde41() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -56,37 +30,18 @@
   vec4 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2bde41();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_2bde41();
+  v.tint_symbol = clamp_2bde41();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2bde41();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 clamp_2bde41() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -94,25 +49,17 @@
   vec4 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2bde41();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_2bde41();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.glsl
index 5bf16cb..cfaf597 100644
--- a/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/2c251b.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 clamp_2c251b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_2c251b();
+  v.tint_symbol = clamp_2c251b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2c251b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2c251b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 clamp_2c251b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -58,38 +32,19 @@
   f16vec4 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2c251b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_2c251b();
+  v.tint_symbol = clamp_2c251b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_2c251b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 clamp_2c251b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -97,25 +52,17 @@
   f16vec4 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_2c251b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_2c251b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_2c251b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.glsl
index c03683c..600743e 100644
--- a/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/548fc7.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 clamp_548fc7() {
+  uvec3 arg_0 = uvec3(1u);
+  uvec3 arg_1 = uvec3(1u);
+  uvec3 arg_2 = uvec3(1u);
+  uvec3 v_1 = arg_2;
+  uvec3 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_548fc7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 clamp_548fc7() {
+  uvec3 arg_0 = uvec3(1u);
+  uvec3 arg_1 = uvec3(1u);
+  uvec3 arg_2 = uvec3(1u);
+  uvec3 v_1 = arg_2;
+  uvec3 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_548fc7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 clamp_548fc7() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
@@ -19,103 +52,17 @@
   uvec3 res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_548fc7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 clamp_548fc7() {
-  uvec3 arg_0 = uvec3(1u);
-  uvec3 arg_1 = uvec3(1u);
-  uvec3 arg_2 = uvec3(1u);
-  uvec3 v = arg_2;
-  uvec3 res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_548fc7();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_548fc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 clamp_548fc7() {
-  uvec3 arg_0 = uvec3(1u);
-  uvec3 arg_1 = uvec3(1u);
-  uvec3 arg_2 = uvec3(1u);
-  uvec3 v = arg_2;
-  uvec3 res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_548fc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_548fc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.glsl
index ab2fdcd..03e41c3 100644
--- a/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/553ffb.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t clamp_553ffb() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_553ffb();
+  v.tint_symbol = clamp_553ffb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_553ffb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_553ffb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t clamp_553ffb() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -58,38 +32,19 @@
   float16_t res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_553ffb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_553ffb();
+  v.tint_symbol = clamp_553ffb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_553ffb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t clamp_553ffb() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -97,25 +52,17 @@
   float16_t res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_553ffb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_553ffb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_553ffb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.glsl
index 6261458..2f2d285 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_5cf700() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  clamp_5cf700();
+}
+#version 310 es
+
+void clamp_5cf700() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_5cf700();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_5cf700() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  clamp_5cf700();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_5cf700();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_5cf700();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_5cf700() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  clamp_5cf700();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_5cf700();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_5cf700();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_5cf700() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  clamp_5cf700();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_5cf700();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_5cf700();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.glsl
index 07ebf35..237aba1 100644
--- a/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/5f0819.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 clamp_5f0819() {
+  ivec3 arg_0 = ivec3(1);
+  ivec3 arg_1 = ivec3(1);
+  ivec3 arg_2 = ivec3(1);
+  ivec3 v_1 = arg_2;
+  ivec3 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_5f0819();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 clamp_5f0819() {
+  ivec3 arg_0 = ivec3(1);
+  ivec3 arg_1 = ivec3(1);
+  ivec3 arg_2 = ivec3(1);
+  ivec3 v_1 = arg_2;
+  ivec3 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_5f0819();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 clamp_5f0819() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
@@ -19,103 +52,17 @@
   ivec3 res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_5f0819();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 clamp_5f0819() {
-  ivec3 arg_0 = ivec3(1);
-  ivec3 arg_1 = ivec3(1);
-  ivec3 arg_2 = ivec3(1);
-  ivec3 v = arg_2;
-  ivec3 res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_5f0819();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_5f0819();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 clamp_5f0819() {
-  ivec3 arg_0 = ivec3(1);
-  ivec3 arg_1 = ivec3(1);
-  ivec3 arg_2 = ivec3(1);
-  ivec3 v = arg_2;
-  ivec3 res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_5f0819();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_5f0819();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.glsl
index 8952226..7e9022b 100644
--- a/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/6c1749.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 clamp_6c1749() {
+  ivec2 arg_0 = ivec2(1);
+  ivec2 arg_1 = ivec2(1);
+  ivec2 arg_2 = ivec2(1);
+  ivec2 v_1 = arg_2;
+  ivec2 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_6c1749();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 clamp_6c1749() {
+  ivec2 arg_0 = ivec2(1);
+  ivec2 arg_1 = ivec2(1);
+  ivec2 arg_2 = ivec2(1);
+  ivec2 v_1 = arg_2;
+  ivec2 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_6c1749();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 clamp_6c1749() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
@@ -19,103 +52,17 @@
   ivec2 res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_6c1749();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 clamp_6c1749() {
-  ivec2 arg_0 = ivec2(1);
-  ivec2 arg_1 = ivec2(1);
-  ivec2 arg_2 = ivec2(1);
-  ivec2 v = arg_2;
-  ivec2 res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_6c1749();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_6c1749();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 clamp_6c1749() {
-  ivec2 arg_0 = ivec2(1);
-  ivec2 arg_1 = ivec2(1);
-  ivec2 arg_2 = ivec2(1);
-  ivec2 v = arg_2;
-  ivec2 res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_6c1749();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_6c1749();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.glsl
index cf22d49..d11c7f7 100644
--- a/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/7706d7.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 clamp_7706d7() {
+  uvec2 arg_0 = uvec2(1u);
+  uvec2 arg_1 = uvec2(1u);
+  uvec2 arg_2 = uvec2(1u);
+  uvec2 v_1 = arg_2;
+  uvec2 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_7706d7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 clamp_7706d7() {
+  uvec2 arg_0 = uvec2(1u);
+  uvec2 arg_1 = uvec2(1u);
+  uvec2 arg_2 = uvec2(1u);
+  uvec2 v_1 = arg_2;
+  uvec2 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_7706d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 clamp_7706d7() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
@@ -19,103 +52,17 @@
   uvec2 res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_7706d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 clamp_7706d7() {
-  uvec2 arg_0 = uvec2(1u);
-  uvec2 arg_1 = uvec2(1u);
-  uvec2 arg_2 = uvec2(1u);
-  uvec2 v = arg_2;
-  uvec2 res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_7706d7();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_7706d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 clamp_7706d7() {
-  uvec2 arg_0 = uvec2(1u);
-  uvec2 arg_1 = uvec2(1u);
-  uvec2 arg_2 = uvec2(1u);
-  uvec2 v = arg_2;
-  uvec2 res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_7706d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_7706d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.glsl
index 1c9e0e3..0e39603 100644
--- a/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/867397.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 clamp_867397() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_867397();
+  v.tint_symbol = clamp_867397();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_867397();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_867397();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 clamp_867397() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -56,37 +30,18 @@
   vec3 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_867397();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_867397();
+  v.tint_symbol = clamp_867397();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_867397();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 clamp_867397() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -94,25 +49,17 @@
   vec3 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_867397();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_867397();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_867397();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.glsl
index c4f5f9d..c45827e 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_87df46() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  clamp_87df46();
+}
+#version 310 es
+
+void clamp_87df46() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_87df46();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_87df46() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  clamp_87df46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_87df46();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_87df46();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_87df46() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  clamp_87df46();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_87df46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_87df46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_87df46() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  clamp_87df46();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_87df46();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_87df46();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.glsl
index 82e8452..257a806 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_8b1eaa() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  clamp_8b1eaa();
+}
+#version 310 es
+
+void clamp_8b1eaa() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_8b1eaa();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_8b1eaa() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  clamp_8b1eaa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_8b1eaa();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_8b1eaa();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_8b1eaa() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  clamp_8b1eaa();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_8b1eaa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_8b1eaa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_8b1eaa() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  clamp_8b1eaa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_8b1eaa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_8b1eaa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.glsl
index a14a9ab..01b8938 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_96e56a() {
+  int res = 1;
+}
+void main() {
+  clamp_96e56a();
+}
+#version 310 es
+
+void clamp_96e56a() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_96e56a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_96e56a() {
   int res = 1;
 }
-void main() {
-  clamp_96e56a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_96e56a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_96e56a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_96e56a() {
-  int res = 1;
-}
 void main() {
-  clamp_96e56a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_96e56a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_96e56a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_96e56a() {
-  int res = 1;
-}
-void main() {
-  clamp_96e56a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_96e56a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_96e56a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.glsl
index f15e975..b3bb823 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_9d731c() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  clamp_9d731c();
+}
+#version 310 es
+
+void clamp_9d731c() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_9d731c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_9d731c() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  clamp_9d731c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_9d731c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_9d731c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_9d731c() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  clamp_9d731c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_9d731c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_9d731c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_9d731c() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  clamp_9d731c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_9d731c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_9d731c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.glsl
index b5c6c13..c6d01e1 100644
--- a/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/a2de25.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint clamp_a2de25() {
+  uint arg_0 = 1u;
+  uint arg_1 = 1u;
+  uint arg_2 = 1u;
+  uint v_1 = arg_2;
+  uint res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_a2de25();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint clamp_a2de25() {
+  uint arg_0 = 1u;
+  uint arg_1 = 1u;
+  uint arg_2 = 1u;
+  uint v_1 = arg_2;
+  uint res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_a2de25();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint clamp_a2de25() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
@@ -19,103 +52,17 @@
   uint res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_a2de25();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint clamp_a2de25() {
-  uint arg_0 = 1u;
-  uint arg_1 = 1u;
-  uint arg_2 = 1u;
-  uint v = arg_2;
-  uint res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_a2de25();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_a2de25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint clamp_a2de25() {
-  uint arg_0 = 1u;
-  uint arg_1 = 1u;
-  uint arg_2 = 1u;
-  uint v = arg_2;
-  uint res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_a2de25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_a2de25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.glsl
index 08b865b1..934af6e 100644
--- a/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/b07c65.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int clamp_b07c65() {
+  int arg_0 = 1;
+  int arg_1 = 1;
+  int arg_2 = 1;
+  int v_1 = arg_2;
+  int res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_b07c65();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int clamp_b07c65() {
+  int arg_0 = 1;
+  int arg_1 = 1;
+  int arg_2 = 1;
+  int v_1 = arg_2;
+  int res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_b07c65();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int clamp_b07c65() {
   int arg_0 = 1;
   int arg_1 = 1;
@@ -19,103 +52,17 @@
   int res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_b07c65();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int clamp_b07c65() {
-  int arg_0 = 1;
-  int arg_1 = 1;
-  int arg_2 = 1;
-  int v = arg_2;
-  int res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_b07c65();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b07c65();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int clamp_b07c65() {
-  int arg_0 = 1;
-  int arg_1 = 1;
-  int arg_2 = 1;
-  int v = arg_2;
-  int res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b07c65();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b07c65();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.glsl
index 4ff0da2..54ee3d8 100644
--- a/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/b195eb.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 clamp_b195eb() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = clamp_b195eb();
+  v.tint_symbol = clamp_b195eb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b195eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b195eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 clamp_b195eb() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -58,38 +32,19 @@
   f16vec3 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_b195eb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = clamp_b195eb();
+  v.tint_symbol = clamp_b195eb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_b195eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 clamp_b195eb() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -97,25 +52,17 @@
   f16vec3 res = clamp(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = clamp_b195eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_b195eb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_b195eb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.glsl
index 212fac1..14790f3 100644
--- a/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/bd43ce.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 clamp_bd43ce() {
+  uvec4 arg_0 = uvec4(1u);
+  uvec4 arg_1 = uvec4(1u);
+  uvec4 arg_2 = uvec4(1u);
+  uvec4 v_1 = arg_2;
+  uvec4 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+void main() {
+  v.tint_symbol = clamp_bd43ce();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 clamp_bd43ce() {
+  uvec4 arg_0 = uvec4(1u);
+  uvec4 arg_1 = uvec4(1u);
+  uvec4 arg_2 = uvec4(1u);
+  uvec4 v_1 = arg_2;
+  uvec4 res = min(max(arg_0, arg_1), v_1);
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = clamp_bd43ce();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 clamp_bd43ce() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
@@ -19,103 +52,17 @@
   uvec4 res = min(max(arg_0, arg_1), v);
   return res;
 }
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = clamp_bd43ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 clamp_bd43ce() {
-  uvec4 arg_0 = uvec4(1u);
-  uvec4 arg_1 = uvec4(1u);
-  uvec4 arg_2 = uvec4(1u);
-  uvec4 v = arg_2;
-  uvec4 res = min(max(arg_0, arg_1), v);
-  return res;
-}
 void main() {
-  prevent_dce = clamp_bd43ce();
+  VertexOutput v_1 = vertex_main_inner();
+  gl_Position = v_1.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_1.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_bd43ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 clamp_bd43ce() {
-  uvec4 arg_0 = uvec4(1u);
-  uvec4 arg_1 = uvec4(1u);
-  uvec4 arg_2 = uvec4(1u);
-  uvec4 v = arg_2;
-  uvec4 res = min(max(arg_0, arg_1), v);
-  return res;
-}
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = clamp_bd43ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = clamp_bd43ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.glsl
index 3719724..d1f3afe 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void clamp_d396af() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  clamp_d396af();
+}
+#version 310 es
+
+void clamp_d396af() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  clamp_d396af();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void clamp_d396af() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  clamp_d396af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_d396af();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   clamp_d396af();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_d396af() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  clamp_d396af();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_d396af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_d396af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void clamp_d396af() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  clamp_d396af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  clamp_d396af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  clamp_d396af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.glsl
index 6999790..e7855f7 100644
--- a/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/0835a8.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cos_0835a8() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   f16vec3 res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_0835a8();
+  v.tint_symbol = cos_0835a8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0835a8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0835a8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cos_0835a8() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   f16vec3 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_0835a8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_0835a8();
+  v.tint_symbol = cos_0835a8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0835a8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 cos_0835a8() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   f16vec3 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_0835a8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0835a8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_0835a8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.glsl
index ec349d5..fe69ba6 100644
--- a/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/0a89f7.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cos_0a89f7() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   f16vec4 res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_0a89f7();
+  v.tint_symbol = cos_0a89f7();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0a89f7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0a89f7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cos_0a89f7() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   f16vec4 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_0a89f7();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_0a89f7();
+  v.tint_symbol = cos_0a89f7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_0a89f7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 cos_0a89f7() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   f16vec4 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_0a89f7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_0a89f7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_0a89f7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.glsl
index dc0f6d4..9c44c47 100644
--- a/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/16dc15.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 cos_16dc15() {
   vec3 arg_0 = vec3(0.0f);
   vec3 res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_16dc15();
+  v.tint_symbol = cos_16dc15();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cos_16dc15() {
+  vec3 arg_0 = vec3(0.0f);
+  vec3 res = cos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_16dc15();
+  v.tint_symbol = cos_16dc15();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_16dc15();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 cos_16dc15() {
   vec3 arg_0 = vec3(0.0f);
   vec3 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_16dc15();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_16dc15();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_16dc15();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cos_16dc15() {
-  vec3 arg_0 = vec3(0.0f);
-  vec3 res = cos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cos_16dc15();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_16dc15();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_16dc15();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.glsl
index 975c0e3..2ff8486 100644
--- a/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/29d66d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 cos_29d66d() {
   vec4 arg_0 = vec4(0.0f);
   vec4 res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_29d66d();
+  v.tint_symbol = cos_29d66d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 cos_29d66d() {
+  vec4 arg_0 = vec4(0.0f);
+  vec4 res = cos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_29d66d();
+  v.tint_symbol = cos_29d66d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_29d66d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 cos_29d66d() {
   vec4 arg_0 = vec4(0.0f);
   vec4 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_29d66d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_29d66d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_29d66d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 cos_29d66d() {
-  vec4 arg_0 = vec4(0.0f);
-  vec4 res = cos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cos_29d66d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_29d66d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_29d66d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.glsl
index d144a55..a42bf44 100644
--- a/test/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/47d768.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_47d768() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  cos_47d768();
+}
+#version 310 es
+
+void cos_47d768() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_47d768();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_47d768() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  cos_47d768();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_47d768();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_47d768();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_47d768() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  cos_47d768();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_47d768();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_47d768();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_47d768() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  cos_47d768();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_47d768();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_47d768();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.glsl
index b7d7f79..ddcfcf8 100644
--- a/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/5bc2c6.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cos_5bc2c6() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   f16vec2 res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_5bc2c6();
+  v.tint_symbol = cos_5bc2c6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_5bc2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cos_5bc2c6() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   f16vec2 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_5bc2c6();
+  v.tint_symbol = cos_5bc2c6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_5bc2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 cos_5bc2c6() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   f16vec2 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_5bc2c6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_5bc2c6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.glsl
index 5060e8e..ba87cf9 100644
--- a/test/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/6b1fdf.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_6b1fdf() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  cos_6b1fdf();
+}
+#version 310 es
+
+void cos_6b1fdf() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_6b1fdf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_6b1fdf() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  cos_6b1fdf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_6b1fdf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_6b1fdf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_6b1fdf() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  cos_6b1fdf();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_6b1fdf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_6b1fdf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_6b1fdf() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  cos_6b1fdf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_6b1fdf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_6b1fdf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.glsl
index 9ad0502..5d443c2 100644
--- a/test/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/a297d4.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_a297d4() {
+  float res = 1.0f;
+}
+void main() {
+  cos_a297d4();
+}
+#version 310 es
+
+void cos_a297d4() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_a297d4();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_a297d4() {
   float res = 1.0f;
 }
-void main() {
-  cos_a297d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_a297d4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_a297d4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_a297d4() {
-  float res = 1.0f;
-}
 void main() {
-  cos_a297d4();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_a297d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_a297d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_a297d4() {
-  float res = 1.0f;
-}
-void main() {
-  cos_a297d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_a297d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_a297d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.glsl
index bad4bc0..fcd3506 100644
--- a/test/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/af7447.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cos_af7447() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  cos_af7447();
+}
+#version 310 es
+
+void cos_af7447() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cos_af7447();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cos_af7447() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  cos_af7447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_af7447();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cos_af7447();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_af7447() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  cos_af7447();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_af7447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_af7447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cos_af7447() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  cos_af7447();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cos_af7447();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cos_af7447();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.glsl
index 3507101..6854ee3 100644
--- a/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/c3b486.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 cos_c3b486() {
   vec2 arg_0 = vec2(0.0f);
   vec2 res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_c3b486();
+  v.tint_symbol = cos_c3b486();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 cos_c3b486() {
+  vec2 arg_0 = vec2(0.0f);
+  vec2 res = cos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_c3b486();
+  v.tint_symbol = cos_c3b486();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c3b486();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 cos_c3b486() {
   vec2 arg_0 = vec2(0.0f);
   vec2 res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_c3b486();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c3b486();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_c3b486();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 cos_c3b486() {
-  vec2 arg_0 = vec2(0.0f);
-  vec2 res = cos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cos_c3b486();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c3b486();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c3b486();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.glsl
index 1af3f37..2d54592 100644
--- a/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/c5c28e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float cos_c5c28e() {
   float arg_0 = 0.0f;
   float res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_c5c28e();
+  v.tint_symbol = cos_c5c28e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float cos_c5c28e() {
+  float arg_0 = 0.0f;
+  float res = cos(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_c5c28e();
+  v.tint_symbol = cos_c5c28e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c5c28e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float cos_c5c28e() {
   float arg_0 = 0.0f;
   float res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_c5c28e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float cos_c5c28e() {
-  float arg_0 = 0.0f;
-  float res = cos(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cos_c5c28e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_c5c28e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_c5c28e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.glsl
index 503fb0a..1639dba 100644
--- a/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cos/fc047d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cos_fc047d() {
   float16_t arg_0 = 0.0hf;
   float16_t res = cos(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cos_fc047d();
+  v.tint_symbol = cos_fc047d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_fc047d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_fc047d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cos_fc047d() {
   float16_t arg_0 = 0.0hf;
   float16_t res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_fc047d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cos_fc047d();
+  v.tint_symbol = cos_fc047d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cos_fc047d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t cos_fc047d() {
   float16_t arg_0 = 0.0hf;
   float16_t res = cos(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cos_fc047d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cos_fc047d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cos_fc047d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.glsl
index b8b67e3..a213d08 100644
--- a/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/2ed778.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cosh_2ed778() {
   float16_t arg_0 = 0.0hf;
   float16_t res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_2ed778();
+  v.tint_symbol = cosh_2ed778();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_2ed778();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_2ed778();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t cosh_2ed778() {
   float16_t arg_0 = 0.0hf;
   float16_t res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_2ed778();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_2ed778();
+  v.tint_symbol = cosh_2ed778();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_2ed778();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t cosh_2ed778() {
   float16_t arg_0 = 0.0hf;
   float16_t res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_2ed778();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_2ed778();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_2ed778();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.glsl
index d3f9263..3c56c72 100644
--- a/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/377652.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 cosh_377652() {
   vec3 arg_0 = vec3(0.0f);
   vec3 res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_377652();
+  v.tint_symbol = cosh_377652();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 cosh_377652() {
+  vec3 arg_0 = vec3(0.0f);
+  vec3 res = cosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_377652();
+  v.tint_symbol = cosh_377652();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_377652();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 cosh_377652() {
   vec3 arg_0 = vec3(0.0f);
   vec3 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_377652();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_377652();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_377652();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 cosh_377652() {
-  vec3 arg_0 = vec3(0.0f);
-  vec3 res = cosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_377652();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_377652();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_377652();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.glsl
index c1d61c9..26b479b 100644
--- a/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/3b7bbf.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cosh_3b7bbf() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   f16vec4 res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_3b7bbf();
+  v.tint_symbol = cosh_3b7bbf();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_3b7bbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 cosh_3b7bbf() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   f16vec4 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_3b7bbf();
+  v.tint_symbol = cosh_3b7bbf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_3b7bbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 cosh_3b7bbf() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   f16vec4 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_3b7bbf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_3b7bbf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.glsl
index 9729501..ffc07e7 100644
--- a/test/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/432645.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_432645() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  cosh_432645();
+}
+#version 310 es
+
+void cosh_432645() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_432645();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_432645() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  cosh_432645();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_432645();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_432645();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_432645() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  cosh_432645();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_432645();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_432645();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_432645() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  cosh_432645();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_432645();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_432645();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.glsl
index 8327631..6b0a072 100644
--- a/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/43b672.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cosh_43b672() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   f16vec2 res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_43b672();
+  v.tint_symbol = cosh_43b672();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_43b672();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_43b672();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 cosh_43b672() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   f16vec2 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_43b672();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_43b672();
+  v.tint_symbol = cosh_43b672();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_43b672();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 cosh_43b672() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   f16vec2 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_43b672();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_43b672();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_43b672();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.glsl
index dd864f1..5a8d0b2 100644
--- a/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/b1b8a0.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cosh_b1b8a0() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   f16vec3 res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_b1b8a0();
+  v.tint_symbol = cosh_b1b8a0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_b1b8a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cosh_b1b8a0() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   f16vec3 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_b1b8a0();
+  v.tint_symbol = cosh_b1b8a0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_b1b8a0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 cosh_b1b8a0() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   f16vec3 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_b1b8a0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_b1b8a0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.glsl
index 2071fa1..50b9321 100644
--- a/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/c13756.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 cosh_c13756() {
   vec2 arg_0 = vec2(0.0f);
   vec2 res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_c13756();
+  v.tint_symbol = cosh_c13756();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 cosh_c13756() {
+  vec2 arg_0 = vec2(0.0f);
+  vec2 res = cosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_c13756();
+  v.tint_symbol = cosh_c13756();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_c13756();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 cosh_c13756() {
   vec2 arg_0 = vec2(0.0f);
   vec2 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_c13756();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_c13756();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_c13756();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 cosh_c13756() {
-  vec2 arg_0 = vec2(0.0f);
-  vec2 res = cosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_c13756();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_c13756();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_c13756();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.glsl
index f1206eb..6942ec7 100644
--- a/test/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/c892bb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_c892bb() {
+  float res = 1.0f;
+}
+void main() {
+  cosh_c892bb();
+}
+#version 310 es
+
+void cosh_c892bb() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_c892bb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_c892bb() {
   float res = 1.0f;
 }
-void main() {
-  cosh_c892bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_c892bb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_c892bb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_c892bb() {
-  float res = 1.0f;
-}
 void main() {
-  cosh_c892bb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_c892bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_c892bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_c892bb() {
-  float res = 1.0f;
-}
-void main() {
-  cosh_c892bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_c892bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_c892bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.glsl
index 40d9f9c..9345395 100644
--- a/test/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/d8dee7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_d8dee7() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  cosh_d8dee7();
+}
+#version 310 es
+
+void cosh_d8dee7() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_d8dee7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_d8dee7() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  cosh_d8dee7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_d8dee7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_d8dee7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_d8dee7() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  cosh_d8dee7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_d8dee7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_d8dee7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_d8dee7() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  cosh_d8dee7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_d8dee7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_d8dee7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.glsl
index 32364f9..7c6487d 100644
--- a/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/da92dd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float cosh_da92dd() {
   float arg_0 = 0.0f;
   float res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_da92dd();
+  v.tint_symbol = cosh_da92dd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float cosh_da92dd() {
+  float arg_0 = 0.0f;
+  float res = cosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_da92dd();
+  v.tint_symbol = cosh_da92dd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_da92dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float cosh_da92dd() {
   float arg_0 = 0.0f;
   float res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_da92dd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float cosh_da92dd() {
-  float arg_0 = 0.0f;
-  float res = cosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_da92dd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_da92dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_da92dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.glsl
index e485b8c..1c78dc1 100644
--- a/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/e0c1de.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 cosh_e0c1de() {
   vec4 arg_0 = vec4(0.0f);
   vec4 res = cosh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = cosh_e0c1de();
+  v.tint_symbol = cosh_e0c1de();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 cosh_e0c1de() {
+  vec4 arg_0 = vec4(0.0f);
+  vec4 res = cosh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cosh_e0c1de();
+  v.tint_symbol = cosh_e0c1de();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_e0c1de();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 cosh_e0c1de() {
   vec4 arg_0 = vec4(0.0f);
   vec4 res = cosh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cosh_e0c1de();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 cosh_e0c1de() {
-  vec4 arg_0 = vec4(0.0f);
-  vec4 res = cosh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = cosh_e0c1de();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cosh_e0c1de();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cosh_e0c1de();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.glsl
index d89ed06..834a361 100644
--- a/test/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cosh/f67ff1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cosh_f67ff1() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  cosh_f67ff1();
+}
+#version 310 es
+
+void cosh_f67ff1() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cosh_f67ff1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cosh_f67ff1() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  cosh_f67ff1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_f67ff1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cosh_f67ff1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_f67ff1() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  cosh_f67ff1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_f67ff1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_f67ff1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cosh_f67ff1() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  cosh_f67ff1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cosh_f67ff1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cosh_f67ff1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.glsl
index 7005552..bd321bd 100644
--- a/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/countOneBits/0f7980.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 countOneBits_0f7980() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = bitCount(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = countOneBits_0f7980();
+  v.tint_symbol = countOneBits_0f7980();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 countOneBits_0f7980() {
+  ivec4 arg_0 = ivec4(1);
+  ivec4 res = bitCount(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = countOneBits_0f7980();
+  v.tint_symbol = countOneBits_0f7980();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_0f7980();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 countOneBits_0f7980() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = bitCount(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_0f7980();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 countOneBits_0f7980() {
-  ivec4 arg_0 = ivec4(1);
-  ivec4 res = bitCount(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_0f7980();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_0f7980();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_0f7980();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.glsl
index da13bb4..a305193 100644
--- a/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/countOneBits/65d2ae.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 countOneBits_65d2ae() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = bitCount(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = countOneBits_65d2ae();
+  v.tint_symbol = countOneBits_65d2ae();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 countOneBits_65d2ae() {
+  ivec3 arg_0 = ivec3(1);
+  ivec3 res = bitCount(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = countOneBits_65d2ae();
+  v.tint_symbol = countOneBits_65d2ae();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_65d2ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 countOneBits_65d2ae() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = bitCount(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_65d2ae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 countOneBits_65d2ae() {
-  ivec3 arg_0 = ivec3(1);
-  ivec3 res = bitCount(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_65d2ae();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_65d2ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_65d2ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.glsl
index 5402a20..d41c472 100644
--- a/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/countOneBits/af90e2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 countOneBits_af90e2() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = bitCount(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = countOneBits_af90e2();
+  v.tint_symbol = countOneBits_af90e2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 countOneBits_af90e2() {
+  ivec2 arg_0 = ivec2(1);
+  ivec2 res = bitCount(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = countOneBits_af90e2();
+  v.tint_symbol = countOneBits_af90e2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_af90e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 countOneBits_af90e2() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = bitCount(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_af90e2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 countOneBits_af90e2() {
-  ivec2 arg_0 = ivec2(1);
-  ivec2 res = bitCount(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_af90e2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_af90e2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_af90e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.glsl
index 3476013..29c2cd5 100644
--- a/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/countOneBits/fd88b2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int countOneBits_fd88b2() {
   int arg_0 = 1;
   int res = bitCount(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = countOneBits_fd88b2();
+  v.tint_symbol = countOneBits_fd88b2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int countOneBits_fd88b2() {
+  int arg_0 = 1;
+  int res = bitCount(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = countOneBits_fd88b2();
+  v.tint_symbol = countOneBits_fd88b2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_fd88b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int countOneBits_fd88b2() {
   int arg_0 = 1;
   int res = bitCount(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = countOneBits_fd88b2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int countOneBits_fd88b2() {
-  int arg_0 = 1;
-  int res = bitCount(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = countOneBits_fd88b2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = countOneBits_fd88b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = countOneBits_fd88b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.glsl
index 49a3ea4..597dc4d 100644
--- a/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cross/041cb0.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 cross_041cb0() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = cross_041cb0();
+  v.tint_symbol = cross_041cb0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_041cb0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_041cb0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 cross_041cb0() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = cross(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = cross_041cb0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cross_041cb0();
+  v.tint_symbol = cross_041cb0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_041cb0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 cross_041cb0() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = cross(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = cross_041cb0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_041cb0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cross_041cb0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.glsl
index eff3ab4..0319980 100644
--- a/test/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cross/1d7933.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void cross_1d7933() {
+  vec3 res = vec3(0.0f);
+}
+void main() {
+  cross_1d7933();
+}
+#version 310 es
+
+void cross_1d7933() {
+  vec3 res = vec3(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  cross_1d7933();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void cross_1d7933() {
   vec3 res = vec3(0.0f);
 }
-void main() {
-  cross_1d7933();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cross_1d7933();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   cross_1d7933();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cross_1d7933() {
-  vec3 res = vec3(0.0f);
-}
 void main() {
-  cross_1d7933();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cross_1d7933();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cross_1d7933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void cross_1d7933() {
-  vec3 res = vec3(0.0f);
-}
-void main() {
-  cross_1d7933();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  cross_1d7933();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  cross_1d7933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.glsl
index c2868fa..44416ca 100644
--- a/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/cross/9857cb.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cross_9857cb() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = cross_9857cb();
+  v.tint_symbol = cross_9857cb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_9857cb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_9857cb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 cross_9857cb() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = cross(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = cross_9857cb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = cross_9857cb();
+  v.tint_symbol = cross_9857cb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = cross_9857cb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 cross_9857cb() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = cross(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = cross_9857cb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = cross_9857cb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = cross_9857cb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.glsl
index 46b4385..4b38a57 100644
--- a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_810467() {
+  vec2 res = vec2(57.295780181884765625f);
+}
+void main() {
+  degrees_810467();
+}
+#version 310 es
+
+void degrees_810467() {
+  vec2 res = vec2(57.295780181884765625f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_810467();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_810467() {
   vec2 res = vec2(57.295780181884765625f);
 }
-void main() {
-  degrees_810467();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_810467();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_810467();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_810467() {
-  vec2 res = vec2(57.295780181884765625f);
-}
 void main() {
-  degrees_810467();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_810467();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_810467();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_810467() {
-  vec2 res = vec2(57.295780181884765625f);
-}
-void main() {
-  degrees_810467();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_810467();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_810467();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.glsl
index f9d9eb0..621bdf7 100644
--- a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_c0880c() {
+  vec3 res = vec3(57.295780181884765625f);
+}
+void main() {
+  degrees_c0880c();
+}
+#version 310 es
+
+void degrees_c0880c() {
+  vec3 res = vec3(57.295780181884765625f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_c0880c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_c0880c() {
   vec3 res = vec3(57.295780181884765625f);
 }
-void main() {
-  degrees_c0880c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_c0880c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_c0880c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_c0880c() {
-  vec3 res = vec3(57.295780181884765625f);
-}
 void main() {
-  degrees_c0880c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_c0880c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_c0880c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_c0880c() {
-  vec3 res = vec3(57.295780181884765625f);
-}
-void main() {
-  degrees_c0880c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_c0880c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_c0880c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.glsl
index e81ceb4..82e4e29 100644
--- a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_d43a49() {
+  vec4 res = vec4(57.295780181884765625f);
+}
+void main() {
+  degrees_d43a49();
+}
+#version 310 es
+
+void degrees_d43a49() {
+  vec4 res = vec4(57.295780181884765625f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_d43a49();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_d43a49() {
   vec4 res = vec4(57.295780181884765625f);
 }
-void main() {
-  degrees_d43a49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_d43a49();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_d43a49();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_d43a49() {
-  vec4 res = vec4(57.295780181884765625f);
-}
 void main() {
-  degrees_d43a49();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_d43a49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_d43a49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_d43a49() {
-  vec4 res = vec4(57.295780181884765625f);
-}
-void main() {
-  degrees_d43a49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_d43a49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_d43a49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.glsl
index 67eac30..fc2ebbb 100644
--- a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void degrees_fafa7e() {
+  float res = 57.295780181884765625f;
+}
+void main() {
+  degrees_fafa7e();
+}
+#version 310 es
+
+void degrees_fafa7e() {
+  float res = 57.295780181884765625f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  degrees_fafa7e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void degrees_fafa7e() {
   float res = 57.295780181884765625f;
 }
-void main() {
-  degrees_fafa7e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_fafa7e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   degrees_fafa7e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_fafa7e() {
-  float res = 57.295780181884765625f;
-}
 void main() {
-  degrees_fafa7e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_fafa7e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_fafa7e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void degrees_fafa7e() {
-  float res = 57.295780181884765625f;
-}
-void main() {
-  degrees_fafa7e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  degrees_fafa7e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  degrees_fafa7e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.glsl
index 48848f5..63a43b6 100644
--- a/test/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/1bf6e7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void determinant_1bf6e7() {
+  float res = 0.0f;
+}
+void main() {
+  determinant_1bf6e7();
+}
+#version 310 es
+
+void determinant_1bf6e7() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  determinant_1bf6e7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void determinant_1bf6e7() {
   float res = 0.0f;
 }
-void main() {
-  determinant_1bf6e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_1bf6e7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   determinant_1bf6e7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_1bf6e7() {
-  float res = 0.0f;
-}
 void main() {
-  determinant_1bf6e7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_1bf6e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_1bf6e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_1bf6e7() {
-  float res = 0.0f;
-}
-void main() {
-  determinant_1bf6e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_1bf6e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_1bf6e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.glsl
index 3521eea..d0c285c 100644
--- a/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/2b62ba.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float determinant_2b62ba() {
   mat3 arg_0 = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
   float res = determinant(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = determinant_2b62ba();
+  v.tint_symbol = determinant_2b62ba();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_2b62ba() {
+  mat3 arg_0 = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
+  float res = determinant(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_2b62ba();
+  v.tint_symbol = determinant_2b62ba();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_2b62ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float determinant_2b62ba() {
   mat3 arg_0 = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
   float res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_2b62ba();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_2b62ba() {
-  mat3 arg_0 = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
-  float res = determinant(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = determinant_2b62ba();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_2b62ba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_2b62ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.glsl
index 2f92672..b908774 100644
--- a/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/32bfde.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_32bfde() {
   f16mat4 arg_0 = f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = determinant_32bfde();
+  v.tint_symbol = determinant_32bfde();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_32bfde();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_32bfde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_32bfde() {
   f16mat4 arg_0 = f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_32bfde();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_32bfde();
+  v.tint_symbol = determinant_32bfde();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_32bfde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t determinant_32bfde() {
   f16mat4 arg_0 = f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_32bfde();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_32bfde();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_32bfde();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.glsl
index 3c60a5c..5147b4a 100644
--- a/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/a0a87c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float determinant_a0a87c() {
   mat4 arg_0 = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
   float res = determinant(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = determinant_a0a87c();
+  v.tint_symbol = determinant_a0a87c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_a0a87c() {
+  mat4 arg_0 = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
+  float res = determinant(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_a0a87c();
+  v.tint_symbol = determinant_a0a87c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_a0a87c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float determinant_a0a87c() {
   mat4 arg_0 = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
   float res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_a0a87c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_a0a87c() {
-  mat4 arg_0 = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
-  float res = determinant(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = determinant_a0a87c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_a0a87c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_a0a87c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.glsl
index ce134ab..b2998c2 100644
--- a/test/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/c8251d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void determinant_c8251d() {
+  float res = 0.0f;
+}
+void main() {
+  determinant_c8251d();
+}
+#version 310 es
+
+void determinant_c8251d() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  determinant_c8251d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void determinant_c8251d() {
   float res = 0.0f;
 }
-void main() {
-  determinant_c8251d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_c8251d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   determinant_c8251d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_c8251d() {
-  float res = 0.0f;
-}
 void main() {
-  determinant_c8251d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_c8251d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_c8251d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_c8251d() {
-  float res = 0.0f;
-}
-void main() {
-  determinant_c8251d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_c8251d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_c8251d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.glsl
index b1c4084..32f7b21 100644
--- a/test/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/cefdf3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void determinant_cefdf3() {
+  float res = 0.0f;
+}
+void main() {
+  determinant_cefdf3();
+}
+#version 310 es
+
+void determinant_cefdf3() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  determinant_cefdf3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void determinant_cefdf3() {
   float res = 0.0f;
 }
-void main() {
-  determinant_cefdf3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_cefdf3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   determinant_cefdf3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_cefdf3() {
-  float res = 0.0f;
-}
 void main() {
-  determinant_cefdf3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_cefdf3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_cefdf3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void determinant_cefdf3() {
-  float res = 0.0f;
-}
-void main() {
-  determinant_cefdf3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  determinant_cefdf3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  determinant_cefdf3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.glsl
index da6a02d..6f11426 100644
--- a/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/d7c86f.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_d7c86f() {
   f16mat3 arg_0 = f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = determinant_d7c86f();
+  v.tint_symbol = determinant_d7c86f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_d7c86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_d7c86f() {
   f16mat3 arg_0 = f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_d7c86f();
+  v.tint_symbol = determinant_d7c86f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_d7c86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t determinant_d7c86f() {
   f16mat3 arg_0 = f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_d7c86f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_d7c86f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.glsl
index 4fde4cd..94bb8a9 100644
--- a/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/e19305.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float determinant_e19305() {
   mat2 arg_0 = mat2(vec2(1.0f), vec2(1.0f));
   float res = determinant(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = determinant_e19305();
+  v.tint_symbol = determinant_e19305();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float determinant_e19305() {
+  mat2 arg_0 = mat2(vec2(1.0f), vec2(1.0f));
+  float res = determinant(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_e19305();
+  v.tint_symbol = determinant_e19305();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_e19305();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float determinant_e19305() {
   mat2 arg_0 = mat2(vec2(1.0f), vec2(1.0f));
   float res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_e19305();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_e19305();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_e19305();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float determinant_e19305() {
-  mat2 arg_0 = mat2(vec2(1.0f), vec2(1.0f));
-  float res = determinant(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = determinant_e19305();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_e19305();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_e19305();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.glsl
index ef6453a..0bf1772 100644
--- a/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/determinant/fc12a5.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_fc12a5() {
   f16mat2 arg_0 = f16mat2(f16vec2(1.0hf), f16vec2(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = determinant_fc12a5();
+  v.tint_symbol = determinant_fc12a5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_fc12a5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t determinant_fc12a5() {
   f16mat2 arg_0 = f16mat2(f16vec2(1.0hf), f16vec2(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = determinant_fc12a5();
+  v.tint_symbol = determinant_fc12a5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = determinant_fc12a5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t determinant_fc12a5() {
   f16mat2 arg_0 = f16mat2(f16vec2(1.0hf), f16vec2(1.0hf));
   float16_t res = determinant(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = determinant_fc12a5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = determinant_fc12a5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.glsl
index 6ebaaf4..222efb2 100644
--- a/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/0657d4.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_0657d4() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_0657d4();
+  v.tint_symbol = distance_0657d4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_0657d4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_0657d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_0657d4() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_0657d4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_0657d4();
+  v.tint_symbol = distance_0657d4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_0657d4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_0657d4() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_0657d4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_0657d4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_0657d4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.glsl
index 1537526..16815c0 100644
--- a/test/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/3a175a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_3a175a() {
+  float res = 0.0f;
+}
+void main() {
+  distance_3a175a();
+}
+#version 310 es
+
+void distance_3a175a() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_3a175a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_3a175a() {
   float res = 0.0f;
 }
-void main() {
-  distance_3a175a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_3a175a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_3a175a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_3a175a() {
-  float res = 0.0f;
-}
 void main() {
-  distance_3a175a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_3a175a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_3a175a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_3a175a() {
-  float res = 0.0f;
-}
-void main() {
-  distance_3a175a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_3a175a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_3a175a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.glsl
index 9e77abd..a108f4d 100644
--- a/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/7272f3.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7272f3() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_7272f3();
+  v.tint_symbol = distance_7272f3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7272f3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7272f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7272f3() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_7272f3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_7272f3();
+  v.tint_symbol = distance_7272f3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7272f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_7272f3() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_7272f3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7272f3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_7272f3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.glsl
index 53206a6..a64d3b0 100644
--- a/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/7d201f.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7d201f() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_7d201f();
+  v.tint_symbol = distance_7d201f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7d201f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7d201f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_7d201f() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_7d201f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_7d201f();
+  v.tint_symbol = distance_7d201f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_7d201f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_7d201f() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_7d201f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_7d201f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_7d201f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.glsl
index 56f3409..f44d9db 100644
--- a/test/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/83911f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_83911f() {
+  float res = 0.0f;
+}
+void main() {
+  distance_83911f();
+}
+#version 310 es
+
+void distance_83911f() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_83911f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_83911f() {
   float res = 0.0f;
 }
-void main() {
-  distance_83911f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_83911f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_83911f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_83911f() {
-  float res = 0.0f;
-}
 void main() {
-  distance_83911f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_83911f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_83911f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_83911f() {
-  float res = 0.0f;
-}
-void main() {
-  distance_83911f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_83911f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_83911f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.glsl
index 2a88f7d..8dd3d6d 100644
--- a/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/892a5d.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_892a5d() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_892a5d();
+  v.tint_symbol = distance_892a5d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_892a5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_892a5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_892a5d() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_892a5d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_892a5d();
+  v.tint_symbol = distance_892a5d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_892a5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_892a5d() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_892a5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_892a5d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_892a5d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.glsl
index 2b91d74..a8a31b1 100644
--- a/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/928fa0.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_928fa0() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_928fa0();
+  v.tint_symbol = distance_928fa0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_928fa0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_928fa0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t distance_928fa0() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_928fa0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_928fa0();
+  v.tint_symbol = distance_928fa0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_928fa0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t distance_928fa0() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   float16_t res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_928fa0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_928fa0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_928fa0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.glsl
index 827c504..8a78ae5 100644
--- a/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/9646ea.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_9646ea() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_9646ea();
+  v.tint_symbol = distance_9646ea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_9646ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_9646ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_9646ea() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_9646ea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_9646ea();
+  v.tint_symbol = distance_9646ea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_9646ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_9646ea() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_9646ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_9646ea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_9646ea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.glsl
index 4139bd8..925d73c 100644
--- a/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/aa4055.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_aa4055() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_aa4055();
+  v.tint_symbol = distance_aa4055();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_aa4055();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_aa4055();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_aa4055() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_aa4055();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_aa4055();
+  v.tint_symbol = distance_aa4055();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_aa4055();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_aa4055() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_aa4055();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_aa4055();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_aa4055();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.glsl
index c1583f9..62bb225 100644
--- a/test/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/ac5535.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_ac5535() {
+  float res = 0.0f;
+}
+void main() {
+  distance_ac5535();
+}
+#version 310 es
+
+void distance_ac5535() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_ac5535();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_ac5535() {
   float res = 0.0f;
 }
-void main() {
-  distance_ac5535();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_ac5535();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_ac5535();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_ac5535() {
-  float res = 0.0f;
-}
 void main() {
-  distance_ac5535();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_ac5535();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_ac5535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_ac5535() {
-  float res = 0.0f;
-}
-void main() {
-  distance_ac5535();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_ac5535();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_ac5535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.glsl
index 2864ab7..a836e40 100644
--- a/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/cfed73.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_cfed73() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = distance_cfed73();
+  v.tint_symbol = distance_cfed73();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_cfed73();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_cfed73();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float distance_cfed73() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_cfed73();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = distance_cfed73();
+  v.tint_symbol = distance_cfed73();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = distance_cfed73();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float distance_cfed73() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = distance(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = distance_cfed73();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = distance_cfed73();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = distance_cfed73();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.glsl
index 88b2f6a..68c43dc 100644
--- a/test/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/distance/f9c9ee.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void distance_f9c9ee() {
+  float res = 0.0f;
+}
+void main() {
+  distance_f9c9ee();
+}
+#version 310 es
+
+void distance_f9c9ee() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  distance_f9c9ee();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void distance_f9c9ee() {
   float res = 0.0f;
 }
-void main() {
-  distance_f9c9ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_f9c9ee();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   distance_f9c9ee();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_f9c9ee() {
-  float res = 0.0f;
-}
 void main() {
-  distance_f9c9ee();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_f9c9ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_f9c9ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void distance_f9c9ee() {
-  float res = 0.0f;
-}
-void main() {
-  distance_f9c9ee();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  distance_f9c9ee();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  distance_f9c9ee();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.glsl
index 89d5b1e..f1c3cfd 100644
--- a/test/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/08eb56.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_08eb56() {
+  float res = 4.0f;
+}
+void main() {
+  dot_08eb56();
+}
+#version 310 es
+
+void dot_08eb56() {
+  float res = 4.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_08eb56();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_08eb56() {
   float res = 4.0f;
 }
-void main() {
-  dot_08eb56();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_08eb56();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_08eb56();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_08eb56() {
-  float res = 4.0f;
-}
 void main() {
-  dot_08eb56();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_08eb56();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_08eb56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_08eb56() {
-  float res = 4.0f;
-}
-void main() {
-  dot_08eb56();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_08eb56();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_08eb56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.glsl
index 4fecec9..96bc9bb 100644
--- a/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/0c577b.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float dot_0c577b() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = dot_0c577b();
+  v.tint_symbol = dot_0c577b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_0c577b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_0c577b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float dot_0c577b() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   float res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_0c577b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_0c577b();
+  v.tint_symbol = dot_0c577b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_0c577b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float dot_0c577b() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   float res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_0c577b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_0c577b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_0c577b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.glsl
index 944e72a..d008c5a 100644
--- a/test/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/0d2c2e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_0d2c2e() {
+  float res = 2.0f;
+}
+void main() {
+  dot_0d2c2e();
+}
+#version 310 es
+
+void dot_0d2c2e() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_0d2c2e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_0d2c2e() {
   float res = 2.0f;
 }
-void main() {
-  dot_0d2c2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_0d2c2e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_0d2c2e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_0d2c2e() {
-  float res = 2.0f;
-}
 void main() {
-  dot_0d2c2e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_0d2c2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_0d2c2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_0d2c2e() {
-  float res = 2.0f;
-}
-void main() {
-  dot_0d2c2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_0d2c2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_0d2c2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.glsl
index daf4ac5..6e8ead4 100644
--- a/test/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/14bc63.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_14bc63() {
+  int res = 2;
+}
+void main() {
+  dot_14bc63();
+}
+#version 310 es
+
+void dot_14bc63() {
+  int res = 2;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_14bc63();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_14bc63() {
   int res = 2;
 }
-void main() {
-  dot_14bc63();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_14bc63();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_14bc63();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_14bc63() {
-  int res = 2;
-}
 void main() {
-  dot_14bc63();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_14bc63();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_14bc63();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_14bc63() {
-  int res = 2;
-}
-void main() {
-  dot_14bc63();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_14bc63();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_14bc63();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.glsl
index be30155..148c019 100644
--- a/test/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/5a4c8f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_5a4c8f() {
+  float res = 3.0f;
+}
+void main() {
+  dot_5a4c8f();
+}
+#version 310 es
+
+void dot_5a4c8f() {
+  float res = 3.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_5a4c8f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_5a4c8f() {
   float res = 3.0f;
 }
-void main() {
-  dot_5a4c8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_5a4c8f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_5a4c8f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_5a4c8f() {
-  float res = 3.0f;
-}
 void main() {
-  dot_5a4c8f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_5a4c8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_5a4c8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_5a4c8f() {
-  float res = 3.0f;
-}
-void main() {
-  dot_5a4c8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_5a4c8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_5a4c8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.glsl
index 770df55..bd4e6eb 100644
--- a/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/883f0e.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float dot_883f0e() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = dot_883f0e();
+  v.tint_symbol = dot_883f0e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_883f0e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_883f0e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float dot_883f0e() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   float res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_883f0e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_883f0e();
+  v.tint_symbol = dot_883f0e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_883f0e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float dot_883f0e() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   float res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_883f0e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_883f0e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_883f0e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.glsl
index acfb0fd..0da3cd1 100644
--- a/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/8e40f1.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_8e40f1() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = dot_8e40f1();
+  v.tint_symbol = dot_8e40f1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_8e40f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_8e40f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_8e40f1() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   float16_t res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_8e40f1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_8e40f1();
+  v.tint_symbol = dot_8e40f1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_8e40f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t dot_8e40f1() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   float16_t res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_8e40f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_8e40f1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_8e40f1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.glsl
index 44c2346..e08f301 100644
--- a/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/ba4246.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float dot_ba4246() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = dot_ba4246();
+  v.tint_symbol = dot_ba4246();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ba4246();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_ba4246();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float dot_ba4246() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   float res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_ba4246();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_ba4246();
+  v.tint_symbol = dot_ba4246();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_ba4246();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float dot_ba4246() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   float res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_ba4246();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_ba4246();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_ba4246();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.glsl
index 51ffb9c..95df9db 100644
--- a/test/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/c11efe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_c11efe() {
+  int res = 3;
+}
+void main() {
+  dot_c11efe();
+}
+#version 310 es
+
+void dot_c11efe() {
+  int res = 3;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_c11efe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_c11efe() {
   int res = 3;
 }
-void main() {
-  dot_c11efe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_c11efe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_c11efe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_c11efe() {
-  int res = 3;
-}
 void main() {
-  dot_c11efe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_c11efe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_c11efe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_c11efe() {
-  int res = 3;
-}
-void main() {
-  dot_c11efe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_c11efe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_c11efe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.glsl
index 4be8218..38ba108 100644
--- a/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/cd5a04.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_cd5a04() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = dot_cd5a04();
+  v.tint_symbol = dot_cd5a04();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_cd5a04();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_cd5a04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_cd5a04() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   float16_t res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_cd5a04();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_cd5a04();
+  v.tint_symbol = dot_cd5a04();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_cd5a04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t dot_cd5a04() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   float16_t res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_cd5a04();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_cd5a04();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_cd5a04();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.glsl
index 65f2e94..4591e7d 100644
--- a/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/d0d179.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_d0d179() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = dot_d0d179();
+  v.tint_symbol = dot_d0d179();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_d0d179();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_d0d179();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t dot_d0d179() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   float16_t res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_d0d179();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = dot_d0d179();
+  v.tint_symbol = dot_d0d179();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = dot_d0d179();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t dot_d0d179() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   float16_t res = dot(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = dot_d0d179();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = dot_d0d179();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = dot_d0d179();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.glsl
index 4abca94..fa9e75a 100644
--- a/test/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/dot/eb9fbf.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void dot_eb9fbf() {
+  int res = 4;
+}
+void main() {
+  dot_eb9fbf();
+}
+#version 310 es
+
+void dot_eb9fbf() {
+  int res = 4;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  dot_eb9fbf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void dot_eb9fbf() {
   int res = 4;
 }
-void main() {
-  dot_eb9fbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_eb9fbf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   dot_eb9fbf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_eb9fbf() {
-  int res = 4;
-}
 void main() {
-  dot_eb9fbf();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_eb9fbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_eb9fbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void dot_eb9fbf() {
-  int res = 4;
-}
-void main() {
-  dot_eb9fbf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  dot_eb9fbf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  dot_eb9fbf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.glsl
index ae0d15b..2984062 100644
--- a/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/0f70eb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 exp_0f70eb() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_0f70eb();
+  v.tint_symbol = exp_0f70eb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 exp_0f70eb() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = exp(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_0f70eb();
+  v.tint_symbol = exp_0f70eb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_0f70eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 exp_0f70eb() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_0f70eb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 exp_0f70eb() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = exp(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp_0f70eb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_0f70eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_0f70eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.glsl
index 26dc558..a4a1369 100644
--- a/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/13806d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp_13806d() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_13806d();
+  v.tint_symbol = exp_13806d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_13806d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_13806d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp_13806d() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_13806d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_13806d();
+  v.tint_symbol = exp_13806d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_13806d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 exp_13806d() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_13806d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_13806d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_13806d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.glsl
index dbee0f5..d2ab92a 100644
--- a/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/1951e7.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 exp_1951e7() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_1951e7();
+  v.tint_symbol = exp_1951e7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 exp_1951e7() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = exp(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_1951e7();
+  v.tint_symbol = exp_1951e7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_1951e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 exp_1951e7() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_1951e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_1951e7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_1951e7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 exp_1951e7() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = exp(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp_1951e7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_1951e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_1951e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.glsl
index f44ce37..fda09b8 100644
--- a/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/2e08e2.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp_2e08e2() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_2e08e2();
+  v.tint_symbol = exp_2e08e2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_2e08e2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_2e08e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp_2e08e2() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_2e08e2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_2e08e2();
+  v.tint_symbol = exp_2e08e2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_2e08e2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 exp_2e08e2() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_2e08e2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_2e08e2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_2e08e2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.glsl
index 48a4a80..899a782 100644
--- a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_49e4c5() {
+  float res = 2.71828174591064453125f;
+}
+void main() {
+  exp_49e4c5();
+}
+#version 310 es
+
+void exp_49e4c5() {
+  float res = 2.71828174591064453125f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_49e4c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_49e4c5() {
   float res = 2.71828174591064453125f;
 }
-void main() {
-  exp_49e4c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_49e4c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_49e4c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_49e4c5() {
-  float res = 2.71828174591064453125f;
-}
 void main() {
-  exp_49e4c5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_49e4c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_49e4c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_49e4c5() {
-  float res = 2.71828174591064453125f;
-}
-void main() {
-  exp_49e4c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_49e4c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_49e4c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.glsl
index 63071b9..1e56cb8 100644
--- a/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/611a87.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp_611a87() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_611a87();
+  v.tint_symbol = exp_611a87();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_611a87();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_611a87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp_611a87() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_611a87();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_611a87();
+  v.tint_symbol = exp_611a87();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_611a87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 exp_611a87() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_611a87();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_611a87();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_611a87();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.glsl
index 3ae81c8..1e3ec9f 100644
--- a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_699629() {
+  vec2 res = vec2(2.71828174591064453125f);
+}
+void main() {
+  exp_699629();
+}
+#version 310 es
+
+void exp_699629() {
+  vec2 res = vec2(2.71828174591064453125f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_699629();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_699629() {
   vec2 res = vec2(2.71828174591064453125f);
 }
-void main() {
-  exp_699629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_699629();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_699629();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_699629() {
-  vec2 res = vec2(2.71828174591064453125f);
-}
 void main() {
-  exp_699629();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_699629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_699629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_699629() {
-  vec2 res = vec2(2.71828174591064453125f);
-}
-void main() {
-  exp_699629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_699629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_699629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.glsl
index d88ccbd..de1b355 100644
--- a/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/771fd2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float exp_771fd2() {
   float arg_0 = 1.0f;
   float res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_771fd2();
+  v.tint_symbol = exp_771fd2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float exp_771fd2() {
+  float arg_0 = 1.0f;
+  float res = exp(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_771fd2();
+  v.tint_symbol = exp_771fd2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_771fd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float exp_771fd2() {
   float arg_0 = 1.0f;
   float res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_771fd2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_771fd2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_771fd2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float exp_771fd2() {
-  float arg_0 = 1.0f;
-  float res = exp(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp_771fd2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_771fd2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_771fd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.glsl
index 6f9e1c9..907fa03 100644
--- a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_bda5bb() {
+  vec3 res = vec3(2.71828174591064453125f);
+}
+void main() {
+  exp_bda5bb();
+}
+#version 310 es
+
+void exp_bda5bb() {
+  vec3 res = vec3(2.71828174591064453125f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_bda5bb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_bda5bb() {
   vec3 res = vec3(2.71828174591064453125f);
 }
-void main() {
-  exp_bda5bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_bda5bb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_bda5bb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_bda5bb() {
-  vec3 res = vec3(2.71828174591064453125f);
-}
 void main() {
-  exp_bda5bb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_bda5bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_bda5bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_bda5bb() {
-  vec3 res = vec3(2.71828174591064453125f);
-}
-void main() {
-  exp_bda5bb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_bda5bb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_bda5bb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.glsl
index ae1469e..1ae22e3 100644
--- a/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/c18fe9.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp_c18fe9() {
   float16_t arg_0 = 1.0hf;
   float16_t res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_c18fe9();
+  v.tint_symbol = exp_c18fe9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_c18fe9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_c18fe9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp_c18fe9() {
   float16_t arg_0 = 1.0hf;
   float16_t res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_c18fe9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_c18fe9();
+  v.tint_symbol = exp_c18fe9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_c18fe9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t exp_c18fe9() {
   float16_t arg_0 = 1.0hf;
   float16_t res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_c18fe9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_c18fe9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_c18fe9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.glsl
index f0c81a3..f5f551b 100644
--- a/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/d98450.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 exp_d98450() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = exp(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp_d98450();
+  v.tint_symbol = exp_d98450();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 exp_d98450() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = exp(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp_d98450();
+  v.tint_symbol = exp_d98450();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_d98450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 exp_d98450() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = exp(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp_d98450();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_d98450();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp_d98450();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 exp_d98450() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = exp(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp_d98450();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp_d98450();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp_d98450();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.glsl
index 3db102c..73d7d5e 100644
--- a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp_dad791() {
+  vec4 res = vec4(2.71828174591064453125f);
+}
+void main() {
+  exp_dad791();
+}
+#version 310 es
+
+void exp_dad791() {
+  vec4 res = vec4(2.71828174591064453125f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp_dad791();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp_dad791() {
   vec4 res = vec4(2.71828174591064453125f);
 }
-void main() {
-  exp_dad791();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_dad791();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp_dad791();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_dad791() {
-  vec4 res = vec4(2.71828174591064453125f);
-}
 void main() {
-  exp_dad791();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_dad791();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_dad791();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp_dad791() {
-  vec4 res = vec4(2.71828174591064453125f);
-}
-void main() {
-  exp_dad791();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp_dad791();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp_dad791();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.glsl
index adfa39a..8b06513 100644
--- a/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/151a4c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp2_151a4c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_151a4c();
+  v.tint_symbol = exp2_151a4c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_151a4c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_151a4c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 exp2_151a4c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_151a4c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_151a4c();
+  v.tint_symbol = exp2_151a4c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_151a4c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 exp2_151a4c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_151a4c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_151a4c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_151a4c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.glsl
index 6d43169..9657de4 100644
--- a/test/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/18aa76.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_18aa76() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  exp2_18aa76();
+}
+#version 310 es
+
+void exp2_18aa76() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_18aa76();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_18aa76() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  exp2_18aa76();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_18aa76();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_18aa76();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_18aa76() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  exp2_18aa76();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_18aa76();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_18aa76();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_18aa76() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  exp2_18aa76();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_18aa76();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_18aa76();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.glsl
index 4687813..83bdf90 100644
--- a/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/1f8680.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 exp2_1f8680() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_1f8680();
+  v.tint_symbol = exp2_1f8680();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 exp2_1f8680() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = exp2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_1f8680();
+  v.tint_symbol = exp2_1f8680();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_1f8680();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 exp2_1f8680() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_1f8680();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 exp2_1f8680() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = exp2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_1f8680();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_1f8680();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_1f8680();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.glsl
index 0339ef4..afa55ca 100644
--- a/test/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/303753.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_303753() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  exp2_303753();
+}
+#version 310 es
+
+void exp2_303753() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_303753();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_303753() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  exp2_303753();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_303753();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_303753();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_303753() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  exp2_303753();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_303753();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_303753();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_303753() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  exp2_303753();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_303753();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_303753();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.glsl
index b86ad3b..cbcd485 100644
--- a/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/751377.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp2_751377() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_751377();
+  v.tint_symbol = exp2_751377();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_751377();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_751377();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 exp2_751377() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_751377();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_751377();
+  v.tint_symbol = exp2_751377();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_751377();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 exp2_751377() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_751377();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_751377();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_751377();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.glsl
index aefd542..dceb6d9 100644
--- a/test/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/8bd72d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_8bd72d() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  exp2_8bd72d();
+}
+#version 310 es
+
+void exp2_8bd72d() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_8bd72d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_8bd72d() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  exp2_8bd72d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_8bd72d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_8bd72d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_8bd72d() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  exp2_8bd72d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_8bd72d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_8bd72d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_8bd72d() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  exp2_8bd72d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_8bd72d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_8bd72d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.glsl
index 17495f1..e2273db 100644
--- a/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/a9d0a7.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 exp2_a9d0a7() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_a9d0a7();
+  v.tint_symbol = exp2_a9d0a7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 exp2_a9d0a7() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = exp2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_a9d0a7();
+  v.tint_symbol = exp2_a9d0a7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_a9d0a7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 exp2_a9d0a7() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_a9d0a7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 exp2_a9d0a7() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = exp2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_a9d0a7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_a9d0a7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_a9d0a7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.glsl
index 648cd77..27a179d 100644
--- a/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/b408e4.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp2_b408e4() {
   float16_t arg_0 = 1.0hf;
   float16_t res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_b408e4();
+  v.tint_symbol = exp2_b408e4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_b408e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_b408e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t exp2_b408e4() {
   float16_t arg_0 = 1.0hf;
   float16_t res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_b408e4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_b408e4();
+  v.tint_symbol = exp2_b408e4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_b408e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t exp2_b408e4() {
   float16_t arg_0 = 1.0hf;
   float16_t res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_b408e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_b408e4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_b408e4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.glsl
index 76e84f1..3d9a013 100644
--- a/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/d6777c.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 exp2_d6777c() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_d6777c();
+  v.tint_symbol = exp2_d6777c();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 exp2_d6777c() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = exp2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_d6777c();
+  v.tint_symbol = exp2_d6777c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_d6777c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 exp2_d6777c() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_d6777c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 exp2_d6777c() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = exp2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_d6777c();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_d6777c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_d6777c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.glsl
index 8f0424b..d73e3b0 100644
--- a/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/dea523.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float exp2_dea523() {
   float arg_0 = 1.0f;
   float res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_dea523();
+  v.tint_symbol = exp2_dea523();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float exp2_dea523() {
+  float arg_0 = 1.0f;
+  float res = exp2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_dea523();
+  v.tint_symbol = exp2_dea523();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_dea523();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float exp2_dea523() {
   float arg_0 = 1.0f;
   float res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_dea523();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_dea523();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_dea523();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float exp2_dea523() {
-  float arg_0 = 1.0f;
-  float res = exp2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = exp2_dea523();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_dea523();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_dea523();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.glsl
index 8970162..ca387e9 100644
--- a/test/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/f4f0f1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void exp2_f4f0f1() {
+  float res = 2.0f;
+}
+void main() {
+  exp2_f4f0f1();
+}
+#version 310 es
+
+void exp2_f4f0f1() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  exp2_f4f0f1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void exp2_f4f0f1() {
   float res = 2.0f;
 }
-void main() {
-  exp2_f4f0f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_f4f0f1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   exp2_f4f0f1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_f4f0f1() {
-  float res = 2.0f;
-}
 void main() {
-  exp2_f4f0f1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_f4f0f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_f4f0f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void exp2_f4f0f1() {
-  float res = 2.0f;
-}
-void main() {
-  exp2_f4f0f1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  exp2_f4f0f1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  exp2_f4f0f1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.glsl
index 1f88f66..4d9842b 100644
--- a/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/exp2/ffa827.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp2_ffa827() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = exp2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = exp2_ffa827();
+  v.tint_symbol = exp2_ffa827();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_ffa827();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_ffa827();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 exp2_ffa827() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_ffa827();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = exp2_ffa827();
+  v.tint_symbol = exp2_ffa827();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = exp2_ffa827();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 exp2_ffa827() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = exp2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = exp2_ffa827();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = exp2_ffa827();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = exp2_ffa827();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.glsl
index f78da9d..6a87694 100644
--- a/test/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/2c4d14.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void faceForward_2c4d14() {
+  vec4 res = vec4(-1.0f);
+}
+void main() {
+  faceForward_2c4d14();
+}
+#version 310 es
+
+void faceForward_2c4d14() {
+  vec4 res = vec4(-1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  faceForward_2c4d14();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void faceForward_2c4d14() {
   vec4 res = vec4(-1.0f);
 }
-void main() {
-  faceForward_2c4d14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_2c4d14();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   faceForward_2c4d14();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_2c4d14() {
-  vec4 res = vec4(-1.0f);
-}
 void main() {
-  faceForward_2c4d14();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_2c4d14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_2c4d14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_2c4d14() {
-  vec4 res = vec4(-1.0f);
-}
-void main() {
-  faceForward_2c4d14();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_2c4d14();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_2c4d14();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.glsl
index bddfec7..4ed3a88 100644
--- a/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/524986.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 faceForward_524986() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = faceForward_524986();
+  v.tint_symbol = faceForward_524986();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_524986();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_524986();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 faceForward_524986() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -58,38 +32,19 @@
   f16vec3 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_524986();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_524986();
+  v.tint_symbol = faceForward_524986();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_524986();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 faceForward_524986() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -97,25 +52,17 @@
   f16vec3 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_524986();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_524986();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_524986();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.glsl
index 36e3ef4..892e73e 100644
--- a/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/5afbd5.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 faceForward_5afbd5() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = faceForward_5afbd5();
+  v.tint_symbol = faceForward_5afbd5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_5afbd5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 faceForward_5afbd5() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -56,37 +30,18 @@
   vec3 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_5afbd5();
+  v.tint_symbol = faceForward_5afbd5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_5afbd5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 faceForward_5afbd5() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -94,25 +49,17 @@
   vec3 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_5afbd5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_5afbd5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.glsl
index 2a8e41e..579e26c 100644
--- a/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/b316e5.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 faceForward_b316e5() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = faceForward_b316e5();
+  v.tint_symbol = faceForward_b316e5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_b316e5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 faceForward_b316e5() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -56,37 +30,18 @@
   vec4 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_b316e5();
+  v.tint_symbol = faceForward_b316e5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_b316e5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 faceForward_b316e5() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -94,25 +49,17 @@
   vec4 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_b316e5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_b316e5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.glsl
index 13f6f98..45192cb 100644
--- a/test/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/b42ef3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void faceForward_b42ef3() {
+  vec2 res = vec2(-1.0f);
+}
+void main() {
+  faceForward_b42ef3();
+}
+#version 310 es
+
+void faceForward_b42ef3() {
+  vec2 res = vec2(-1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  faceForward_b42ef3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void faceForward_b42ef3() {
   vec2 res = vec2(-1.0f);
 }
-void main() {
-  faceForward_b42ef3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_b42ef3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   faceForward_b42ef3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_b42ef3() {
-  vec2 res = vec2(-1.0f);
-}
 void main() {
-  faceForward_b42ef3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_b42ef3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_b42ef3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_b42ef3() {
-  vec2 res = vec2(-1.0f);
-}
-void main() {
-  faceForward_b42ef3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_b42ef3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_b42ef3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.glsl
index 315bff6..682229c 100644
--- a/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/cc63dc.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 faceForward_cc63dc() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = faceForward_cc63dc();
+  v.tint_symbol = faceForward_cc63dc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_cc63dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 faceForward_cc63dc() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -58,38 +32,19 @@
   f16vec4 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_cc63dc();
+  v.tint_symbol = faceForward_cc63dc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_cc63dc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 faceForward_cc63dc() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -97,25 +52,17 @@
   f16vec4 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_cc63dc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_cc63dc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.glsl
index 93a56cf..fdc6cb2 100644
--- a/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/e6908b.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 faceForward_e6908b() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = faceForward_e6908b();
+  v.tint_symbol = faceForward_e6908b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_e6908b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 faceForward_e6908b() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -56,37 +30,18 @@
   vec2 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_e6908b();
+  v.tint_symbol = faceForward_e6908b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_e6908b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 faceForward_e6908b() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -94,25 +49,17 @@
   vec2 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_e6908b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_e6908b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.glsl
index f5392cf5..ecb93f8 100644
--- a/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/fb0f2e.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 faceForward_fb0f2e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = faceForward_fb0f2e();
+  v.tint_symbol = faceForward_fb0f2e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_fb0f2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 faceForward_fb0f2e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -58,38 +32,19 @@
   f16vec2 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = faceForward_fb0f2e();
+  v.tint_symbol = faceForward_fb0f2e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = faceForward_fb0f2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 faceForward_fb0f2e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -97,25 +52,17 @@
   f16vec2 res = faceforward(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = faceForward_fb0f2e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = faceForward_fb0f2e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.glsl
index 9fa0a75..b1aeb5d 100644
--- a/test/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/faceForward/fe522b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void faceForward_fe522b() {
+  vec3 res = vec3(-1.0f);
+}
+void main() {
+  faceForward_fe522b();
+}
+#version 310 es
+
+void faceForward_fe522b() {
+  vec3 res = vec3(-1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  faceForward_fe522b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void faceForward_fe522b() {
   vec3 res = vec3(-1.0f);
 }
-void main() {
-  faceForward_fe522b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_fe522b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   faceForward_fe522b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_fe522b() {
-  vec3 res = vec3(-1.0f);
-}
 void main() {
-  faceForward_fe522b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_fe522b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_fe522b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void faceForward_fe522b() {
-  vec3 res = vec3(-1.0f);
-}
-void main() {
-  faceForward_fe522b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  faceForward_fe522b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  faceForward_fe522b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.glsl
index 34fac5a..6d8ad58 100644
--- a/test/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/218952.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_218952() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  floor_218952();
+}
+#version 310 es
+
+void floor_218952() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_218952();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_218952() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  floor_218952();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_218952();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_218952();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_218952() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  floor_218952();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_218952();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_218952();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_218952() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  floor_218952();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_218952();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_218952();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.glsl
index bc2ffb0..df0e3af 100644
--- a/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/3802c0.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 floor_3802c0() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_3802c0();
+  v.tint_symbol = floor_3802c0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3802c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3802c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 floor_3802c0() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_3802c0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_3802c0();
+  v.tint_symbol = floor_3802c0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3802c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 floor_3802c0() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_3802c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3802c0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_3802c0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.glsl
index 1d988ed..f810b03 100644
--- a/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/3bccc4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 floor_3bccc4() {
   vec4 arg_0 = vec4(1.5f);
   vec4 res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_3bccc4();
+  v.tint_symbol = floor_3bccc4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 floor_3bccc4() {
+  vec4 arg_0 = vec4(1.5f);
+  vec4 res = floor(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_3bccc4();
+  v.tint_symbol = floor_3bccc4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3bccc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 floor_3bccc4() {
   vec4 arg_0 = vec4(1.5f);
   vec4 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_3bccc4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 floor_3bccc4() {
-  vec4 arg_0 = vec4(1.5f);
-  vec4 res = floor(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = floor_3bccc4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_3bccc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_3bccc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.glsl
index 75f386b..c0792ce 100644
--- a/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/5fc9ac.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 floor_5fc9ac() {
   vec2 arg_0 = vec2(1.5f);
   vec2 res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_5fc9ac();
+  v.tint_symbol = floor_5fc9ac();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 floor_5fc9ac() {
+  vec2 arg_0 = vec2(1.5f);
+  vec2 res = floor(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_5fc9ac();
+  v.tint_symbol = floor_5fc9ac();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_5fc9ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 floor_5fc9ac() {
   vec2 arg_0 = vec2(1.5f);
   vec2 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_5fc9ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 floor_5fc9ac() {
-  vec2 arg_0 = vec2(1.5f);
-  vec2 res = floor(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = floor_5fc9ac();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_5fc9ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_5fc9ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.glsl
index 287d21a..7d95287 100644
--- a/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/60d7ea.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 floor_60d7ea() {
   vec3 arg_0 = vec3(1.5f);
   vec3 res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_60d7ea();
+  v.tint_symbol = floor_60d7ea();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 floor_60d7ea() {
+  vec3 arg_0 = vec3(1.5f);
+  vec3 res = floor(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_60d7ea();
+  v.tint_symbol = floor_60d7ea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_60d7ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 floor_60d7ea() {
   vec3 arg_0 = vec3(1.5f);
   vec3 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_60d7ea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 floor_60d7ea() {
-  vec3 arg_0 = vec3(1.5f);
-  vec3 res = floor(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = floor_60d7ea();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_60d7ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_60d7ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.glsl
index 79d4e88..6e0bd52 100644
--- a/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/66f154.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float floor_66f154() {
   float arg_0 = 1.5f;
   float res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_66f154();
+  v.tint_symbol = floor_66f154();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float floor_66f154() {
+  float arg_0 = 1.5f;
+  float res = floor(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_66f154();
+  v.tint_symbol = floor_66f154();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_66f154();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float floor_66f154() {
   float arg_0 = 1.5f;
   float res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_66f154();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_66f154();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_66f154();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float floor_66f154() {
-  float arg_0 = 1.5f;
-  float res = floor(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = floor_66f154();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_66f154();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_66f154();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.glsl
index b02d329..d7a6a3c 100644
--- a/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/84658c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 floor_84658c() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_84658c();
+  v.tint_symbol = floor_84658c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_84658c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_84658c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 floor_84658c() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_84658c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_84658c();
+  v.tint_symbol = floor_84658c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_84658c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 floor_84658c() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_84658c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_84658c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_84658c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.glsl
index 4a575c5..d8f482e 100644
--- a/test/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/953774.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_953774() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  floor_953774();
+}
+#version 310 es
+
+void floor_953774() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_953774();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_953774() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  floor_953774();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_953774();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_953774();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_953774() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  floor_953774();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_953774();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_953774();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_953774() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  floor_953774();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_953774();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_953774();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.glsl
index 82bed8a..1727544 100644
--- a/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/a2d31b.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 floor_a2d31b() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_a2d31b();
+  v.tint_symbol = floor_a2d31b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_a2d31b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_a2d31b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 floor_a2d31b() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_a2d31b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_a2d31b();
+  v.tint_symbol = floor_a2d31b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_a2d31b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 floor_a2d31b() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_a2d31b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_a2d31b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_a2d31b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.glsl
index a89743d..a01f308 100644
--- a/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/b6e09c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t floor_b6e09c() {
   float16_t arg_0 = 1.5hf;
   float16_t res = floor(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = floor_b6e09c();
+  v.tint_symbol = floor_b6e09c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_b6e09c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_b6e09c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t floor_b6e09c() {
   float16_t arg_0 = 1.5hf;
   float16_t res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_b6e09c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = floor_b6e09c();
+  v.tint_symbol = floor_b6e09c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = floor_b6e09c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t floor_b6e09c() {
   float16_t arg_0 = 1.5hf;
   float16_t res = floor(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = floor_b6e09c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = floor_b6e09c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = floor_b6e09c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.glsl
index c408af5..f802c7d 100644
--- a/test/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/dcd5a2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_dcd5a2() {
+  float res = 1.0f;
+}
+void main() {
+  floor_dcd5a2();
+}
+#version 310 es
+
+void floor_dcd5a2() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_dcd5a2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_dcd5a2() {
   float res = 1.0f;
 }
-void main() {
-  floor_dcd5a2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_dcd5a2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_dcd5a2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_dcd5a2() {
-  float res = 1.0f;
-}
 void main() {
-  floor_dcd5a2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_dcd5a2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_dcd5a2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_dcd5a2() {
-  float res = 1.0f;
-}
-void main() {
-  floor_dcd5a2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_dcd5a2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_dcd5a2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.glsl
index cf6416a..dfc52a1 100644
--- a/test/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/floor/e585ef.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void floor_e585ef() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  floor_e585ef();
+}
+#version 310 es
+
+void floor_e585ef() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  floor_e585ef();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void floor_e585ef() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  floor_e585ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_e585ef();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   floor_e585ef();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_e585ef() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  floor_e585ef();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_e585ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_e585ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void floor_e585ef() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  floor_e585ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  floor_e585ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  floor_e585ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.glsl
index e2b4901..791206b 100644
--- a/test/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fma/143d5d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_143d5d() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  fma_143d5d();
+}
+#version 310 es
+
+void fma_143d5d() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_143d5d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_143d5d() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  fma_143d5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_143d5d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_143d5d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_143d5d() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  fma_143d5d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_143d5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_143d5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_143d5d() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  fma_143d5d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_143d5d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_143d5d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.glsl
index 78f3d2f..dc7623c 100644
--- a/test/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fma/1f5084.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_1f5084() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  fma_1f5084();
+}
+#version 310 es
+
+void fma_1f5084() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_1f5084();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_1f5084() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  fma_1f5084();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_1f5084();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_1f5084();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_1f5084() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  fma_1f5084();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_1f5084();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_1f5084();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_1f5084() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  fma_1f5084();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_1f5084();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_1f5084();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.glsl
index 05c795b..51a6c6b 100644
--- a/test/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fma/466442.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_466442() {
+  float res = 2.0f;
+}
+void main() {
+  fma_466442();
+}
+#version 310 es
+
+void fma_466442() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_466442();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_466442() {
   float res = 2.0f;
 }
-void main() {
-  fma_466442();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_466442();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_466442();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_466442() {
-  float res = 2.0f;
-}
 void main() {
-  fma_466442();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_466442();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_466442();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_466442() {
-  float res = 2.0f;
-}
-void main() {
-  fma_466442();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_466442();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_466442();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.glsl
index 855d8e3..26e5131 100644
--- a/test/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fma/eb25d7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fma_eb25d7() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  fma_eb25d7();
+}
+#version 310 es
+
+void fma_eb25d7() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fma_eb25d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fma_eb25d7() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  fma_eb25d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_eb25d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fma_eb25d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_eb25d7() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  fma_eb25d7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_eb25d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_eb25d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fma_eb25d7() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  fma_eb25d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fma_eb25d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fma_eb25d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.glsl
index 3177b2a..994a73a 100644
--- a/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/181aa9.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 fract_181aa9() {
   f16vec2 arg_0 = f16vec2(1.25hf);
   f16vec2 res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_181aa9();
+  v.tint_symbol = fract_181aa9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_181aa9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_181aa9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 fract_181aa9() {
   f16vec2 arg_0 = f16vec2(1.25hf);
   f16vec2 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_181aa9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_181aa9();
+  v.tint_symbol = fract_181aa9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_181aa9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 fract_181aa9() {
   f16vec2 arg_0 = f16vec2(1.25hf);
   f16vec2 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_181aa9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_181aa9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_181aa9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.glsl
index d518cd3..d9378da 100644
--- a/test/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/2eddfe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_2eddfe() {
+  float res = 0.25f;
+}
+void main() {
+  fract_2eddfe();
+}
+#version 310 es
+
+void fract_2eddfe() {
+  float res = 0.25f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_2eddfe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_2eddfe() {
   float res = 0.25f;
 }
-void main() {
-  fract_2eddfe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_2eddfe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_2eddfe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_2eddfe() {
-  float res = 0.25f;
-}
 void main() {
-  fract_2eddfe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_2eddfe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_2eddfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_2eddfe() {
-  float res = 0.25f;
-}
-void main() {
-  fract_2eddfe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_2eddfe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_2eddfe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.glsl
index edfcdc0..c4ea1d1 100644
--- a/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/498c77.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 fract_498c77() {
   f16vec4 arg_0 = f16vec4(1.25hf);
   f16vec4 res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_498c77();
+  v.tint_symbol = fract_498c77();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_498c77();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_498c77();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 fract_498c77() {
   f16vec4 arg_0 = f16vec4(1.25hf);
   f16vec4 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_498c77();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_498c77();
+  v.tint_symbol = fract_498c77();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_498c77();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 fract_498c77() {
   f16vec4 arg_0 = f16vec4(1.25hf);
   f16vec4 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_498c77();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_498c77();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_498c77();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.glsl
index 83e203c..ba2c36f 100644
--- a/test/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/7e3f2d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_7e3f2d() {
+  vec4 res = vec4(0.25f);
+}
+void main() {
+  fract_7e3f2d();
+}
+#version 310 es
+
+void fract_7e3f2d() {
+  vec4 res = vec4(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_7e3f2d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_7e3f2d() {
   vec4 res = vec4(0.25f);
 }
-void main() {
-  fract_7e3f2d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_7e3f2d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_7e3f2d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_7e3f2d() {
-  vec4 res = vec4(0.25f);
-}
 void main() {
-  fract_7e3f2d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_7e3f2d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_7e3f2d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_7e3f2d() {
-  vec4 res = vec4(0.25f);
-}
-void main() {
-  fract_7e3f2d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_7e3f2d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_7e3f2d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.glsl
index 5742b25..60ea035 100644
--- a/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/8bc1e9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 fract_8bc1e9() {
   vec4 arg_0 = vec4(1.25f);
   vec4 res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_8bc1e9();
+  v.tint_symbol = fract_8bc1e9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 fract_8bc1e9() {
+  vec4 arg_0 = vec4(1.25f);
+  vec4 res = fract(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_8bc1e9();
+  v.tint_symbol = fract_8bc1e9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_8bc1e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 fract_8bc1e9() {
   vec4 arg_0 = vec4(1.25f);
   vec4 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_8bc1e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 fract_8bc1e9() {
-  vec4 arg_0 = vec4(1.25f);
-  vec4 res = fract(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = fract_8bc1e9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_8bc1e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_8bc1e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.glsl
index 3833193..43234b2 100644
--- a/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/943cb1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 fract_943cb1() {
   vec2 arg_0 = vec2(1.25f);
   vec2 res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_943cb1();
+  v.tint_symbol = fract_943cb1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 fract_943cb1() {
+  vec2 arg_0 = vec2(1.25f);
+  vec2 res = fract(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_943cb1();
+  v.tint_symbol = fract_943cb1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_943cb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 fract_943cb1() {
   vec2 arg_0 = vec2(1.25f);
   vec2 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_943cb1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_943cb1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_943cb1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 fract_943cb1() {
-  vec2 arg_0 = vec2(1.25f);
-  vec2 res = fract(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = fract_943cb1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_943cb1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_943cb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.glsl
index 856f6d9..b460fed 100644
--- a/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/958a1d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 fract_958a1d() {
   f16vec3 arg_0 = f16vec3(1.25hf);
   f16vec3 res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_958a1d();
+  v.tint_symbol = fract_958a1d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_958a1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_958a1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 fract_958a1d() {
   f16vec3 arg_0 = f16vec3(1.25hf);
   f16vec3 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_958a1d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_958a1d();
+  v.tint_symbol = fract_958a1d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_958a1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 fract_958a1d() {
   f16vec3 arg_0 = f16vec3(1.25hf);
   f16vec3 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_958a1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_958a1d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_958a1d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.glsl
index 5c9fa7d..e6d1068 100644
--- a/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/a49758.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 fract_a49758() {
   vec3 arg_0 = vec3(1.25f);
   vec3 res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_a49758();
+  v.tint_symbol = fract_a49758();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 fract_a49758() {
+  vec3 arg_0 = vec3(1.25f);
+  vec3 res = fract(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_a49758();
+  v.tint_symbol = fract_a49758();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_a49758();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 fract_a49758() {
   vec3 arg_0 = vec3(1.25f);
   vec3 res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_a49758();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_a49758();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_a49758();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 fract_a49758() {
-  vec3 arg_0 = vec3(1.25f);
-  vec3 res = fract(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = fract_a49758();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_a49758();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_a49758();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.glsl
index dffadd0..64a1377 100644
--- a/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/eb38ce.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t fract_eb38ce() {
   float16_t arg_0 = 1.25hf;
   float16_t res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_eb38ce();
+  v.tint_symbol = fract_eb38ce();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_eb38ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_eb38ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t fract_eb38ce() {
   float16_t arg_0 = 1.25hf;
   float16_t res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_eb38ce();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_eb38ce();
+  v.tint_symbol = fract_eb38ce();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_eb38ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t fract_eb38ce() {
   float16_t arg_0 = 1.25hf;
   float16_t res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_eb38ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_eb38ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_eb38ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.glsl
index 8638a81..4cb44f2 100644
--- a/test/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/ed00ca.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_ed00ca() {
+  vec2 res = vec2(0.25f);
+}
+void main() {
+  fract_ed00ca();
+}
+#version 310 es
+
+void fract_ed00ca() {
+  vec2 res = vec2(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_ed00ca();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_ed00ca() {
   vec2 res = vec2(0.25f);
 }
-void main() {
-  fract_ed00ca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed00ca();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_ed00ca();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed00ca() {
-  vec2 res = vec2(0.25f);
-}
 void main() {
-  fract_ed00ca();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed00ca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed00ca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed00ca() {
-  vec2 res = vec2(0.25f);
-}
-void main() {
-  fract_ed00ca();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed00ca();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed00ca();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.glsl
index 194fff8..e80afd5 100644
--- a/test/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/ed2f79.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void fract_ed2f79() {
+  vec3 res = vec3(0.25f);
+}
+void main() {
+  fract_ed2f79();
+}
+#version 310 es
+
+void fract_ed2f79() {
+  vec3 res = vec3(0.25f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  fract_ed2f79();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void fract_ed2f79() {
   vec3 res = vec3(0.25f);
 }
-void main() {
-  fract_ed2f79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed2f79();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   fract_ed2f79();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed2f79() {
-  vec3 res = vec3(0.25f);
-}
 void main() {
-  fract_ed2f79();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed2f79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed2f79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void fract_ed2f79() {
-  vec3 res = vec3(0.25f);
-}
-void main() {
-  fract_ed2f79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  fract_ed2f79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  fract_ed2f79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.glsl
index 0f33d4b..7a749e7 100644
--- a/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/fract/fa5c71.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float fract_fa5c71() {
   float arg_0 = 1.25f;
   float res = fract(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = fract_fa5c71();
+  v.tint_symbol = fract_fa5c71();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float fract_fa5c71() {
+  float arg_0 = 1.25f;
+  float res = fract(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = fract_fa5c71();
+  v.tint_symbol = fract_fa5c71();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_fa5c71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float fract_fa5c71() {
   float arg_0 = 1.25f;
   float res = fract(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = fract_fa5c71();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float fract_fa5c71() {
-  float arg_0 = 1.25f;
-  float res = fract(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = fract_fa5c71();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = fract_fa5c71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = fract_fa5c71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.glsl
index 6789f35..68e0023 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/07a6fe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_07a6fe() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  inverseSqrt_07a6fe();
+}
+#version 310 es
+
+void inverseSqrt_07a6fe() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_07a6fe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_07a6fe() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  inverseSqrt_07a6fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_07a6fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_07a6fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_07a6fe() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  inverseSqrt_07a6fe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_07a6fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_07a6fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_07a6fe() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  inverseSqrt_07a6fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_07a6fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_07a6fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.glsl
index 365f01e..68ea3ec 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/440300.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t inverseSqrt_440300() {
   float16_t arg_0 = 1.0hf;
   float16_t res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_440300();
+  v.tint_symbol = inverseSqrt_440300();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_440300();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t inverseSqrt_440300() {
   float16_t arg_0 = 1.0hf;
   float16_t res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_440300();
+  v.tint_symbol = inverseSqrt_440300();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_440300();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t inverseSqrt_440300() {
   float16_t arg_0 = 1.0hf;
   float16_t res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_440300();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_440300();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl
index 7a7bdec..a732eff 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/4ca6d6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_4ca6d6() {
+  float res = 1.0f;
+}
+void main() {
+  inverseSqrt_4ca6d6();
+}
+#version 310 es
+
+void inverseSqrt_4ca6d6() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_4ca6d6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_4ca6d6() {
   float res = 1.0f;
 }
-void main() {
-  inverseSqrt_4ca6d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_4ca6d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_4ca6d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_4ca6d6() {
-  float res = 1.0f;
-}
 void main() {
-  inverseSqrt_4ca6d6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_4ca6d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_4ca6d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_4ca6d6() {
-  float res = 1.0f;
-}
-void main() {
-  inverseSqrt_4ca6d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_4ca6d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_4ca6d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.glsl
index e960531..bc63fbb 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/5f51f8.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 inverseSqrt_5f51f8() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_5f51f8();
+  v.tint_symbol = inverseSqrt_5f51f8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_5f51f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 inverseSqrt_5f51f8() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_5f51f8();
+  v.tint_symbol = inverseSqrt_5f51f8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_5f51f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 inverseSqrt_5f51f8() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_5f51f8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_5f51f8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.glsl
index 0a9ea6b..4929f9a 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/6d0783.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_6d0783() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  inverseSqrt_6d0783();
+}
+#version 310 es
+
+void inverseSqrt_6d0783() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_6d0783();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_6d0783() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  inverseSqrt_6d0783();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_6d0783();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_6d0783();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_6d0783() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  inverseSqrt_6d0783();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_6d0783();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_6d0783();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_6d0783() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  inverseSqrt_6d0783();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_6d0783();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_6d0783();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.glsl
index c7acda6..c4f69af 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/84407e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float inverseSqrt_84407e() {
   float arg_0 = 1.0f;
   float res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_84407e();
+  v.tint_symbol = inverseSqrt_84407e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float inverseSqrt_84407e() {
+  float arg_0 = 1.0f;
+  float res = inversesqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_84407e();
+  v.tint_symbol = inverseSqrt_84407e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_84407e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float inverseSqrt_84407e() {
   float arg_0 = 1.0f;
   float res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_84407e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float inverseSqrt_84407e() {
-  float arg_0 = 1.0f;
-  float res = inversesqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_84407e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_84407e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_84407e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl
index 4e53025..6b7a47e 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/8f2bd2.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 inverseSqrt_8f2bd2() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
+  v.tint_symbol = inverseSqrt_8f2bd2();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 inverseSqrt_8f2bd2() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = inversesqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
+  v.tint_symbol = inverseSqrt_8f2bd2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_8f2bd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 inverseSqrt_8f2bd2() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_8f2bd2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 inverseSqrt_8f2bd2() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = inversesqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_8f2bd2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_8f2bd2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.glsl
index fb2ffff..4aa8710 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/b197b1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 inverseSqrt_b197b1() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_b197b1();
+  v.tint_symbol = inverseSqrt_b197b1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 inverseSqrt_b197b1() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = inversesqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_b197b1();
+  v.tint_symbol = inverseSqrt_b197b1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b197b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 inverseSqrt_b197b1() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_b197b1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 inverseSqrt_b197b1() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = inversesqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_b197b1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b197b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b197b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.glsl
index 8477e2d..2009515 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/b85ebd.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 inverseSqrt_b85ebd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_b85ebd();
+  v.tint_symbol = inverseSqrt_b85ebd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b85ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 inverseSqrt_b85ebd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_b85ebd();
+  v.tint_symbol = inverseSqrt_b85ebd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_b85ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 inverseSqrt_b85ebd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_b85ebd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_b85ebd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.glsl
index 80b05d6..217ccb06 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/c22347.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 inverseSqrt_c22347() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_c22347();
+  v.tint_symbol = inverseSqrt_c22347();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 inverseSqrt_c22347() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = inversesqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_c22347();
+  v.tint_symbol = inverseSqrt_c22347();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_c22347();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 inverseSqrt_c22347() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_c22347();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 inverseSqrt_c22347() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = inversesqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = inverseSqrt_c22347();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_c22347();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_c22347();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.glsl
index 7f297ea..621399a 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/cbdc70.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 inverseSqrt_cbdc70() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = inversesqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = inverseSqrt_cbdc70();
+  v.tint_symbol = inverseSqrt_cbdc70();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_cbdc70();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 inverseSqrt_cbdc70() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = inverseSqrt_cbdc70();
+  v.tint_symbol = inverseSqrt_cbdc70();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = inverseSqrt_cbdc70();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 inverseSqrt_cbdc70() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = inversesqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = inverseSqrt_cbdc70();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = inverseSqrt_cbdc70();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.glsl
index f084946..403427b 100644
--- a/test/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/inverseSqrt/f60c1c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void inverseSqrt_f60c1c() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  inverseSqrt_f60c1c();
+}
+#version 310 es
+
+void inverseSqrt_f60c1c() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  inverseSqrt_f60c1c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void inverseSqrt_f60c1c() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  inverseSqrt_f60c1c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_f60c1c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   inverseSqrt_f60c1c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_f60c1c() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  inverseSqrt_f60c1c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_f60c1c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_f60c1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void inverseSqrt_f60c1c() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  inverseSqrt_f60c1c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  inverseSqrt_f60c1c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  inverseSqrt_f60c1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.glsl
index 34c056f..062d0e8 100644
--- a/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/082c1f.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_082c1f() {
   float16_t arg_0 = 1.0hf;
   float16_t res = ldexp(arg_0, 1);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_082c1f();
+  v.tint_symbol = ldexp_082c1f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_082c1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_082c1f() {
   float16_t arg_0 = 1.0hf;
   float16_t res = ldexp(arg_0, 1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_082c1f();
+  v.tint_symbol = ldexp_082c1f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_082c1f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t ldexp_082c1f() {
   float16_t arg_0 = 1.0hf;
   float16_t res = ldexp(arg_0, 1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_082c1f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_082c1f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.glsl
index e22ae64..adf3c2a 100644
--- a/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/217a31.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_217a31() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = ldexp(arg_0, ivec2(1));
   return res;
 }
 void main() {
-  prevent_dce = ldexp_217a31();
+  v.tint_symbol = ldexp_217a31();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_217a31();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_217a31();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_217a31() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = ldexp(arg_0, ivec2(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_217a31();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_217a31();
+  v.tint_symbol = ldexp_217a31();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_217a31();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 ldexp_217a31() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = ldexp(arg_0, ivec2(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_217a31();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_217a31();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_217a31();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.glsl
index be0242d..b8a5fe3 100644
--- a/test/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/2bfc68.wgsl.expected.ir.glsl
@@ -1,10 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_2bfc68() {
+  ivec2 arg_1 = ivec2(1);
+  vec2 res = ldexp(vec2(1.0f), arg_1);
+}
+void main() {
+  ldexp_2bfc68();
+}
+#version 310 es
+
+void ldexp_2bfc68() {
+  ivec2 arg_1 = ivec2(1);
+  vec2 res = ldexp(vec2(1.0f), arg_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_2bfc68();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -13,91 +30,15 @@
   ivec2 arg_1 = ivec2(1);
   vec2 res = ldexp(vec2(1.0f), arg_1);
 }
-void main() {
-  ldexp_2bfc68();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2bfc68();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_2bfc68();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2bfc68() {
-  ivec2 arg_1 = ivec2(1);
-  vec2 res = ldexp(vec2(1.0f), arg_1);
-}
 void main() {
-  ldexp_2bfc68();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2bfc68();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2bfc68();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:18: 'main' : function already has a body 
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2bfc68() {
-  ivec2 arg_1 = ivec2(1);
-  vec2 res = ldexp(vec2(1.0f), arg_1);
-}
-void main() {
-  ldexp_2bfc68();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2bfc68();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2bfc68();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.glsl
index 234fb63..5887714 100644
--- a/test/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/2c6370.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_2c6370() {
+  vec2 res = vec2(2.0f);
+}
+void main() {
+  ldexp_2c6370();
+}
+#version 310 es
+
+void ldexp_2c6370() {
+  vec2 res = vec2(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_2c6370();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_2c6370() {
   vec2 res = vec2(2.0f);
 }
-void main() {
-  ldexp_2c6370();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2c6370();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_2c6370();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2c6370() {
-  vec2 res = vec2(2.0f);
-}
 void main() {
-  ldexp_2c6370();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2c6370();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2c6370();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_2c6370() {
-  vec2 res = vec2(2.0f);
-}
-void main() {
-  ldexp_2c6370();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_2c6370();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_2c6370();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.glsl
index 368277e..0c6e797 100644
--- a/test/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/376938.wgsl.expected.ir.glsl
@@ -1,10 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_376938() {
+  ivec4 arg_1 = ivec4(1);
+  vec4 res = ldexp(vec4(1.0f), arg_1);
+}
+void main() {
+  ldexp_376938();
+}
+#version 310 es
+
+void ldexp_376938() {
+  ivec4 arg_1 = ivec4(1);
+  vec4 res = ldexp(vec4(1.0f), arg_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_376938();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -13,91 +30,15 @@
   ivec4 arg_1 = ivec4(1);
   vec4 res = ldexp(vec4(1.0f), arg_1);
 }
-void main() {
-  ldexp_376938();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_376938();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_376938();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_376938() {
-  ivec4 arg_1 = ivec4(1);
-  vec4 res = ldexp(vec4(1.0f), arg_1);
-}
 void main() {
-  ldexp_376938();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_376938();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_376938();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:18: 'main' : function already has a body 
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_376938() {
-  ivec4 arg_1 = ivec4(1);
-  vec4 res = ldexp(vec4(1.0f), arg_1);
-}
-void main() {
-  ldexp_376938();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_376938();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_376938();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.glsl
index fb63763..b65d980 100644
--- a/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/3d90b4.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_3d90b4() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   ivec2 arg_1 = ivec2(1);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_3d90b4();
+  v.tint_symbol = ldexp_3d90b4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_3d90b4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 ldexp_3d90b4() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   ivec2 arg_1 = ivec2(1);
   f16vec2 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_3d90b4();
+  v.tint_symbol = ldexp_3d90b4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_3d90b4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 ldexp_3d90b4() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   ivec2 arg_1 = ivec2(1);
   f16vec2 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_3d90b4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_3d90b4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.glsl
index f25889e..e7b55f6 100644
--- a/test/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/4a3ad9.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_4a3ad9() {
+  vec3 res = vec3(2.0f);
+}
+void main() {
+  ldexp_4a3ad9();
+}
+#version 310 es
+
+void ldexp_4a3ad9() {
+  vec3 res = vec3(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_4a3ad9();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_4a3ad9() {
   vec3 res = vec3(2.0f);
 }
-void main() {
-  ldexp_4a3ad9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_4a3ad9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_4a3ad9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_4a3ad9() {
-  vec3 res = vec3(2.0f);
-}
 void main() {
-  ldexp_4a3ad9();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_4a3ad9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_4a3ad9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_4a3ad9() {
-  vec3 res = vec3(2.0f);
-}
-void main() {
-  ldexp_4a3ad9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_4a3ad9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_4a3ad9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.glsl
index 45dfcf0..69a08f1 100644
--- a/test/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/593ff3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 ldexp_593ff3() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = ldexp(arg_0, ivec3(1));
   return res;
 }
 void main() {
-  prevent_dce = ldexp_593ff3();
+  v.tint_symbol = ldexp_593ff3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 ldexp_593ff3() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = ldexp(arg_0, ivec3(1));
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_593ff3();
+  v.tint_symbol = ldexp_593ff3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_593ff3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 ldexp_593ff3() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = ldexp(arg_0, ivec3(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_593ff3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 ldexp_593ff3() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = ldexp(arg_0, ivec3(1));
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_593ff3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_593ff3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_593ff3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.glsl
index 6f1e5fe..a9d0c52 100644
--- a/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/624e0c.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_624e0c() {
   float16_t arg_0 = 1.0hf;
   int arg_1 = 1;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_624e0c();
+  v.tint_symbol = ldexp_624e0c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_624e0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t ldexp_624e0c() {
   float16_t arg_0 = 1.0hf;
   int arg_1 = 1;
   float16_t res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_624e0c();
+  v.tint_symbol = ldexp_624e0c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_624e0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t ldexp_624e0c() {
   float16_t arg_0 = 1.0hf;
   int arg_1 = 1;
   float16_t res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_624e0c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_624e0c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.glsl
index 6bc2129..893fc05 100644
--- a/test/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/65a7bd.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 ldexp_65a7bd() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = ldexp(arg_0, ivec4(1));
   return res;
 }
 void main() {
-  prevent_dce = ldexp_65a7bd();
+  v.tint_symbol = ldexp_65a7bd();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 ldexp_65a7bd() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = ldexp(arg_0, ivec4(1));
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_65a7bd();
+  v.tint_symbol = ldexp_65a7bd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_65a7bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 ldexp_65a7bd() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = ldexp(arg_0, ivec4(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_65a7bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 ldexp_65a7bd() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = ldexp(arg_0, ivec4(1));
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_65a7bd();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_65a7bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_65a7bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.glsl
index 954c572..e745751 100644
--- a/test/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/71ebe3.wgsl.expected.ir.glsl
@@ -1,10 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_71ebe3() {
+  int arg_1 = 1;
+  float res = ldexp(1.0f, arg_1);
+}
+void main() {
+  ldexp_71ebe3();
+}
+#version 310 es
+
+void ldexp_71ebe3() {
+  int arg_1 = 1;
+  float res = ldexp(1.0f, arg_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_71ebe3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -13,91 +30,15 @@
   int arg_1 = 1;
   float res = ldexp(1.0f, arg_1);
 }
-void main() {
-  ldexp_71ebe3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_71ebe3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_71ebe3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_71ebe3() {
-  int arg_1 = 1;
-  float res = ldexp(1.0f, arg_1);
-}
 void main() {
-  ldexp_71ebe3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_71ebe3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_71ebe3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:18: 'main' : function already has a body 
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_71ebe3() {
-  int arg_1 = 1;
-  float res = ldexp(1.0f, arg_1);
-}
-void main() {
-  ldexp_71ebe3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_71ebe3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_71ebe3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.glsl
index f0b0f94..481bb88 100644
--- a/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/7485ce.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_7485ce() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   ivec3 arg_1 = ivec3(1);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_7485ce();
+  v.tint_symbol = ldexp_7485ce();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7485ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_7485ce() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   ivec3 arg_1 = ivec3(1);
   f16vec3 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_7485ce();
+  v.tint_symbol = ldexp_7485ce();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7485ce();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 ldexp_7485ce() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   ivec3 arg_1 = ivec3(1);
   f16vec3 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7485ce();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_7485ce();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.glsl
index 2673c96..097e1ea 100644
--- a/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/7fa13c.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_7fa13c() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   ivec4 arg_1 = ivec4(1);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_7fa13c();
+  v.tint_symbol = ldexp_7fa13c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7fa13c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_7fa13c() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   ivec4 arg_1 = ivec4(1);
   f16vec4 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_7fa13c();
+  v.tint_symbol = ldexp_7fa13c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_7fa13c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 ldexp_7fa13c() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   ivec4 arg_1 = ivec4(1);
   f16vec4 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_7fa13c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_7fa13c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.glsl
index df13f5e..840793c 100644
--- a/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/8a0c2f.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_8a0c2f() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = ldexp(arg_0, ivec4(1));
   return res;
 }
 void main() {
-  prevent_dce = ldexp_8a0c2f();
+  v.tint_symbol = ldexp_8a0c2f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8a0c2f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 ldexp_8a0c2f() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = ldexp(arg_0, ivec4(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_8a0c2f();
+  v.tint_symbol = ldexp_8a0c2f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8a0c2f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 ldexp_8a0c2f() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = ldexp(arg_0, ivec4(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8a0c2f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_8a0c2f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.glsl
index 5227cb7..f7dc3e0 100644
--- a/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/8e43e9.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_8e43e9() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = ldexp(arg_0, ivec3(1));
   return res;
 }
 void main() {
-  prevent_dce = ldexp_8e43e9();
+  v.tint_symbol = ldexp_8e43e9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8e43e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 ldexp_8e43e9() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = ldexp(arg_0, ivec3(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_8e43e9();
+  v.tint_symbol = ldexp_8e43e9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_8e43e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 ldexp_8e43e9() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = ldexp(arg_0, ivec3(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_8e43e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_8e43e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.glsl
index 00ba790..4221a3e 100644
--- a/test/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/a22679.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 ldexp_a22679() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = ldexp(arg_0, ivec2(1));
   return res;
 }
 void main() {
-  prevent_dce = ldexp_a22679();
+  v.tint_symbol = ldexp_a22679();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 ldexp_a22679() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = ldexp(arg_0, ivec2(1));
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_a22679();
+  v.tint_symbol = ldexp_a22679();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a22679();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 ldexp_a22679() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = ldexp(arg_0, ivec2(1));
   return res;
 }
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_a22679();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 ldexp_a22679() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = ldexp(arg_0, ivec2(1));
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_a22679();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a22679();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a22679();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.glsl
index ed558f5..4556842 100644
--- a/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/a31cdc.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 ldexp_a31cdc() {
   vec3 arg_0 = vec3(1.0f);
   ivec3 arg_1 = ivec3(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_a31cdc();
+  v.tint_symbol = ldexp_a31cdc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a31cdc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 ldexp_a31cdc() {
   vec3 arg_0 = vec3(1.0f);
   ivec3 arg_1 = ivec3(1);
   vec3 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_a31cdc();
+  v.tint_symbol = ldexp_a31cdc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_a31cdc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 ldexp_a31cdc() {
   vec3 arg_0 = vec3(1.0f);
   ivec3 arg_1 = ivec3(1);
   vec3 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_a31cdc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_a31cdc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.glsl
index f6e62bc..9d9423f 100644
--- a/test/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/a6126e.wgsl.expected.ir.glsl
@@ -1,10 +1,27 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_a6126e() {
+  ivec3 arg_1 = ivec3(1);
+  vec3 res = ldexp(vec3(1.0f), arg_1);
+}
+void main() {
+  ldexp_a6126e();
+}
+#version 310 es
+
+void ldexp_a6126e() {
+  ivec3 arg_1 = ivec3(1);
+  vec3 res = ldexp(vec3(1.0f), arg_1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_a6126e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -13,91 +30,15 @@
   ivec3 arg_1 = ivec3(1);
   vec3 res = ldexp(vec3(1.0f), arg_1);
 }
-void main() {
-  ldexp_a6126e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_a6126e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_a6126e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_a6126e() {
-  ivec3 arg_1 = ivec3(1);
-  vec3 res = ldexp(vec3(1.0f), arg_1);
-}
 void main() {
-  ldexp_a6126e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_a6126e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_a6126e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:18: 'main' : function already has a body 
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_a6126e() {
-  ivec3 arg_1 = ivec3(1);
-  vec3 res = ldexp(vec3(1.0f), arg_1);
-}
-void main() {
-  ldexp_a6126e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_a6126e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_a6126e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.glsl
index 23057e5..3f3ac23 100644
--- a/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/abd718.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 ldexp_abd718() {
   vec2 arg_0 = vec2(1.0f);
   ivec2 arg_1 = ivec2(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_abd718();
+  v.tint_symbol = ldexp_abd718();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_abd718();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 ldexp_abd718() {
   vec2 arg_0 = vec2(1.0f);
   ivec2 arg_1 = ivec2(1);
   vec2 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_abd718();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_abd718();
+  v.tint_symbol = ldexp_abd718();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_abd718();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 ldexp_abd718() {
   vec2 arg_0 = vec2(1.0f);
   ivec2 arg_1 = ivec2(1);
   vec2 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_abd718();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_abd718();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.glsl
index e0a86e7..de3f789 100644
--- a/test/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/c9d0b7.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float ldexp_c9d0b7() {
   float arg_0 = 1.0f;
   float res = ldexp(arg_0, 1);
   return res;
 }
 void main() {
-  prevent_dce = ldexp_c9d0b7();
+  v.tint_symbol = ldexp_c9d0b7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float ldexp_c9d0b7() {
+  float arg_0 = 1.0f;
+  float res = ldexp(arg_0, 1);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_c9d0b7();
+  v.tint_symbol = ldexp_c9d0b7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_c9d0b7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float ldexp_c9d0b7() {
   float arg_0 = 1.0f;
   float res = ldexp(arg_0, 1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_c9d0b7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float ldexp_c9d0b7() {
-  float arg_0 = 1.0f;
-  float res = ldexp(arg_0, 1);
-  return res;
-}
 void main() {
-  prevent_dce = ldexp_c9d0b7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_c9d0b7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_c9d0b7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.glsl
index 12cd25c..b922890 100644
--- a/test/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/cb0faf.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_cb0faf() {
+  vec4 res = vec4(2.0f);
+}
+void main() {
+  ldexp_cb0faf();
+}
+#version 310 es
+
+void ldexp_cb0faf() {
+  vec4 res = vec4(2.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_cb0faf();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_cb0faf() {
   vec4 res = vec4(2.0f);
 }
-void main() {
-  ldexp_cb0faf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_cb0faf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_cb0faf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_cb0faf() {
-  vec4 res = vec4(2.0f);
-}
 void main() {
-  ldexp_cb0faf();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_cb0faf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_cb0faf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_cb0faf() {
-  vec4 res = vec4(2.0f);
-}
-void main() {
-  ldexp_cb0faf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_cb0faf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_cb0faf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.glsl
index 6a51d2c..c994444 100644
--- a/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/cc9cde.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 ldexp_cc9cde() {
   vec4 arg_0 = vec4(1.0f);
   ivec4 arg_1 = ivec4(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_cc9cde();
+  v.tint_symbol = ldexp_cc9cde();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_cc9cde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 ldexp_cc9cde() {
   vec4 arg_0 = vec4(1.0f);
   ivec4 arg_1 = ivec4(1);
   vec4 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_cc9cde();
+  v.tint_symbol = ldexp_cc9cde();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_cc9cde();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 ldexp_cc9cde() {
   vec4 arg_0 = vec4(1.0f);
   ivec4 arg_1 = ivec4(1);
   vec4 res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_cc9cde();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_cc9cde();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.glsl
index 890054b..ee2199b 100644
--- a/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/db8b49.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float ldexp_db8b49() {
   float arg_0 = 1.0f;
   int arg_1 = 1;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = ldexp_db8b49();
+  v.tint_symbol = ldexp_db8b49();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_db8b49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float ldexp_db8b49() {
   float arg_0 = 1.0f;
   int arg_1 = 1;
   float res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = ldexp_db8b49();
+  v.tint_symbol = ldexp_db8b49();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = ldexp_db8b49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float ldexp_db8b49() {
   float arg_0 = 1.0f;
   int arg_1 = 1;
   float res = ldexp(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = ldexp_db8b49();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = ldexp_db8b49();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.glsl
index 1c7d595..8de5e88 100644
--- a/test/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/ldexp/fdbc7b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void ldexp_fdbc7b() {
+  float res = 2.0f;
+}
+void main() {
+  ldexp_fdbc7b();
+}
+#version 310 es
+
+void ldexp_fdbc7b() {
+  float res = 2.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ldexp_fdbc7b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void ldexp_fdbc7b() {
   float res = 2.0f;
 }
-void main() {
-  ldexp_fdbc7b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_fdbc7b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   ldexp_fdbc7b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_fdbc7b() {
-  float res = 2.0f;
-}
 void main() {
-  ldexp_fdbc7b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_fdbc7b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_fdbc7b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void ldexp_fdbc7b() {
-  float res = 2.0f;
-}
-void main() {
-  ldexp_fdbc7b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  ldexp_fdbc7b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  ldexp_fdbc7b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/056071.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/056071.wgsl.expected.ir.glsl
index 2203f96..6826993 100644
--- a/test/tint/builtins/gen/var/length/056071.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/056071.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float length_056071() {
   vec3 arg_0 = vec3(0.0f);
   float res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_056071();
+  v.tint_symbol = length_056071();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_056071() {
+  vec3 arg_0 = vec3(0.0f);
+  float res = length(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_056071();
+  v.tint_symbol = length_056071();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_056071();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_056071() {
   vec3 arg_0 = vec3(0.0f);
   float res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_056071();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_056071();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_056071();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_056071() {
-  vec3 arg_0 = vec3(0.0f);
-  float res = length(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = length_056071();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_056071();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_056071();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.glsl
index 1bb9407..0ddd9dc 100644
--- a/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/3f0e13.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_3f0e13() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_3f0e13();
+  v.tint_symbol = length_3f0e13();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_3f0e13();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_3f0e13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_3f0e13() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_3f0e13();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_3f0e13();
+  v.tint_symbol = length_3f0e13();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_3f0e13();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_3f0e13() {
   f16vec2 arg_0 = f16vec2(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_3f0e13();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_3f0e13();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_3f0e13();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.glsl
index 6e8b054..b0a96b0 100644
--- a/test/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/555aba.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_555aba() {
+  float res = 0.0f;
+}
+void main() {
+  length_555aba();
+}
+#version 310 es
+
+void length_555aba() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_555aba();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_555aba() {
   float res = 0.0f;
 }
-void main() {
-  length_555aba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_555aba();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_555aba();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_555aba() {
-  float res = 0.0f;
-}
 void main() {
-  length_555aba();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_555aba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_555aba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_555aba() {
-  float res = 0.0f;
-}
-void main() {
-  length_555aba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_555aba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_555aba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.glsl
index c15fc91..1df4f9c 100644
--- a/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/5b1a9b.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_5b1a9b() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_5b1a9b();
+  v.tint_symbol = length_5b1a9b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_5b1a9b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_5b1a9b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_5b1a9b() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_5b1a9b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_5b1a9b();
+  v.tint_symbol = length_5b1a9b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_5b1a9b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_5b1a9b() {
   f16vec4 arg_0 = f16vec4(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_5b1a9b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_5b1a9b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_5b1a9b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.glsl
index 48152a7..2041039 100644
--- a/test/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/602a17.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float length_602a17() {
   float arg_0 = 0.0f;
   float res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_602a17();
+  v.tint_symbol = length_602a17();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_602a17() {
+  float arg_0 = 0.0f;
+  float res = length(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_602a17();
+  v.tint_symbol = length_602a17();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_602a17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_602a17() {
   float arg_0 = 0.0f;
   float res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_602a17();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_602a17();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_602a17();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_602a17() {
-  float arg_0 = 0.0f;
-  float res = length(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = length_602a17();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_602a17();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_602a17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.glsl
index e2680cf..43a68e9 100644
--- a/test/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/7b4741.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_7b4741() {
+  float res = 0.0f;
+}
+void main() {
+  length_7b4741();
+}
+#version 310 es
+
+void length_7b4741() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_7b4741();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_7b4741() {
   float res = 0.0f;
 }
-void main() {
-  length_7b4741();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_7b4741();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_7b4741();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_7b4741() {
-  float res = 0.0f;
-}
 void main() {
-  length_7b4741();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_7b4741();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_7b4741();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_7b4741() {
-  float res = 0.0f;
-}
-void main() {
-  length_7b4741();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_7b4741();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_7b4741();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.glsl
index c1c8dc4..80e926f 100644
--- a/test/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/936ad5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_936ad5() {
+  float res = 0.0f;
+}
+void main() {
+  length_936ad5();
+}
+#version 310 es
+
+void length_936ad5() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_936ad5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_936ad5() {
   float res = 0.0f;
 }
-void main() {
-  length_936ad5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_936ad5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_936ad5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_936ad5() {
-  float res = 0.0f;
-}
 void main() {
-  length_936ad5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_936ad5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_936ad5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_936ad5() {
-  float res = 0.0f;
-}
-void main() {
-  length_936ad5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_936ad5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_936ad5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.glsl
index 5b0150a..6c4eb13 100644
--- a/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/afde8b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float length_afde8b() {
   vec2 arg_0 = vec2(0.0f);
   float res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_afde8b();
+  v.tint_symbol = length_afde8b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_afde8b() {
+  vec2 arg_0 = vec2(0.0f);
+  float res = length(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_afde8b();
+  v.tint_symbol = length_afde8b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_afde8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_afde8b() {
   vec2 arg_0 = vec2(0.0f);
   float res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_afde8b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_afde8b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_afde8b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_afde8b() {
-  vec2 arg_0 = vec2(0.0f);
-  float res = length(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = length_afde8b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_afde8b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_afde8b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.glsl
index 9abbd1f..cd676ab 100644
--- a/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/ba16d6.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_ba16d6() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_ba16d6();
+  v.tint_symbol = length_ba16d6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_ba16d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_ba16d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_ba16d6() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_ba16d6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_ba16d6();
+  v.tint_symbol = length_ba16d6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_ba16d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_ba16d6() {
   f16vec3 arg_0 = f16vec3(0.0hf);
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_ba16d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_ba16d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_ba16d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.glsl
index 582cf64..45bbec2 100644
--- a/test/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/becebf.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float length_becebf() {
   vec4 arg_0 = vec4(0.0f);
   float res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_becebf();
+  v.tint_symbol = length_becebf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float length_becebf() {
+  vec4 arg_0 = vec4(0.0f);
+  float res = length(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_becebf();
+  v.tint_symbol = length_becebf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_becebf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float length_becebf() {
   vec4 arg_0 = vec4(0.0f);
   float res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_becebf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_becebf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_becebf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float length_becebf() {
-  vec4 arg_0 = vec4(0.0f);
-  float res = length(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = length_becebf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_becebf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_becebf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.glsl
index 6fc8b7c..e391a4f 100644
--- a/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/c158da.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_c158da() {
   float16_t arg_0 = 0.0hf;
   float16_t res = length(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = length_c158da();
+  v.tint_symbol = length_c158da();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_c158da();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_c158da();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t length_c158da() {
   float16_t arg_0 = 0.0hf;
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_c158da();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = length_c158da();
+  v.tint_symbol = length_c158da();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = length_c158da();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t length_c158da() {
   float16_t arg_0 = 0.0hf;
   float16_t res = length(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = length_c158da();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = length_c158da();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = length_c158da();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.glsl
index f4534bc..fcd6433 100644
--- a/test/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/length/c2c544.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void length_c2c544() {
+  float res = 0.0f;
+}
+void main() {
+  length_c2c544();
+}
+#version 310 es
+
+void length_c2c544() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  length_c2c544();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void length_c2c544() {
   float res = 0.0f;
 }
-void main() {
-  length_c2c544();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_c2c544();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   length_c2c544();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_c2c544() {
-  float res = 0.0f;
-}
 void main() {
-  length_c2c544();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_c2c544();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_c2c544();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void length_c2c544() {
-  float res = 0.0f;
-}
-void main() {
-  length_c2c544();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  length_c2c544();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  length_c2c544();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.glsl
index 7e937f2..4c9e4b6 100644
--- a/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/3da25a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 log_3da25a() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_3da25a();
+  v.tint_symbol = log_3da25a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 log_3da25a() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = log(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_3da25a();
+  v.tint_symbol = log_3da25a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_3da25a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 log_3da25a() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_3da25a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_3da25a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_3da25a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 log_3da25a() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = log(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log_3da25a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_3da25a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_3da25a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/655989.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/655989.wgsl.expected.ir.glsl
index c89faac..559ec95 100644
--- a/test/tint/builtins/gen/var/log/655989.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/655989.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_655989() {
+  float res = 0.0f;
+}
+void main() {
+  log_655989();
+}
+#version 310 es
+
+void log_655989() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_655989();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_655989() {
   float res = 0.0f;
 }
-void main() {
-  log_655989();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_655989();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_655989();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_655989() {
-  float res = 0.0f;
-}
 void main() {
-  log_655989();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_655989();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_655989();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_655989() {
-  float res = 0.0f;
-}
-void main() {
-  log_655989();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_655989();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_655989();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.glsl
index e306295..b8ad471 100644
--- a/test/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/697e1d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_697e1d() {
+  vec4 res = vec4(0.0f);
+}
+void main() {
+  log_697e1d();
+}
+#version 310 es
+
+void log_697e1d() {
+  vec4 res = vec4(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_697e1d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_697e1d() {
   vec4 res = vec4(0.0f);
 }
-void main() {
-  log_697e1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_697e1d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_697e1d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_697e1d() {
-  vec4 res = vec4(0.0f);
-}
 void main() {
-  log_697e1d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_697e1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_697e1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_697e1d() {
-  vec4 res = vec4(0.0f);
-}
-void main() {
-  log_697e1d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_697e1d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_697e1d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.glsl
index d43b0c6..afbfa04 100644
--- a/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/6ff86f.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log_6ff86f() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_6ff86f();
+  v.tint_symbol = log_6ff86f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_6ff86f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_6ff86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log_6ff86f() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_6ff86f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_6ff86f();
+  v.tint_symbol = log_6ff86f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_6ff86f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 log_6ff86f() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_6ff86f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_6ff86f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_6ff86f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.glsl
index 599a0ff..318130d 100644
--- a/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/7114a6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float log_7114a6() {
   float arg_0 = 1.0f;
   float res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_7114a6();
+  v.tint_symbol = log_7114a6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float log_7114a6() {
+  float arg_0 = 1.0f;
+  float res = log(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_7114a6();
+  v.tint_symbol = log_7114a6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_7114a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float log_7114a6() {
   float arg_0 = 1.0f;
   float res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_7114a6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_7114a6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_7114a6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float log_7114a6() {
-  float arg_0 = 1.0f;
-  float res = log(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log_7114a6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_7114a6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_7114a6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.glsl
index f0fa0e1..cdb4d0f 100644
--- a/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/8f0e32.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log_8f0e32() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_8f0e32();
+  v.tint_symbol = log_8f0e32();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_8f0e32();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_8f0e32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log_8f0e32() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_8f0e32();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_8f0e32();
+  v.tint_symbol = log_8f0e32();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_8f0e32();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 log_8f0e32() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_8f0e32();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_8f0e32();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_8f0e32();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.glsl
index 05c224c..2508099 100644
--- a/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/b2ce28.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 log_b2ce28() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_b2ce28();
+  v.tint_symbol = log_b2ce28();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 log_b2ce28() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = log(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_b2ce28();
+  v.tint_symbol = log_b2ce28();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_b2ce28();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 log_b2ce28() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_b2ce28();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_b2ce28();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_b2ce28();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 log_b2ce28() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = log(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log_b2ce28();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_b2ce28();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_b2ce28();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.glsl
index d68197c..d577c2c 100644
--- a/test/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/b8088d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_b8088d() {
+  vec3 res = vec3(0.0f);
+}
+void main() {
+  log_b8088d();
+}
+#version 310 es
+
+void log_b8088d() {
+  vec3 res = vec3(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_b8088d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_b8088d() {
   vec3 res = vec3(0.0f);
 }
-void main() {
-  log_b8088d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_b8088d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_b8088d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_b8088d() {
-  vec3 res = vec3(0.0f);
-}
 void main() {
-  log_b8088d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_b8088d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_b8088d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_b8088d() {
-  vec3 res = vec3(0.0f);
-}
-void main() {
-  log_b8088d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_b8088d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_b8088d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.glsl
index d29461d..d3d3028 100644
--- a/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/c9f489.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log_c9f489() {
   float16_t arg_0 = 1.0hf;
   float16_t res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_c9f489();
+  v.tint_symbol = log_c9f489();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_c9f489();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_c9f489();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log_c9f489() {
   float16_t arg_0 = 1.0hf;
   float16_t res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_c9f489();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_c9f489();
+  v.tint_symbol = log_c9f489();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_c9f489();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t log_c9f489() {
   float16_t arg_0 = 1.0hf;
   float16_t res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_c9f489();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_c9f489();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_c9f489();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.glsl
index 2118941..2078b72 100644
--- a/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/cdbdc1.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log_cdbdc1() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_cdbdc1();
+  v.tint_symbol = log_cdbdc1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_cdbdc1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_cdbdc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log_cdbdc1() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_cdbdc1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_cdbdc1();
+  v.tint_symbol = log_cdbdc1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_cdbdc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 log_cdbdc1() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_cdbdc1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_cdbdc1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_cdbdc1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.glsl
index a0d88ac..3e1d082 100644
--- a/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/f4c570.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 log_f4c570() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = log(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log_f4c570();
+  v.tint_symbol = log_f4c570();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 log_f4c570() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = log(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log_f4c570();
+  v.tint_symbol = log_f4c570();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_f4c570();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 log_f4c570() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = log(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log_f4c570();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_f4c570();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log_f4c570();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 log_f4c570() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = log(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log_f4c570();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log_f4c570();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log_f4c570();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.glsl
index 35b66ec..1cd5963 100644
--- a/test/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log/f60cc7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log_f60cc7() {
+  vec2 res = vec2(0.0f);
+}
+void main() {
+  log_f60cc7();
+}
+#version 310 es
+
+void log_f60cc7() {
+  vec2 res = vec2(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log_f60cc7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log_f60cc7() {
   vec2 res = vec2(0.0f);
 }
-void main() {
-  log_f60cc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_f60cc7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log_f60cc7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_f60cc7() {
-  vec2 res = vec2(0.0f);
-}
 void main() {
-  log_f60cc7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_f60cc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_f60cc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log_f60cc7() {
-  vec2 res = vec2(0.0f);
-}
-void main() {
-  log_f60cc7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log_f60cc7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log_f60cc7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.glsl
index d281732..cefd5f8 100644
--- a/test/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/0fbd39.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_0fbd39() {
+  vec3 res = vec3(0.0f);
+}
+void main() {
+  log2_0fbd39();
+}
+#version 310 es
+
+void log2_0fbd39() {
+  vec3 res = vec3(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_0fbd39();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_0fbd39() {
   vec3 res = vec3(0.0f);
 }
-void main() {
-  log2_0fbd39();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_0fbd39();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_0fbd39();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_0fbd39() {
-  vec3 res = vec3(0.0f);
-}
 void main() {
-  log2_0fbd39();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_0fbd39();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_0fbd39();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_0fbd39() {
-  vec3 res = vec3(0.0f);
-}
-void main() {
-  log2_0fbd39();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_0fbd39();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_0fbd39();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.glsl
index adb8ab1..8db4f11 100644
--- a/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/38b478.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log2_38b478() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_38b478();
+  v.tint_symbol = log2_38b478();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_38b478();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_38b478();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 log2_38b478() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_38b478();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_38b478();
+  v.tint_symbol = log2_38b478();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_38b478();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 log2_38b478() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_38b478();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_38b478();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_38b478();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.glsl
index bf6cfa2..1138274 100644
--- a/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/4036ed.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float log2_4036ed() {
   float arg_0 = 1.0f;
   float res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_4036ed();
+  v.tint_symbol = log2_4036ed();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float log2_4036ed() {
+  float arg_0 = 1.0f;
+  float res = log2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_4036ed();
+  v.tint_symbol = log2_4036ed();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_4036ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float log2_4036ed() {
   float arg_0 = 1.0f;
   float res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_4036ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_4036ed();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_4036ed();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float log2_4036ed() {
-  float arg_0 = 1.0f;
-  float res = log2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log2_4036ed();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_4036ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_4036ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.glsl
index 1913b73..0bf201a 100644
--- a/test/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/5b464b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_5b464b() {
+  float res = 0.0f;
+}
+void main() {
+  log2_5b464b();
+}
+#version 310 es
+
+void log2_5b464b() {
+  float res = 0.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_5b464b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_5b464b() {
   float res = 0.0f;
 }
-void main() {
-  log2_5b464b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_5b464b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_5b464b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_5b464b() {
-  float res = 0.0f;
-}
 void main() {
-  log2_5b464b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_5b464b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_5b464b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_5b464b() {
-  float res = 0.0f;
-}
-void main() {
-  log2_5b464b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_5b464b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_5b464b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.glsl
index 6b1d943..cec9e76 100644
--- a/test/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/6b8954.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_6b8954() {
+  vec2 res = vec2(0.0f);
+}
+void main() {
+  log2_6b8954();
+}
+#version 310 es
+
+void log2_6b8954() {
+  vec2 res = vec2(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_6b8954();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_6b8954() {
   vec2 res = vec2(0.0f);
 }
-void main() {
-  log2_6b8954();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_6b8954();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_6b8954();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_6b8954() {
-  vec2 res = vec2(0.0f);
-}
 void main() {
-  log2_6b8954();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_6b8954();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_6b8954();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_6b8954() {
-  vec2 res = vec2(0.0f);
-}
-void main() {
-  log2_6b8954();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_6b8954();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_6b8954();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.glsl
index bec3a0f..4a0ecdd 100644
--- a/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/776088.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log2_776088() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_776088();
+  v.tint_symbol = log2_776088();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_776088();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_776088();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 log2_776088() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_776088();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_776088();
+  v.tint_symbol = log2_776088();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_776088();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 log2_776088() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_776088();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_776088();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_776088();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.glsl
index 7735d5a..240df3c 100644
--- a/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/8c10b3.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log2_8c10b3() {
   float16_t arg_0 = 1.0hf;
   float16_t res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_8c10b3();
+  v.tint_symbol = log2_8c10b3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_8c10b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_8c10b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t log2_8c10b3() {
   float16_t arg_0 = 1.0hf;
   float16_t res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_8c10b3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_8c10b3();
+  v.tint_symbol = log2_8c10b3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_8c10b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t log2_8c10b3() {
   float16_t arg_0 = 1.0hf;
   float16_t res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_8c10b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_8c10b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_8c10b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.glsl
index 84b6bdf..a21a21f 100644
--- a/test/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/902988.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 log2_902988() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_902988();
+  v.tint_symbol = log2_902988();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 log2_902988() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = log2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_902988();
+  v.tint_symbol = log2_902988();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_902988();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 log2_902988() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_902988();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_902988();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_902988();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 log2_902988() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = log2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log2_902988();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_902988();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_902988();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.glsl
index fa83fbd..c53ffb1 100644
--- a/test/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/a52bbb.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void log2_a52bbb() {
+  vec4 res = vec4(0.0f);
+}
+void main() {
+  log2_a52bbb();
+}
+#version 310 es
+
+void log2_a52bbb() {
+  vec4 res = vec4(0.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  log2_a52bbb();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void log2_a52bbb() {
   vec4 res = vec4(0.0f);
 }
-void main() {
-  log2_a52bbb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_a52bbb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   log2_a52bbb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_a52bbb() {
-  vec4 res = vec4(0.0f);
-}
 void main() {
-  log2_a52bbb();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_a52bbb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_a52bbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void log2_a52bbb() {
-  vec4 res = vec4(0.0f);
-}
-void main() {
-  log2_a52bbb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  log2_a52bbb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  log2_a52bbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.glsl
index f610177..2db347e 100644
--- a/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/adb233.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 log2_adb233() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_adb233();
+  v.tint_symbol = log2_adb233();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 log2_adb233() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = log2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_adb233();
+  v.tint_symbol = log2_adb233();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_adb233();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 log2_adb233() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_adb233();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_adb233();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_adb233();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 log2_adb233() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = log2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log2_adb233();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_adb233();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_adb233();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.glsl
index e1df6a6..50889c5 100644
--- a/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/aea659.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 log2_aea659() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_aea659();
+  v.tint_symbol = log2_aea659();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 log2_aea659() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = log2(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_aea659();
+  v.tint_symbol = log2_aea659();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_aea659();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 log2_aea659() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_aea659();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_aea659();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_aea659();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 log2_aea659() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = log2(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = log2_aea659();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_aea659();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_aea659();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.glsl
index 5d83a9f..453477c 100644
--- a/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/log2/fb9f0b.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log2_fb9f0b() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = log2(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = log2_fb9f0b();
+  v.tint_symbol = log2_fb9f0b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_fb9f0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 log2_fb9f0b() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = log2_fb9f0b();
+  v.tint_symbol = log2_fb9f0b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = log2_fb9f0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 log2_fb9f0b() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = log2(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = log2_fb9f0b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = log2_fb9f0b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.glsl
index 8f78001..baa855d 100644
--- a/test/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/067f3a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_067f3a() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  max_067f3a();
+}
+#version 310 es
+
+void max_067f3a() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_067f3a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_067f3a() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  max_067f3a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_067f3a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_067f3a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_067f3a() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  max_067f3a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_067f3a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_067f3a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_067f3a() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  max_067f3a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_067f3a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_067f3a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.glsl
index 16c907e..8d026ab 100644
--- a/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/0c0aae.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint max_0c0aae() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_0c0aae();
+  v.tint_symbol = max_0c0aae();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_0c0aae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_0c0aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint max_0c0aae() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
   uint res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_0c0aae();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_0c0aae();
+  v.tint_symbol = max_0c0aae();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_0c0aae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint max_0c0aae() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
   uint res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_0c0aae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_0c0aae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_0c0aae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.glsl
index 73195e3..df4abbf 100644
--- a/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/111ac0.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t max_111ac0() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = max_111ac0();
+  v.tint_symbol = max_111ac0();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_111ac0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_111ac0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t max_111ac0() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_111ac0();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_111ac0();
+  v.tint_symbol = max_111ac0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_111ac0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t max_111ac0() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_111ac0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_111ac0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_111ac0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.glsl
index c904a1a..0069639 100644
--- a/test/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/19070a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_19070a() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  max_19070a();
+}
+#version 310 es
+
+void max_19070a() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_19070a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_19070a() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  max_19070a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_19070a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_19070a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_19070a() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  max_19070a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_19070a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_19070a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_19070a() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  max_19070a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_19070a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_19070a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.glsl
index 64816c4..6ce9e83 100644
--- a/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/25eafe.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 max_25eafe() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_25eafe();
+  v.tint_symbol = max_25eafe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_25eafe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_25eafe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 max_25eafe() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
   ivec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_25eafe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_25eafe();
+  v.tint_symbol = max_25eafe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_25eafe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 max_25eafe() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
   ivec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_25eafe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_25eafe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_25eafe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/320815.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/320815.wgsl.expected.ir.glsl
index f6113ab..ddf45e5 100644
--- a/test/tint/builtins/gen/var/max/320815.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/320815.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
 uvec2 max_320815() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_320815();
+  v.tint_symbol = max_320815();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_320815();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_320815();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
 uvec2 max_320815() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
   uvec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_320815();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_320815();
+  v.tint_symbol = max_320815();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_320815();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 max_320815() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
   uvec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_320815();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_320815();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_320815();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.glsl
index 9122bc4..fce5331 100644
--- a/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/34956e.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 max_34956e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = max_34956e();
+  v.tint_symbol = max_34956e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_34956e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_34956e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 max_34956e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_34956e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_34956e();
+  v.tint_symbol = max_34956e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_34956e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 max_34956e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_34956e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_34956e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_34956e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.glsl
index 9956c8c..ed3e537 100644
--- a/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/445169.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 max_445169() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = max_445169();
+  v.tint_symbol = max_445169();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_445169();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_445169();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 max_445169() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_445169();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_445169();
+  v.tint_symbol = max_445169();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_445169();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 max_445169() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_445169();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_445169();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_445169();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.glsl
index 3215a3b..6c885f6 100644
--- a/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/44a39d.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float max_44a39d() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_44a39d();
+  v.tint_symbol = max_44a39d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_44a39d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_44a39d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float max_44a39d() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_44a39d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_44a39d();
+  v.tint_symbol = max_44a39d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_44a39d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float max_44a39d() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_44a39d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_44a39d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_44a39d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.glsl
index 734eb66..de4bca2 100644
--- a/test/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/453e04.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
 uvec4 max_453e04() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_453e04();
+  v.tint_symbol = max_453e04();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_453e04();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_453e04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
 uvec4 max_453e04() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
   uvec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_453e04();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_453e04();
+  v.tint_symbol = max_453e04();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_453e04();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 max_453e04() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
   uvec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_453e04();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_453e04();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_453e04();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/462050.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/462050.wgsl.expected.ir.glsl
index f61f0af..3185e7c 100644
--- a/test/tint/builtins/gen/var/max/462050.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/462050.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 max_462050() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_462050();
+  v.tint_symbol = max_462050();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_462050();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_462050();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 max_462050() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_462050();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_462050();
+  v.tint_symbol = max_462050();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_462050();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 max_462050() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_462050();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_462050();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_462050();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.glsl
index 24c03df..c769d41 100644
--- a/test/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/482d23.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_482d23() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  max_482d23();
+}
+#version 310 es
+
+void max_482d23() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_482d23();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_482d23() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  max_482d23();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_482d23();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_482d23();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_482d23() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  max_482d23();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_482d23();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_482d23();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_482d23() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  max_482d23();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_482d23();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_482d23();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.glsl
index c3f65dd..5094a2e 100644
--- a/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/4883ac.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 max_4883ac() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_4883ac();
+  v.tint_symbol = max_4883ac();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_4883ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_4883ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 max_4883ac() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_4883ac();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_4883ac();
+  v.tint_symbol = max_4883ac();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_4883ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 max_4883ac() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_4883ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_4883ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_4883ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.glsl
index 9005aff..9b16985 100644
--- a/test/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/4bbff2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_4bbff2() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  max_4bbff2();
+}
+#version 310 es
+
+void max_4bbff2() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_4bbff2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_4bbff2() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  max_4bbff2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_4bbff2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_4bbff2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_4bbff2() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  max_4bbff2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_4bbff2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_4bbff2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_4bbff2() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  max_4bbff2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_4bbff2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_4bbff2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.glsl
index 19b7671..4aefeed 100644
--- a/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/85e6bc.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 max_85e6bc() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_85e6bc();
+  v.tint_symbol = max_85e6bc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_85e6bc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_85e6bc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 max_85e6bc() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
   ivec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_85e6bc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_85e6bc();
+  v.tint_symbol = max_85e6bc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_85e6bc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 max_85e6bc() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
   ivec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_85e6bc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_85e6bc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_85e6bc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.glsl
index 997dd73..77cd8c5 100644
--- a/test/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/a1b196.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_a1b196() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  max_a1b196();
+}
+#version 310 es
+
+void max_a1b196() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_a1b196();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_a1b196() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  max_a1b196();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_a1b196();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_a1b196();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_a1b196() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  max_a1b196();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_a1b196();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_a1b196();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_a1b196() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  max_a1b196();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_a1b196();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_a1b196();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.glsl
index 80abf9f..a016d55 100644
--- a/test/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/a93419.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 max_a93419() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_a93419();
+  v.tint_symbol = max_a93419();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_a93419();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_a93419();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 max_a93419() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_a93419();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_a93419();
+  v.tint_symbol = max_a93419();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_a93419();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 max_a93419() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_a93419();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_a93419();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_a93419();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.glsl
index e8c9ac9..3d64f13 100644
--- a/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/b1b73a.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
 uvec3 max_b1b73a() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_b1b73a();
+  v.tint_symbol = max_b1b73a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_b1b73a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_b1b73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
 uvec3 max_b1b73a() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
   uvec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_b1b73a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_b1b73a();
+  v.tint_symbol = max_b1b73a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_b1b73a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 max_b1b73a() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
   uvec3 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_b1b73a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_b1b73a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_b1b73a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.glsl
index 84ce82e..ab457f7 100644
--- a/test/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/c023dd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_c023dd() {
+  float res = 1.0f;
+}
+void main() {
+  max_c023dd();
+}
+#version 310 es
+
+void max_c023dd() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_c023dd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_c023dd() {
   float res = 1.0f;
 }
-void main() {
-  max_c023dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_c023dd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_c023dd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_c023dd() {
-  float res = 1.0f;
-}
 void main() {
-  max_c023dd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_c023dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_c023dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_c023dd() {
-  float res = 1.0f;
-}
-void main() {
-  max_c023dd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_c023dd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_c023dd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.glsl
index 8f0b2e2..6c04daf 100644
--- a/test/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/caa3d7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_caa3d7() {
+  int res = 1;
+}
+void main() {
+  max_caa3d7();
+}
+#version 310 es
+
+void max_caa3d7() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_caa3d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_caa3d7() {
   int res = 1;
 }
-void main() {
-  max_caa3d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_caa3d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_caa3d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_caa3d7() {
-  int res = 1;
-}
 void main() {
-  max_caa3d7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_caa3d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_caa3d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_caa3d7() {
-  int res = 1;
-}
-void main() {
-  max_caa3d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_caa3d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_caa3d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.glsl
index dd7be54..7df16c1 100644
--- a/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/ce7c30.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int max_ce7c30() {
   int arg_0 = 1;
   int arg_1 = 1;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_ce7c30();
+  v.tint_symbol = max_ce7c30();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_ce7c30();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_ce7c30();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int max_ce7c30() {
   int arg_0 = 1;
   int arg_1 = 1;
   int res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_ce7c30();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_ce7c30();
+  v.tint_symbol = max_ce7c30();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_ce7c30();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int max_ce7c30() {
   int arg_0 = 1;
   int arg_1 = 1;
   int res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_ce7c30();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_ce7c30();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_ce7c30();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.glsl
index f26c743..8b76aab 100644
--- a/test/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/de6b87.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void max_de6b87() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  max_de6b87();
+}
+#version 310 es
+
+void max_de6b87() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  max_de6b87();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void max_de6b87() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  max_de6b87();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_de6b87();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   max_de6b87();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_de6b87() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  max_de6b87();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_de6b87();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_de6b87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void max_de6b87() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  max_de6b87();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  max_de6b87();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  max_de6b87();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.glsl
index 7129d72..803b6ff 100644
--- a/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/e14f2b.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 max_e14f2b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = max_e14f2b();
+  v.tint_symbol = max_e14f2b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e14f2b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e14f2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 max_e14f2b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_e14f2b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_e14f2b();
+  v.tint_symbol = max_e14f2b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e14f2b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 max_e14f2b() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_e14f2b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e14f2b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_e14f2b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.glsl
index e2912c5..5e07ef5 100644
--- a/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/max/e8192f.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 max_e8192f() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = max_e8192f();
+  v.tint_symbol = max_e8192f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e8192f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e8192f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 max_e8192f() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
   ivec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_e8192f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = max_e8192f();
+  v.tint_symbol = max_e8192f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = max_e8192f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 max_e8192f() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
   ivec2 res = max(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = max_e8192f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = max_e8192f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = max_e8192f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.glsl
index 5254f463..daa17ba 100644
--- a/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/03c7e3.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 min_03c7e3() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_03c7e3();
+  v.tint_symbol = min_03c7e3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_03c7e3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_03c7e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 min_03c7e3() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
   ivec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_03c7e3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_03c7e3();
+  v.tint_symbol = min_03c7e3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_03c7e3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 min_03c7e3() {
   ivec2 arg_0 = ivec2(1);
   ivec2 arg_1 = ivec2(1);
   ivec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_03c7e3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_03c7e3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_03c7e3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.glsl
index de4a0ea..1b6ab5c 100644
--- a/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/0dc614.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
 uvec4 min_0dc614() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_0dc614();
+  v.tint_symbol = min_0dc614();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_0dc614();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_0dc614();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
 uvec4 min_0dc614() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
   uvec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_0dc614();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_0dc614();
+  v.tint_symbol = min_0dc614();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_0dc614();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 min_0dc614() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 arg_1 = uvec4(1u);
   uvec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_0dc614();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_0dc614();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_0dc614();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/364910.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/364910.wgsl.expected.ir.glsl
index 5ce11ee..4ebe553 100644
--- a/test/tint/builtins/gen/var/min/364910.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/364910.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_364910() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  min_364910();
+}
+#version 310 es
+
+void min_364910() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_364910();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_364910() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  min_364910();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_364910();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_364910();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_364910() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  min_364910();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_364910();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_364910();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_364910() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  min_364910();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_364910();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_364910();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.glsl
index 4d85edc..224b162 100644
--- a/test/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/371bd6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_371bd6() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  min_371bd6();
+}
+#version 310 es
+
+void min_371bd6() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_371bd6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_371bd6() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  min_371bd6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_371bd6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_371bd6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_371bd6() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  min_371bd6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_371bd6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_371bd6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_371bd6() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  min_371bd6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_371bd6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_371bd6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.glsl
index 08c5349..02c343e 100644
--- a/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/3941e1.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 min_3941e1() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_3941e1();
+  v.tint_symbol = min_3941e1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_3941e1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_3941e1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 min_3941e1() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
   ivec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_3941e1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_3941e1();
+  v.tint_symbol = min_3941e1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_3941e1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 min_3941e1() {
   ivec4 arg_0 = ivec4(1);
   ivec4 arg_1 = ivec4(1);
   ivec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_3941e1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_3941e1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_3941e1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.glsl
index fa46722..0c85967 100644
--- a/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/46c5d3.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint min_46c5d3() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_46c5d3();
+  v.tint_symbol = min_46c5d3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_46c5d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_46c5d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint min_46c5d3() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
   uint res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_46c5d3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_46c5d3();
+  v.tint_symbol = min_46c5d3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_46c5d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint min_46c5d3() {
   uint arg_0 = 1u;
   uint arg_1 = 1u;
   uint res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_46c5d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_46c5d3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_46c5d3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.glsl
index 8a7a715..9ba597d 100644
--- a/test/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/527b79.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_527b79() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  min_527b79();
+}
+#version 310 es
+
+void min_527b79() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_527b79();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_527b79() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  min_527b79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_527b79();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_527b79();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_527b79() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  min_527b79();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_527b79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_527b79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_527b79() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  min_527b79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_527b79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_527b79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/717257.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/717257.wgsl.expected.ir.glsl
index 104119c..c2eda73 100644
--- a/test/tint/builtins/gen/var/min/717257.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/717257.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_717257() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  min_717257();
+}
+#version 310 es
+
+void min_717257() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_717257();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_717257() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  min_717257();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_717257();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_717257();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_717257() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  min_717257();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_717257();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_717257();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_717257() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  min_717257();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_717257();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_717257();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/794711.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/794711.wgsl.expected.ir.glsl
index 2216cb1..693ed61 100644
--- a/test/tint/builtins/gen/var/min/794711.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/794711.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_794711() {
+  float res = 1.0f;
+}
+void main() {
+  min_794711();
+}
+#version 310 es
+
+void min_794711() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_794711();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_794711() {
   float res = 1.0f;
 }
-void main() {
-  min_794711();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_794711();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_794711();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_794711() {
-  float res = 1.0f;
-}
 void main() {
-  min_794711();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_794711();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_794711();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_794711() {
-  float res = 1.0f;
-}
-void main() {
-  min_794711();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_794711();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_794711();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.glsl
index e068550..3894d58 100644
--- a/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/7c710a.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 min_7c710a() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = min_7c710a();
+  v.tint_symbol = min_7c710a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_7c710a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_7c710a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 min_7c710a() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_7c710a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_7c710a();
+  v.tint_symbol = min_7c710a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_7c710a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 min_7c710a() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_7c710a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_7c710a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_7c710a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.glsl
index a0ec1a4..beaee87 100644
--- a/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/82b28f.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
 uvec2 min_82b28f() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_82b28f();
+  v.tint_symbol = min_82b28f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_82b28f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_82b28f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
 uvec2 min_82b28f() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
   uvec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_82b28f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_82b28f();
+  v.tint_symbol = min_82b28f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_82b28f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 min_82b28f() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 arg_1 = uvec2(1u);
   uvec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_82b28f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_82b28f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_82b28f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.glsl
index 9c75b9e..07110d8 100644
--- a/test/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/84c9fe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_84c9fe() {
+  int res = 1;
+}
+void main() {
+  min_84c9fe();
+}
+#version 310 es
+
+void min_84c9fe() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_84c9fe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_84c9fe() {
   int res = 1;
 }
-void main() {
-  min_84c9fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_84c9fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_84c9fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_84c9fe() {
-  int res = 1;
-}
 void main() {
-  min_84c9fe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_84c9fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_84c9fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_84c9fe() {
-  int res = 1;
-}
-void main() {
-  min_84c9fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_84c9fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_84c9fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.glsl
index 41c636a4..948953b 100644
--- a/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/93cfc4.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 min_93cfc4() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_93cfc4();
+  v.tint_symbol = min_93cfc4();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_93cfc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_93cfc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 min_93cfc4() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_93cfc4();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_93cfc4();
+  v.tint_symbol = min_93cfc4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_93cfc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 min_93cfc4() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_93cfc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_93cfc4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_93cfc4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.glsl
index dc3acec..1315ab7 100644
--- a/test/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/98e797.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_98e797() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  min_98e797();
+}
+#version 310 es
+
+void min_98e797() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_98e797();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_98e797() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  min_98e797();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_98e797();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_98e797();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_98e797() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  min_98e797();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_98e797();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_98e797();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_98e797() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  min_98e797();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_98e797();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_98e797();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.glsl
index 2ee3dc0..5b221d2 100644
--- a/test/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/a45171.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 min_a45171() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_a45171();
+  v.tint_symbol = min_a45171();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_a45171();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_a45171();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 min_a45171() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
   ivec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_a45171();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_a45171();
+  v.tint_symbol = min_a45171();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_a45171();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 min_a45171() {
   ivec3 arg_0 = ivec3(1);
   ivec3 arg_1 = ivec3(1);
   ivec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_a45171();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_a45171();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_a45171();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.glsl
index e4f10c3..b28a2df 100644
--- a/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/aa28ad.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 min_aa28ad() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_aa28ad();
+  v.tint_symbol = min_aa28ad();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_aa28ad();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_aa28ad();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 min_aa28ad() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_aa28ad();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_aa28ad();
+  v.tint_symbol = min_aa28ad();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_aa28ad();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 min_aa28ad() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_aa28ad();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_aa28ad();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_aa28ad();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.glsl
index 84c8c8c..d44f61f 100644
--- a/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/ab0acd.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 min_ab0acd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = min_ab0acd();
+  v.tint_symbol = min_ab0acd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ab0acd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ab0acd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 min_ab0acd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_ab0acd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_ab0acd();
+  v.tint_symbol = min_ab0acd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ab0acd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 min_ab0acd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_ab0acd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ab0acd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_ab0acd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.glsl
index 934ccff..e6e583f 100644
--- a/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/ac84d6.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t min_ac84d6() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = min_ac84d6();
+  v.tint_symbol = min_ac84d6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ac84d6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ac84d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t min_ac84d6() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_ac84d6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_ac84d6();
+  v.tint_symbol = min_ac84d6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_ac84d6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t min_ac84d6() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_ac84d6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_ac84d6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_ac84d6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.glsl
index eca15af..886f7c9 100644
--- a/test/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/af326d.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float min_af326d() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_af326d();
+  v.tint_symbol = min_af326d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_af326d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_af326d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float min_af326d() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_af326d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_af326d();
+  v.tint_symbol = min_af326d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_af326d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float min_af326d() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_af326d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_af326d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_af326d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.glsl
index 37c5a1c..6741953 100644
--- a/test/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/af364e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void min_af364e() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  min_af364e();
+}
+#version 310 es
+
+void min_af364e() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  min_af364e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void min_af364e() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  min_af364e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_af364e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   min_af364e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_af364e() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  min_af364e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_af364e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_af364e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void min_af364e() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  min_af364e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  min_af364e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  min_af364e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.glsl
index 15e4603..ceaa764 100644
--- a/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/c70bb7.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
 uvec3 min_c70bb7() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_c70bb7();
+  v.tint_symbol = min_c70bb7();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c70bb7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c70bb7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
 uvec3 min_c70bb7() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
   uvec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_c70bb7();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_c70bb7();
+  v.tint_symbol = min_c70bb7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c70bb7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 min_c70bb7() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 arg_1 = uvec3(1u);
   uvec3 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_c70bb7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c70bb7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_c70bb7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.glsl
index 5ecc0a0..dbfc3c6 100644
--- a/test/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/c73147.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int min_c73147() {
   int arg_0 = 1;
   int arg_1 = 1;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_c73147();
+  v.tint_symbol = min_c73147();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c73147();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c73147();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int min_c73147() {
   int arg_0 = 1;
   int arg_1 = 1;
   int res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_c73147();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_c73147();
+  v.tint_symbol = min_c73147();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c73147();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int min_c73147() {
   int arg_0 = 1;
   int arg_1 = 1;
   int res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_c73147();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c73147();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_c73147();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.glsl
index 8088fb3..7cb555f 100644
--- a/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/c76fa6.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 min_c76fa6() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = min_c76fa6();
+  v.tint_symbol = min_c76fa6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c76fa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c76fa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 min_c76fa6() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_c76fa6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_c76fa6();
+  v.tint_symbol = min_c76fa6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_c76fa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 min_c76fa6() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_c76fa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_c76fa6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_c76fa6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.glsl
index ff65aee..2f9b863 100644
--- a/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/min/e780f9.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 min_e780f9() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = min_e780f9();
+  v.tint_symbol = min_e780f9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_e780f9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_e780f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 min_e780f9() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_e780f9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = min_e780f9();
+  v.tint_symbol = min_e780f9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = min_e780f9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 min_e780f9() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = min(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = min_e780f9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = min_e780f9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = min_e780f9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.glsl
index 7418f56..b2b8720 100644
--- a/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/0c8c33.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 mix_0c8c33() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_0c8c33();
+  v.tint_symbol = mix_0c8c33();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_0c8c33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 mix_0c8c33() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -56,37 +30,18 @@
   vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_0c8c33();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_0c8c33();
+  v.tint_symbol = mix_0c8c33();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_0c8c33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 mix_0c8c33() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -94,25 +49,17 @@
   vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_0c8c33();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_0c8c33();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.glsl
index ea86a15..f422c32 100644
--- a/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/1faeb1.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 mix_1faeb1() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_1faeb1();
+  v.tint_symbol = mix_1faeb1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_1faeb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 mix_1faeb1() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -56,37 +30,18 @@
   vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_1faeb1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_1faeb1();
+  v.tint_symbol = mix_1faeb1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_1faeb1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 mix_1faeb1() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -94,25 +49,17 @@
   vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_1faeb1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_1faeb1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.glsl
index dddc3d2..3dbab02 100644
--- a/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/275cac.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_275cac() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  mix_275cac();
+}
+#version 310 es
+
+void mix_275cac() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_275cac();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_275cac() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  mix_275cac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_275cac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_275cac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_275cac() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  mix_275cac();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_275cac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_275cac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_275cac() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  mix_275cac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_275cac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_275cac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.glsl
index 683514d..2801832 100644
--- a/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/2fadab.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 mix_2fadab() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_2fadab();
+  v.tint_symbol = mix_2fadab();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_2fadab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_2fadab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 mix_2fadab() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -56,37 +30,18 @@
   vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_2fadab();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_2fadab();
+  v.tint_symbol = mix_2fadab();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_2fadab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 mix_2fadab() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -94,25 +49,17 @@
   vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_2fadab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_2fadab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_2fadab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.glsl
index 513d87e..7dac4f6 100644
--- a/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/30de36.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_30de36() {
+  float res = 1.0f;
+}
+void main() {
+  mix_30de36();
+}
+#version 310 es
+
+void mix_30de36() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_30de36();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_30de36() {
   float res = 1.0f;
 }
-void main() {
-  mix_30de36();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_30de36();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_30de36();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_30de36() {
-  float res = 1.0f;
-}
 void main() {
-  mix_30de36();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_30de36();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_30de36();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_30de36() {
-  float res = 1.0f;
-}
-void main() {
-  mix_30de36();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_30de36();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_30de36();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.glsl
index adef17b..c825d26 100644
--- a/test/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/315264.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 mix_315264() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_315264();
+  v.tint_symbol = mix_315264();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_315264();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_315264();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 mix_315264() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -56,37 +30,18 @@
   vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_315264();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_315264();
+  v.tint_symbol = mix_315264();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_315264();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 mix_315264() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -94,25 +49,17 @@
   vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_315264();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_315264();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_315264();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.glsl
index 99adf35..48e6b52 100644
--- a/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/343c49.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_343c49() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  mix_343c49();
+}
+#version 310 es
+
+void mix_343c49() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_343c49();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_343c49() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  mix_343c49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_343c49();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_343c49();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_343c49() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  mix_343c49();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_343c49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_343c49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_343c49() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  mix_343c49();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_343c49();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_343c49();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.glsl
index f000ea0..6cb71d7 100644
--- a/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/38cbbb.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t mix_38cbbb() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_38cbbb();
+  v.tint_symbol = mix_38cbbb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_38cbbb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_38cbbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t mix_38cbbb() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -58,38 +32,19 @@
   float16_t res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_38cbbb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_38cbbb();
+  v.tint_symbol = mix_38cbbb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_38cbbb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t mix_38cbbb() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -97,25 +52,17 @@
   float16_t res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_38cbbb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_38cbbb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_38cbbb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.glsl
index eec2aad..9271c0a 100644
--- a/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/42d11d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_42d11d() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  mix_42d11d();
+}
+#version 310 es
+
+void mix_42d11d() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_42d11d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_42d11d() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  mix_42d11d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_42d11d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_42d11d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_42d11d() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  mix_42d11d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_42d11d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_42d11d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_42d11d() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  mix_42d11d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_42d11d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_42d11d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.glsl
index 14b255f..048753b 100644
--- a/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/4f0b5e.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float mix_4f0b5e() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_4f0b5e();
+  v.tint_symbol = mix_4f0b5e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_4f0b5e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float mix_4f0b5e() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -56,37 +30,18 @@
   float res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_4f0b5e();
+  v.tint_symbol = mix_4f0b5e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_4f0b5e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float mix_4f0b5e() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -94,25 +49,17 @@
   float res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_4f0b5e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_4f0b5e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.glsl
index 3a6a9bf..2f907f4 100644
--- a/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/63f2fd.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_63f2fd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_63f2fd();
+  v.tint_symbol = mix_63f2fd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_63f2fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_63f2fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_63f2fd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -58,38 +32,19 @@
   f16vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_63f2fd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_63f2fd();
+  v.tint_symbol = mix_63f2fd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_63f2fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 mix_63f2fd() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -97,25 +52,17 @@
   f16vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_63f2fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_63f2fd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_63f2fd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.glsl
index de6c283..05cdf81 100644
--- a/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/6f8adc.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 mix_6f8adc() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_6f8adc();
+  v.tint_symbol = mix_6f8adc();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_6f8adc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 mix_6f8adc() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -56,37 +30,18 @@
   vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_6f8adc();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_6f8adc();
+  v.tint_symbol = mix_6f8adc();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_6f8adc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 mix_6f8adc() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -94,25 +49,17 @@
   vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_6f8adc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_6f8adc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.glsl
index 1642920..b1788ae 100644
--- a/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/98007a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_98007a() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  mix_98007a();
+}
+#version 310 es
+
+void mix_98007a() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_98007a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_98007a() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  mix_98007a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_98007a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_98007a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_98007a() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  mix_98007a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_98007a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_98007a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_98007a() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  mix_98007a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_98007a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_98007a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.glsl
index 9b0882e..c62d747 100644
--- a/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/98ee3e.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_98ee3e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_98ee3e();
+  v.tint_symbol = mix_98ee3e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_98ee3e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_98ee3e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_98ee3e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -58,38 +32,19 @@
   f16vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_98ee3e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_98ee3e();
+  v.tint_symbol = mix_98ee3e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_98ee3e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 mix_98ee3e() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -97,25 +52,17 @@
   f16vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_98ee3e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_98ee3e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_98ee3e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.glsl
index 8bf82d2..d9da496 100644
--- a/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/9c2681.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_9c2681() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  mix_9c2681();
+}
+#version 310 es
+
+void mix_9c2681() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_9c2681();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_9c2681() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  mix_9c2681();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_9c2681();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_9c2681();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_9c2681() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  mix_9c2681();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_9c2681();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_9c2681();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_9c2681() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  mix_9c2681();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_9c2681();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_9c2681();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.glsl
index 5ef4ef0..d3912a5 100644
--- a/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/c1aec6.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_c1aec6() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_c1aec6();
+  v.tint_symbol = mix_c1aec6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c1aec6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c1aec6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 mix_c1aec6() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -58,38 +32,19 @@
   f16vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_c1aec6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_c1aec6();
+  v.tint_symbol = mix_c1aec6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c1aec6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 mix_c1aec6() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -97,25 +52,17 @@
   f16vec3 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_c1aec6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c1aec6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_c1aec6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.glsl
index 1321113..bcf0f30 100644
--- a/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/c37ede.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 mix_c37ede() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_c37ede();
+  v.tint_symbol = mix_c37ede();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c37ede();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c37ede();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 mix_c37ede() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -56,37 +30,18 @@
   vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_c37ede();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_c37ede();
+  v.tint_symbol = mix_c37ede();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_c37ede();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 mix_c37ede() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -94,25 +49,17 @@
   vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_c37ede();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_c37ede();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_c37ede();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.glsl
index f6bd95b..f4846c5 100644
--- a/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/e46a83.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_e46a83() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_e46a83();
+  v.tint_symbol = mix_e46a83();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_e46a83();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_e46a83();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 mix_e46a83() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -58,38 +32,19 @@
   f16vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_e46a83();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_e46a83();
+  v.tint_symbol = mix_e46a83();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_e46a83();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 mix_e46a83() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -97,25 +52,17 @@
   f16vec2 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_e46a83();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_e46a83();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_e46a83();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.glsl
index d3eac74..90df50d 100644
--- a/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/ee2468.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_ee2468() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_ee2468();
+  v.tint_symbol = mix_ee2468();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_ee2468();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_ee2468();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_ee2468() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -58,38 +32,19 @@
   f16vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_ee2468();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_ee2468();
+  v.tint_symbol = mix_ee2468();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_ee2468();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 mix_ee2468() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -97,25 +52,17 @@
   f16vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_ee2468();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_ee2468();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_ee2468();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.glsl
index 985e57a..efdf84d 100644
--- a/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/ef3575.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void mix_ef3575() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  mix_ef3575();
+}
+#version 310 es
+
+void mix_ef3575() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  mix_ef3575();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void mix_ef3575() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  mix_ef3575();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_ef3575();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   mix_ef3575();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_ef3575() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  mix_ef3575();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_ef3575();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_ef3575();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void mix_ef3575() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  mix_ef3575();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  mix_ef3575();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  mix_ef3575();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.glsl
index 19aab6c..2e2b62e 100644
--- a/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/mix/f1a543.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_f1a543() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = mix_f1a543();
+  v.tint_symbol = mix_f1a543();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_f1a543();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_f1a543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 mix_f1a543() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -58,38 +32,19 @@
   f16vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_f1a543();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = mix_f1a543();
+  v.tint_symbol = mix_f1a543();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = mix_f1a543();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 mix_f1a543() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -97,25 +52,17 @@
   f16vec4 res = mix(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = mix_f1a543();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = mix_f1a543();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = mix_f1a543();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.glsl
index 374f2b0..65c1989 100644
--- a/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/39d5ec.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 normalize_39d5ec() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = normalize(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = normalize_39d5ec();
+  v.tint_symbol = normalize_39d5ec();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_39d5ec();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 normalize_39d5ec() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_39d5ec();
+  v.tint_symbol = normalize_39d5ec();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_39d5ec();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 normalize_39d5ec() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_39d5ec();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_39d5ec();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.glsl
index 52a7f07..48bdfa7 100644
--- a/test/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/4eaf61.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void normalize_4eaf61() {
+  vec4 res = vec4(0.5f);
+}
+void main() {
+  normalize_4eaf61();
+}
+#version 310 es
+
+void normalize_4eaf61() {
+  vec4 res = vec4(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  normalize_4eaf61();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void normalize_4eaf61() {
   vec4 res = vec4(0.5f);
 }
-void main() {
-  normalize_4eaf61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_4eaf61();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   normalize_4eaf61();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_4eaf61() {
-  vec4 res = vec4(0.5f);
-}
 void main() {
-  normalize_4eaf61();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_4eaf61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_4eaf61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_4eaf61() {
-  vec4 res = vec4(0.5f);
-}
-void main() {
-  normalize_4eaf61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_4eaf61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_4eaf61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.glsl
index bdb8ab3..a1b69d6 100644
--- a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void normalize_584e47() {
+  vec2 res = vec2(0.70710676908493041992f);
+}
+void main() {
+  normalize_584e47();
+}
+#version 310 es
+
+void normalize_584e47() {
+  vec2 res = vec2(0.70710676908493041992f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  normalize_584e47();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void normalize_584e47() {
   vec2 res = vec2(0.70710676908493041992f);
 }
-void main() {
-  normalize_584e47();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_584e47();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   normalize_584e47();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_584e47() {
-  vec2 res = vec2(0.70710676908493041992f);
-}
 void main() {
-  normalize_584e47();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_584e47();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_584e47();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_584e47() {
-  vec2 res = vec2(0.70710676908493041992f);
-}
-void main() {
-  normalize_584e47();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_584e47();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_584e47();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.glsl
index 037cbf1f..9a664f4 100644
--- a/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/64d8c0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 normalize_64d8c0() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = normalize(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = normalize_64d8c0();
+  v.tint_symbol = normalize_64d8c0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 normalize_64d8c0() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = normalize(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_64d8c0();
+  v.tint_symbol = normalize_64d8c0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_64d8c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 normalize_64d8c0() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_64d8c0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 normalize_64d8c0() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = normalize(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = normalize_64d8c0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_64d8c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_64d8c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.glsl
index 6a3a0da..4cdcb2f 100644
--- a/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/7990f3.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 normalize_7990f3() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = normalize(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = normalize_7990f3();
+  v.tint_symbol = normalize_7990f3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_7990f3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_7990f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 normalize_7990f3() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_7990f3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_7990f3();
+  v.tint_symbol = normalize_7990f3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_7990f3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 normalize_7990f3() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_7990f3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_7990f3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_7990f3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.glsl
index 68e46ec..a54b072 100644
--- a/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/9a0aab.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 normalize_9a0aab() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = normalize(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = normalize_9a0aab();
+  v.tint_symbol = normalize_9a0aab();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 normalize_9a0aab() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = normalize(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_9a0aab();
+  v.tint_symbol = normalize_9a0aab();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_9a0aab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 normalize_9a0aab() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_9a0aab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 normalize_9a0aab() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = normalize(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = normalize_9a0aab();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_9a0aab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_9a0aab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.glsl
index 15e956e..4907b81 100644
--- a/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/b8cb8d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 normalize_b8cb8d() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = normalize(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = normalize_b8cb8d();
+  v.tint_symbol = normalize_b8cb8d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_b8cb8d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 normalize_b8cb8d() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_b8cb8d();
+  v.tint_symbol = normalize_b8cb8d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_b8cb8d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 normalize_b8cb8d() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_b8cb8d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_b8cb8d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.glsl
index 266890f..dd40dc6 100644
--- a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void normalize_e7def8() {
+  vec3 res = vec3(0.57735025882720947266f);
+}
+void main() {
+  normalize_e7def8();
+}
+#version 310 es
+
+void normalize_e7def8() {
+  vec3 res = vec3(0.57735025882720947266f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  normalize_e7def8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void normalize_e7def8() {
   vec3 res = vec3(0.57735025882720947266f);
 }
-void main() {
-  normalize_e7def8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_e7def8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   normalize_e7def8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_e7def8() {
-  vec3 res = vec3(0.57735025882720947266f);
-}
 void main() {
-  normalize_e7def8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_e7def8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_e7def8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void normalize_e7def8() {
-  vec3 res = vec3(0.57735025882720947266f);
-}
-void main() {
-  normalize_e7def8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  normalize_e7def8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  normalize_e7def8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.glsl
index 63827cb..ddc5507 100644
--- a/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/normalize/fc2ef1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 normalize_fc2ef1() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = normalize(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = normalize_fc2ef1();
+  v.tint_symbol = normalize_fc2ef1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 normalize_fc2ef1() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = normalize(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = normalize_fc2ef1();
+  v.tint_symbol = normalize_fc2ef1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_fc2ef1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 normalize_fc2ef1() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = normalize(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = normalize_fc2ef1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 normalize_fc2ef1() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = normalize(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = normalize_fc2ef1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = normalize_fc2ef1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = normalize_fc2ef1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.glsl
index 6b2e3e3..e722739 100644
--- a/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pack2x16float/0e97b3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint pack2x16float_0e97b3() {
   vec2 arg_0 = vec2(1.0f);
   uint res = packHalf2x16(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = pack2x16float_0e97b3();
+  v.tint_symbol = pack2x16float_0e97b3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16float_0e97b3() {
+  vec2 arg_0 = vec2(1.0f);
+  uint res = packHalf2x16(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pack2x16float_0e97b3();
+  v.tint_symbol = pack2x16float_0e97b3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16float_0e97b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack2x16float_0e97b3() {
   vec2 arg_0 = vec2(1.0f);
   uint res = packHalf2x16(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack2x16float_0e97b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16float_0e97b3() {
-  vec2 arg_0 = vec2(1.0f);
-  uint res = packHalf2x16(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = pack2x16float_0e97b3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16float_0e97b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16float_0e97b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.glsl
index 97a3704..222ca0d 100644
--- a/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pack2x16snorm/6c169b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint pack2x16snorm_6c169b() {
   vec2 arg_0 = vec2(1.0f);
   uint res = packSnorm2x16(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = pack2x16snorm_6c169b();
+  v.tint_symbol = pack2x16snorm_6c169b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16snorm_6c169b() {
+  vec2 arg_0 = vec2(1.0f);
+  uint res = packSnorm2x16(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pack2x16snorm_6c169b();
+  v.tint_symbol = pack2x16snorm_6c169b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16snorm_6c169b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack2x16snorm_6c169b() {
   vec2 arg_0 = vec2(1.0f);
   uint res = packSnorm2x16(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack2x16snorm_6c169b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16snorm_6c169b() {
-  vec2 arg_0 = vec2(1.0f);
-  uint res = packSnorm2x16(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = pack2x16snorm_6c169b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16snorm_6c169b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16snorm_6c169b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl
index fe81bea..32f20b0 100644
--- a/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pack2x16unorm/0f08e4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint pack2x16unorm_0f08e4() {
   vec2 arg_0 = vec2(1.0f);
   uint res = packUnorm2x16(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
+  v.tint_symbol = pack2x16unorm_0f08e4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack2x16unorm_0f08e4() {
+  vec2 arg_0 = vec2(1.0f);
+  uint res = packUnorm2x16(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
+  v.tint_symbol = pack2x16unorm_0f08e4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16unorm_0f08e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack2x16unorm_0f08e4() {
   vec2 arg_0 = vec2(1.0f);
   uint res = packUnorm2x16(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack2x16unorm_0f08e4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack2x16unorm_0f08e4() {
-  vec2 arg_0 = vec2(1.0f);
-  uint res = packUnorm2x16(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack2x16unorm_0f08e4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack2x16unorm_0f08e4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl
index 101b0ab..b6d7fde 100644
--- a/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pack4x8snorm/4d22e7.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint pack4x8snorm_4d22e7() {
   vec4 arg_0 = vec4(1.0f);
   uint res = packSnorm4x8(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
+  v.tint_symbol = pack4x8snorm_4d22e7();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4x8snorm_4d22e7() {
+  vec4 arg_0 = vec4(1.0f);
+  uint res = packSnorm4x8(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
+  v.tint_symbol = pack4x8snorm_4d22e7();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8snorm_4d22e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4x8snorm_4d22e7() {
   vec4 arg_0 = vec4(1.0f);
   uint res = packSnorm4x8(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4x8snorm_4d22e7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4x8snorm_4d22e7() {
-  vec4 arg_0 = vec4(1.0f);
-  uint res = packSnorm4x8(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8snorm_4d22e7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8snorm_4d22e7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.glsl
index fb4a05d..0e96c2d 100644
--- a/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pack4x8unorm/95c456.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint pack4x8unorm_95c456() {
   vec4 arg_0 = vec4(1.0f);
   uint res = packUnorm4x8(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = pack4x8unorm_95c456();
+  v.tint_symbol = pack4x8unorm_95c456();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint pack4x8unorm_95c456() {
+  vec4 arg_0 = vec4(1.0f);
+  uint res = packUnorm4x8(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pack4x8unorm_95c456();
+  v.tint_symbol = pack4x8unorm_95c456();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8unorm_95c456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint pack4x8unorm_95c456() {
   vec4 arg_0 = vec4(1.0f);
   uint res = packUnorm4x8(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pack4x8unorm_95c456();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint pack4x8unorm_95c456() {
-  vec4 arg_0 = vec4(1.0f);
-  uint res = packUnorm4x8(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = pack4x8unorm_95c456();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pack4x8unorm_95c456();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pack4x8unorm_95c456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.glsl
index 511c207..77fa9d1 100644
--- a/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/04a908.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 pow_04a908() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_04a908();
+  v.tint_symbol = pow_04a908();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_04a908();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_04a908();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 pow_04a908() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_04a908();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_04a908();
+  v.tint_symbol = pow_04a908();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_04a908();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 pow_04a908() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_04a908();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_04a908();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_04a908();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.glsl
index 294d547..0020779 100644
--- a/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/46e029.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float pow_46e029() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_46e029();
+  v.tint_symbol = pow_46e029();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_46e029();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_46e029();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float pow_46e029() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_46e029();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_46e029();
+  v.tint_symbol = pow_46e029();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_46e029();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float pow_46e029() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_46e029();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_46e029();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_46e029();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.glsl
index 509b24d..b9e551d 100644
--- a/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/4a46c9.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 pow_4a46c9() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_4a46c9();
+  v.tint_symbol = pow_4a46c9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4a46c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 pow_4a46c9() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_4a46c9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_4a46c9();
+  v.tint_symbol = pow_4a46c9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4a46c9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 pow_4a46c9() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4a46c9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_4a46c9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.glsl
index 884f400..84a6d6a 100644
--- a/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/4f33b2.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 pow_4f33b2() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_4f33b2();
+  v.tint_symbol = pow_4f33b2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4f33b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4f33b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 pow_4f33b2() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_4f33b2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_4f33b2();
+  v.tint_symbol = pow_4f33b2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_4f33b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 pow_4f33b2() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_4f33b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_4f33b2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_4f33b2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.glsl
index 0d72c36..f6d27e3 100644
--- a/test/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/749c42.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_749c42() {
+  float res = 1.0f;
+}
+void main() {
+  pow_749c42();
+}
+#version 310 es
+
+void pow_749c42() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_749c42();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_749c42() {
   float res = 1.0f;
 }
-void main() {
-  pow_749c42();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_749c42();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_749c42();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_749c42() {
-  float res = 1.0f;
-}
 void main() {
-  pow_749c42();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_749c42();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_749c42();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_749c42() {
-  float res = 1.0f;
-}
-void main() {
-  pow_749c42();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_749c42();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_749c42();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.glsl
index b5a7031..9925ae0 100644
--- a/test/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/a8f6b2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_a8f6b2() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  pow_a8f6b2();
+}
+#version 310 es
+
+void pow_a8f6b2() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_a8f6b2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_a8f6b2() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  pow_a8f6b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_a8f6b2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_a8f6b2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_a8f6b2() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  pow_a8f6b2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_a8f6b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_a8f6b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_a8f6b2() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  pow_a8f6b2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_a8f6b2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_a8f6b2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.glsl
index 97e97ba..be50c67 100644
--- a/test/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/bc91ed.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_bc91ed() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  pow_bc91ed();
+}
+#version 310 es
+
+void pow_bc91ed() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_bc91ed();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_bc91ed() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  pow_bc91ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_bc91ed();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_bc91ed();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_bc91ed() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  pow_bc91ed();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_bc91ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_bc91ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_bc91ed() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  pow_bc91ed();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_bc91ed();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_bc91ed();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.glsl
index 077f060..8afa49c 100644
--- a/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/ce9ef5.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t pow_ce9ef5() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_ce9ef5();
+  v.tint_symbol = pow_ce9ef5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_ce9ef5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t pow_ce9ef5() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_ce9ef5();
+  v.tint_symbol = pow_ce9ef5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_ce9ef5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t pow_ce9ef5() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_ce9ef5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_ce9ef5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.glsl
index b40c04f..f42f266 100644
--- a/test/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/e42f20.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void pow_e42f20() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  pow_e42f20();
+}
+#version 310 es
+
+void pow_e42f20() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  pow_e42f20();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void pow_e42f20() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  pow_e42f20();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_e42f20();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   pow_e42f20();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_e42f20() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  pow_e42f20();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_e42f20();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_e42f20();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void pow_e42f20() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  pow_e42f20();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  pow_e42f20();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  pow_e42f20();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.glsl
index 2560b52..0bd0524 100644
--- a/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/e60ea5.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 pow_e60ea5() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_e60ea5();
+  v.tint_symbol = pow_e60ea5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_e60ea5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 pow_e60ea5() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_e60ea5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_e60ea5();
+  v.tint_symbol = pow_e60ea5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_e60ea5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 pow_e60ea5() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_e60ea5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_e60ea5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.glsl
index 303f6d5..d519cb1 100644
--- a/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/f37b25.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 pow_f37b25() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_f37b25();
+  v.tint_symbol = pow_f37b25();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_f37b25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_f37b25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 pow_f37b25() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_f37b25();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_f37b25();
+  v.tint_symbol = pow_f37b25();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_f37b25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 pow_f37b25() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_f37b25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_f37b25();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_f37b25();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.glsl
index bc02056..a25c22d 100644
--- a/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/pow/fa5429.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 pow_fa5429() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = pow_fa5429();
+  v.tint_symbol = pow_fa5429();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_fa5429();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_fa5429();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 pow_fa5429() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_fa5429();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = pow_fa5429();
+  v.tint_symbol = pow_fa5429();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = pow_fa5429();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 pow_fa5429() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = pow(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = pow_fa5429();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = pow_fa5429();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = pow_fa5429();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.glsl
index c0d64ad..4b8ff37 100644
--- a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_379214() {
+  vec3 res = vec3(0.01745329238474369049f);
+}
+void main() {
+  radians_379214();
+}
+#version 310 es
+
+void radians_379214() {
+  vec3 res = vec3(0.01745329238474369049f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_379214();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_379214() {
   vec3 res = vec3(0.01745329238474369049f);
 }
-void main() {
-  radians_379214();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_379214();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_379214();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_379214() {
-  vec3 res = vec3(0.01745329238474369049f);
-}
 void main() {
-  radians_379214();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_379214();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_379214();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_379214() {
-  vec3 res = vec3(0.01745329238474369049f);
-}
-void main() {
-  radians_379214();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_379214();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_379214();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.glsl
index 54bfe1a..538e53b 100644
--- a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_44a9f8() {
+  vec2 res = vec2(0.01745329238474369049f);
+}
+void main() {
+  radians_44a9f8();
+}
+#version 310 es
+
+void radians_44a9f8() {
+  vec2 res = vec2(0.01745329238474369049f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_44a9f8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_44a9f8() {
   vec2 res = vec2(0.01745329238474369049f);
 }
-void main() {
-  radians_44a9f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_44a9f8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_44a9f8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_44a9f8() {
-  vec2 res = vec2(0.01745329238474369049f);
-}
 void main() {
-  radians_44a9f8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_44a9f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_44a9f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_44a9f8() {
-  vec2 res = vec2(0.01745329238474369049f);
-}
-void main() {
-  radians_44a9f8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_44a9f8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_44a9f8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.glsl
index 87dba94..ded3a9f 100644
--- a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_524a91() {
+  vec4 res = vec4(0.01745329238474369049f);
+}
+void main() {
+  radians_524a91();
+}
+#version 310 es
+
+void radians_524a91() {
+  vec4 res = vec4(0.01745329238474369049f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_524a91();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_524a91() {
   vec4 res = vec4(0.01745329238474369049f);
 }
-void main() {
-  radians_524a91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_524a91();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_524a91();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_524a91() {
-  vec4 res = vec4(0.01745329238474369049f);
-}
 void main() {
-  radians_524a91();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_524a91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_524a91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_524a91() {
-  vec4 res = vec4(0.01745329238474369049f);
-}
-void main() {
-  radians_524a91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_524a91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_524a91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.glsl
index 10a9078..53b2a1d 100644
--- a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void radians_bff231() {
+  float res = 0.01745329238474369049f;
+}
+void main() {
+  radians_bff231();
+}
+#version 310 es
+
+void radians_bff231() {
+  float res = 0.01745329238474369049f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  radians_bff231();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void radians_bff231() {
   float res = 0.01745329238474369049f;
 }
-void main() {
-  radians_bff231();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_bff231();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   radians_bff231();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_bff231() {
-  float res = 0.01745329238474369049f;
-}
 void main() {
-  radians_bff231();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_bff231();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_bff231();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void radians_bff231() {
-  float res = 0.01745329238474369049f;
-}
-void main() {
-  radians_bff231();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  radians_bff231();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  radians_bff231();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.glsl
index 15c3a56..83cc784 100644
--- a/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/05357e.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 reflect_05357e() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = reflect_05357e();
+  v.tint_symbol = reflect_05357e();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_05357e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_05357e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 reflect_05357e() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_05357e();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_05357e();
+  v.tint_symbol = reflect_05357e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_05357e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 reflect_05357e() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_05357e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_05357e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_05357e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.glsl
index df709f8..1a534e6 100644
--- a/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/310de5.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 reflect_310de5() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = reflect_310de5();
+  v.tint_symbol = reflect_310de5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_310de5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_310de5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 reflect_310de5() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_310de5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_310de5();
+  v.tint_symbol = reflect_310de5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_310de5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 reflect_310de5() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_310de5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_310de5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_310de5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.glsl
index 5367740..14181f6 100644
--- a/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/61ca21.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 reflect_61ca21() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = reflect_61ca21();
+  v.tint_symbol = reflect_61ca21();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_61ca21();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_61ca21();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 reflect_61ca21() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_61ca21();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_61ca21();
+  v.tint_symbol = reflect_61ca21();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_61ca21();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 reflect_61ca21() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_61ca21();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_61ca21();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_61ca21();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.glsl
index db05061..bf24603 100644
--- a/test/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/a8baf2.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void reflect_a8baf2() {
+  vec3 res = vec3(-5.0f);
+}
+void main() {
+  reflect_a8baf2();
+}
+#version 310 es
+
+void reflect_a8baf2() {
+  vec3 res = vec3(-5.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  reflect_a8baf2();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void reflect_a8baf2() {
   vec3 res = vec3(-5.0f);
 }
-void main() {
-  reflect_a8baf2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_a8baf2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   reflect_a8baf2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_a8baf2() {
-  vec3 res = vec3(-5.0f);
-}
 void main() {
-  reflect_a8baf2();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_a8baf2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_a8baf2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_a8baf2() {
-  vec3 res = vec3(-5.0f);
-}
-void main() {
-  reflect_a8baf2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_a8baf2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_a8baf2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.glsl
index b5fb10b..1f41dba 100644
--- a/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/b61e10.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 reflect_b61e10() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = reflect_b61e10();
+  v.tint_symbol = reflect_b61e10();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_b61e10();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 reflect_b61e10() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_b61e10();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_b61e10();
+  v.tint_symbol = reflect_b61e10();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_b61e10();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 reflect_b61e10() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_b61e10();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_b61e10();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.glsl
index 32da0da..c5025c2 100644
--- a/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/bb15ac.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 reflect_bb15ac() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = reflect_bb15ac();
+  v.tint_symbol = reflect_bb15ac();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_bb15ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 reflect_bb15ac() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_bb15ac();
+  v.tint_symbol = reflect_bb15ac();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_bb15ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 reflect_bb15ac() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_bb15ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_bb15ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.glsl
index bd6e012..d28b1a7 100644
--- a/test/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/bba2d0.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void reflect_bba2d0() {
+  vec2 res = vec2(-3.0f);
+}
+void main() {
+  reflect_bba2d0();
+}
+#version 310 es
+
+void reflect_bba2d0() {
+  vec2 res = vec2(-3.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  reflect_bba2d0();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void reflect_bba2d0() {
   vec2 res = vec2(-3.0f);
 }
-void main() {
-  reflect_bba2d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_bba2d0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   reflect_bba2d0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_bba2d0() {
-  vec2 res = vec2(-3.0f);
-}
 void main() {
-  reflect_bba2d0();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_bba2d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_bba2d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_bba2d0() {
-  vec2 res = vec2(-3.0f);
-}
-void main() {
-  reflect_bba2d0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_bba2d0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_bba2d0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.glsl
index 599552f..252e52f 100644
--- a/test/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/d7e210.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void reflect_d7e210() {
+  vec4 res = vec4(-7.0f);
+}
+void main() {
+  reflect_d7e210();
+}
+#version 310 es
+
+void reflect_d7e210() {
+  vec4 res = vec4(-7.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  reflect_d7e210();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void reflect_d7e210() {
   vec4 res = vec4(-7.0f);
 }
-void main() {
-  reflect_d7e210();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_d7e210();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   reflect_d7e210();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_d7e210() {
-  vec4 res = vec4(-7.0f);
-}
 void main() {
-  reflect_d7e210();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_d7e210();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_d7e210();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void reflect_d7e210() {
-  vec4 res = vec4(-7.0f);
-}
-void main() {
-  reflect_d7e210();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  reflect_d7e210();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  reflect_d7e210();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.glsl
index f3a74f3..b30d292 100644
--- a/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reflect/f47fdb.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 reflect_f47fdb() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = reflect_f47fdb();
+  v.tint_symbol = reflect_f47fdb();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_f47fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 reflect_f47fdb() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reflect_f47fdb();
+  v.tint_symbol = reflect_f47fdb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reflect_f47fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 reflect_f47fdb() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = reflect(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reflect_f47fdb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reflect_f47fdb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.glsl
index bc4723a..974473a 100644
--- a/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/0594ba.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 refract_0594ba() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = refract_0594ba();
+  v.tint_symbol = refract_0594ba();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_0594ba();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_0594ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 refract_0594ba() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -58,38 +32,19 @@
   f16vec4 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_0594ba();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_0594ba();
+  v.tint_symbol = refract_0594ba();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_0594ba();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 refract_0594ba() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -97,25 +52,17 @@
   f16vec4 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_0594ba();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_0594ba();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_0594ba();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.glsl
index 09c30d6..58acb18 100644
--- a/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/570cb3.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 refract_570cb3() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = refract_570cb3();
+  v.tint_symbol = refract_570cb3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_570cb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_570cb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 refract_570cb3() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -58,38 +32,19 @@
   f16vec2 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_570cb3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_570cb3();
+  v.tint_symbol = refract_570cb3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_570cb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 refract_570cb3() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -97,25 +52,17 @@
   f16vec2 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_570cb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_570cb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_570cb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.glsl
index c19c365..fd915c4 100644
--- a/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/7e02e6.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 refract_7e02e6() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = refract_7e02e6();
+  v.tint_symbol = refract_7e02e6();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_7e02e6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 refract_7e02e6() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -56,37 +30,18 @@
   vec4 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_7e02e6();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_7e02e6();
+  v.tint_symbol = refract_7e02e6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_7e02e6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 refract_7e02e6() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -94,25 +49,17 @@
   vec4 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_7e02e6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_7e02e6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.glsl
index cbb5d4b..0065199 100644
--- a/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/8984af.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 refract_8984af() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = refract_8984af();
+  v.tint_symbol = refract_8984af();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_8984af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_8984af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 refract_8984af() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -58,38 +32,19 @@
   f16vec3 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_8984af();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_8984af();
+  v.tint_symbol = refract_8984af();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_8984af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 refract_8984af() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -97,25 +52,17 @@
   f16vec3 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_8984af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_8984af();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_8984af();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.glsl
index 41dd891..cd5d173 100644
--- a/test/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/8c192a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void refract_8c192a() {
+  vec4 res = vec4(-7.0f);
+}
+void main() {
+  refract_8c192a();
+}
+#version 310 es
+
+void refract_8c192a() {
+  vec4 res = vec4(-7.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  refract_8c192a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void refract_8c192a() {
   vec4 res = vec4(-7.0f);
 }
-void main() {
-  refract_8c192a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_8c192a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   refract_8c192a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_8c192a() {
-  vec4 res = vec4(-7.0f);
-}
 void main() {
-  refract_8c192a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_8c192a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_8c192a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_8c192a() {
-  vec4 res = vec4(-7.0f);
-}
-void main() {
-  refract_8c192a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_8c192a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_8c192a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.glsl
index 1d66552..0e0025e 100644
--- a/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/cbc1d2.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 refract_cbc1d2() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = refract_cbc1d2();
+  v.tint_symbol = refract_cbc1d2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cbc1d2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 refract_cbc1d2() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -56,37 +30,18 @@
   vec3 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_cbc1d2();
+  v.tint_symbol = refract_cbc1d2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cbc1d2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 refract_cbc1d2() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -94,25 +49,17 @@
   vec3 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cbc1d2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_cbc1d2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.glsl
index e62aa1c..2554c5b 100644
--- a/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/cd905f.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 refract_cd905f() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = refract_cd905f();
+  v.tint_symbol = refract_cd905f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cd905f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cd905f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 refract_cd905f() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -56,37 +30,18 @@
   vec2 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_cd905f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = refract_cd905f();
+  v.tint_symbol = refract_cd905f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = refract_cd905f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 refract_cd905f() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -94,25 +49,17 @@
   vec2 res = refract(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = refract_cd905f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = refract_cd905f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = refract_cd905f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.glsl
index 62189d7..7c09c6c 100644
--- a/test/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/cf1629.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void refract_cf1629() {
+  vec2 res = vec2(-3.0f);
+}
+void main() {
+  refract_cf1629();
+}
+#version 310 es
+
+void refract_cf1629() {
+  vec2 res = vec2(-3.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  refract_cf1629();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void refract_cf1629() {
   vec2 res = vec2(-3.0f);
 }
-void main() {
-  refract_cf1629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_cf1629();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   refract_cf1629();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_cf1629() {
-  vec2 res = vec2(-3.0f);
-}
 void main() {
-  refract_cf1629();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_cf1629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_cf1629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_cf1629() {
-  vec2 res = vec2(-3.0f);
-}
-void main() {
-  refract_cf1629();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_cf1629();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_cf1629();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.glsl
index 02a7c4b..d96b8c9 100644
--- a/test/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/refract/d7569b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void refract_d7569b() {
+  vec3 res = vec3(-5.0f);
+}
+void main() {
+  refract_d7569b();
+}
+#version 310 es
+
+void refract_d7569b() {
+  vec3 res = vec3(-5.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  refract_d7569b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void refract_d7569b() {
   vec3 res = vec3(-5.0f);
 }
-void main() {
-  refract_d7569b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_d7569b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   refract_d7569b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_d7569b() {
-  vec3 res = vec3(-5.0f);
-}
 void main() {
-  refract_d7569b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_d7569b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_d7569b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void refract_d7569b() {
-  vec3 res = vec3(-5.0f);
-}
-void main() {
-  refract_d7569b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  refract_d7569b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  refract_d7569b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.glsl
index def9f7e..a179564 100644
--- a/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/222177.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 reverseBits_222177() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_222177();
+  v.tint_symbol = reverseBits_222177();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 reverseBits_222177() {
+  ivec2 arg_0 = ivec2(1);
+  ivec2 res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_222177();
+  v.tint_symbol = reverseBits_222177();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_222177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 reverseBits_222177() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_222177();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 reverseBits_222177() {
-  ivec2 arg_0 = ivec2(1);
-  ivec2 res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_222177();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_222177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_222177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.glsl
index aa07cff..836e79c 100644
--- a/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/35fea9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
 uvec4 reverseBits_35fea9() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_35fea9();
+  v.tint_symbol = reverseBits_35fea9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 reverseBits_35fea9() {
+  uvec4 arg_0 = uvec4(1u);
+  uvec4 res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_35fea9();
+  v.tint_symbol = reverseBits_35fea9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_35fea9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 reverseBits_35fea9() {
   uvec4 arg_0 = uvec4(1u);
   uvec4 res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_35fea9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 reverseBits_35fea9() {
-  uvec4 arg_0 = uvec4(1u);
-  uvec4 res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_35fea9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_35fea9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_35fea9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.glsl
index 4fcf021..cddcfea 100644
--- a/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/4dbd6f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 reverseBits_4dbd6f() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_4dbd6f();
+  v.tint_symbol = reverseBits_4dbd6f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 reverseBits_4dbd6f() {
+  ivec4 arg_0 = ivec4(1);
+  ivec4 res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_4dbd6f();
+  v.tint_symbol = reverseBits_4dbd6f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_4dbd6f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 reverseBits_4dbd6f() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_4dbd6f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 reverseBits_4dbd6f() {
-  ivec4 arg_0 = ivec4(1);
-  ivec4 res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_4dbd6f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_4dbd6f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_4dbd6f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.glsl
index 64236d6..a1b354f 100644
--- a/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/7c4269.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int reverseBits_7c4269() {
   int arg_0 = 1;
   int res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_7c4269();
+  v.tint_symbol = reverseBits_7c4269();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int reverseBits_7c4269() {
+  int arg_0 = 1;
+  int res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_7c4269();
+  v.tint_symbol = reverseBits_7c4269();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_7c4269();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int reverseBits_7c4269() {
   int arg_0 = 1;
   int res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_7c4269();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int reverseBits_7c4269() {
-  int arg_0 = 1;
-  int res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_7c4269();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_7c4269();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_7c4269();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.glsl
index ab2b1a5..3264ef6 100644
--- a/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/a6ccd4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
 uvec3 reverseBits_a6ccd4() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_a6ccd4();
+  v.tint_symbol = reverseBits_a6ccd4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec3 tint_symbol;
+} v;
+uvec3 reverseBits_a6ccd4() {
+  uvec3 arg_0 = uvec3(1u);
+  uvec3 res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_a6ccd4();
+  v.tint_symbol = reverseBits_a6ccd4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_a6ccd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec3 prevent_dce;
 };
 
-uvec3 prevent_dce;
+layout(location = 0) flat out uvec3 vertex_main_loc0_Output;
 uvec3 reverseBits_a6ccd4() {
   uvec3 arg_0 = uvec3(1u);
   uvec3 res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_a6ccd4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec3 prevent_dce;
-};
-
-uvec3 prevent_dce;
-uvec3 reverseBits_a6ccd4() {
-  uvec3 arg_0 = uvec3(1u);
-  uvec3 res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_a6ccd4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_a6ccd4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec3(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_a6ccd4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.glsl
index 8e7d560..5865b8f 100644
--- a/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/c21bc1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 reverseBits_c21bc1() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_c21bc1();
+  v.tint_symbol = reverseBits_c21bc1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 reverseBits_c21bc1() {
+  ivec3 arg_0 = ivec3(1);
+  ivec3 res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_c21bc1();
+  v.tint_symbol = reverseBits_c21bc1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_c21bc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 reverseBits_c21bc1() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_c21bc1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 reverseBits_c21bc1() {
-  ivec3 arg_0 = ivec3(1);
-  ivec3 res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_c21bc1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_c21bc1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_c21bc1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.glsl
index 2ef06ed..de34061 100644
--- a/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/e1f4c1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
 uvec2 reverseBits_e1f4c1() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_e1f4c1();
+  v.tint_symbol = reverseBits_e1f4c1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec2 tint_symbol;
+} v;
+uvec2 reverseBits_e1f4c1() {
+  uvec2 arg_0 = uvec2(1u);
+  uvec2 res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_e1f4c1();
+  v.tint_symbol = reverseBits_e1f4c1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e1f4c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uvec2 prevent_dce;
 };
 
-uvec2 prevent_dce;
+layout(location = 0) flat out uvec2 vertex_main_loc0_Output;
 uvec2 reverseBits_e1f4c1() {
   uvec2 arg_0 = uvec2(1u);
   uvec2 res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_e1f4c1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec2 prevent_dce;
-};
-
-uvec2 prevent_dce;
-uvec2 reverseBits_e1f4c1() {
-  uvec2 arg_0 = uvec2(1u);
-  uvec2 res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_e1f4c1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e1f4c1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec2(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e1f4c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.glsl
index 4f51a00..1b55890 100644
--- a/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/reverseBits/e31adf.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
 uint reverseBits_e31adf() {
   uint arg_0 = 1u;
   uint res = bitfieldReverse(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = reverseBits_e31adf();
+  v.tint_symbol = reverseBits_e31adf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uint tint_symbol;
+} v;
+uint reverseBits_e31adf() {
+  uint arg_0 = 1u;
+  uint res = bitfieldReverse(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = reverseBits_e31adf();
+  v.tint_symbol = reverseBits_e31adf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e31adf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   uint prevent_dce;
 };
 
-uint prevent_dce;
+layout(location = 0) flat out uint vertex_main_loc0_Output;
 uint reverseBits_e31adf() {
   uint arg_0 = 1u;
   uint res = bitfieldReverse(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = reverseBits_e31adf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uint prevent_dce;
-};
-
-uint prevent_dce;
-uint reverseBits_e31adf() {
-  uint arg_0 = 1u;
-  uint res = bitfieldReverse(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = reverseBits_e31adf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = reverseBits_e31adf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0u);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = reverseBits_e31adf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.glsl
index 5d25d51..633fab1 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 round_106c0b() {
   vec4 arg_0 = vec4(3.5f);
   vec4 res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_106c0b();
+  v.tint_symbol = round_106c0b();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 round_106c0b() {
+  vec4 arg_0 = vec4(3.5f);
+  vec4 res = round(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_106c0b();
+  v.tint_symbol = round_106c0b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_106c0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 round_106c0b() {
   vec4 arg_0 = vec4(3.5f);
   vec4 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_106c0b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_106c0b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_106c0b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 round_106c0b() {
-  vec4 arg_0 = vec4(3.5f);
-  vec4 res = round(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = round_106c0b();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_106c0b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_106c0b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.glsl
index bb9b841..df7edc4 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_184d5a() {
+  vec4 res = vec4(4.0f);
+}
+void main() {
+  round_184d5a();
+}
+#version 310 es
+
+void round_184d5a() {
+  vec4 res = vec4(4.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_184d5a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_184d5a() {
   vec4 res = vec4(4.0f);
 }
-void main() {
-  round_184d5a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_184d5a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_184d5a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_184d5a() {
-  vec4 res = vec4(4.0f);
-}
 void main() {
-  round_184d5a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_184d5a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_184d5a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_184d5a() {
-  vec4 res = vec4(4.0f);
-}
-void main() {
-  round_184d5a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_184d5a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_184d5a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.glsl
index e0fdd88..28e5cb8 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 round_1c7897() {
   vec3 arg_0 = vec3(3.5f);
   vec3 res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_1c7897();
+  v.tint_symbol = round_1c7897();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 round_1c7897() {
+  vec3 arg_0 = vec3(3.5f);
+  vec3 res = round(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_1c7897();
+  v.tint_symbol = round_1c7897();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_1c7897();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 round_1c7897() {
   vec3 arg_0 = vec3(3.5f);
   vec3 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_1c7897();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_1c7897();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_1c7897();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 round_1c7897() {
-  vec3 arg_0 = vec3(3.5f);
-  vec3 res = round(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = round_1c7897();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_1c7897();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_1c7897();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.glsl
index 0f8d95e..4284286 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 round_52c84d() {
   vec2 arg_0 = vec2(3.5f);
   vec2 res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_52c84d();
+  v.tint_symbol = round_52c84d();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 round_52c84d() {
+  vec2 arg_0 = vec2(3.5f);
+  vec2 res = round(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_52c84d();
+  v.tint_symbol = round_52c84d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_52c84d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 round_52c84d() {
   vec2 arg_0 = vec2(3.5f);
   vec2 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_52c84d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_52c84d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_52c84d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 round_52c84d() {
-  vec2 arg_0 = vec2(3.5f);
-  vec2 res = round(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = round_52c84d();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_52c84d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_52c84d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.glsl
index d9df725..5ca3936 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_773a8f() {
+  float res = 4.0f;
+}
+void main() {
+  round_773a8f();
+}
+#version 310 es
+
+void round_773a8f() {
+  float res = 4.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_773a8f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_773a8f() {
   float res = 4.0f;
 }
-void main() {
-  round_773a8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_773a8f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_773a8f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_773a8f() {
-  float res = 4.0f;
-}
 void main() {
-  round_773a8f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_773a8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_773a8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_773a8f() {
-  float res = 4.0f;
-}
-void main() {
-  round_773a8f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_773a8f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_773a8f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.glsl
index ecf4071..bf91065 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_8fdca3() {
+  vec2 res = vec2(4.0f);
+}
+void main() {
+  round_8fdca3();
+}
+#version 310 es
+
+void round_8fdca3() {
+  vec2 res = vec2(4.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_8fdca3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_8fdca3() {
   vec2 res = vec2(4.0f);
 }
-void main() {
-  round_8fdca3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_8fdca3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_8fdca3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_8fdca3() {
-  vec2 res = vec2(4.0f);
-}
 void main() {
-  round_8fdca3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_8fdca3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_8fdca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_8fdca3() {
-  vec2 res = vec2(4.0f);
-}
-void main() {
-  round_8fdca3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_8fdca3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_8fdca3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.glsl
index e060693..47be59f 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t round_9078ef() {
   float16_t arg_0 = 3.5hf;
   float16_t res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_9078ef();
+  v.tint_symbol = round_9078ef();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9078ef();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9078ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t round_9078ef() {
   float16_t arg_0 = 3.5hf;
   float16_t res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_9078ef();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_9078ef();
+  v.tint_symbol = round_9078ef();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9078ef();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t round_9078ef() {
   float16_t arg_0 = 3.5hf;
   float16_t res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_9078ef();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9078ef();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_9078ef();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.glsl
index 0264bba..51a9572 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float round_9edc38() {
   float arg_0 = 3.5f;
   float res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_9edc38();
+  v.tint_symbol = round_9edc38();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float round_9edc38() {
+  float arg_0 = 3.5f;
+  float res = round(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_9edc38();
+  v.tint_symbol = round_9edc38();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9edc38();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float round_9edc38() {
   float arg_0 = 3.5f;
   float res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_9edc38();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9edc38();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_9edc38();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float round_9edc38() {
-  float arg_0 = 3.5f;
-  float res = round(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = round_9edc38();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_9edc38();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_9edc38();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.glsl
index 76e388a..2f1623e 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void round_a1673d() {
+  vec3 res = vec3(4.0f);
+}
+void main() {
+  round_a1673d();
+}
+#version 310 es
+
+void round_a1673d() {
+  vec3 res = vec3(4.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  round_a1673d();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void round_a1673d() {
   vec3 res = vec3(4.0f);
 }
-void main() {
-  round_a1673d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_a1673d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   round_a1673d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_a1673d() {
-  vec3 res = vec3(4.0f);
-}
 void main() {
-  round_a1673d();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_a1673d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_a1673d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void round_a1673d() {
-  vec3 res = vec3(4.0f);
-}
-void main() {
-  round_a1673d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  round_a1673d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  round_a1673d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.glsl
index e468ace..b5d2fd5 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 round_d87e84() {
   f16vec2 arg_0 = f16vec2(3.5hf);
   f16vec2 res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_d87e84();
+  v.tint_symbol = round_d87e84();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_d87e84();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_d87e84();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 round_d87e84() {
   f16vec2 arg_0 = f16vec2(3.5hf);
   f16vec2 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_d87e84();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_d87e84();
+  v.tint_symbol = round_d87e84();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_d87e84();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 round_d87e84() {
   f16vec2 arg_0 = f16vec2(3.5hf);
   f16vec2 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_d87e84();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_d87e84();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_d87e84();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.glsl
index 45f6b66..1d957b5 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 round_e1bba2() {
   f16vec3 arg_0 = f16vec3(3.5hf);
   f16vec3 res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_e1bba2();
+  v.tint_symbol = round_e1bba2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_e1bba2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_e1bba2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 round_e1bba2() {
   f16vec3 arg_0 = f16vec3(3.5hf);
   f16vec3 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_e1bba2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_e1bba2();
+  v.tint_symbol = round_e1bba2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_e1bba2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 round_e1bba2() {
   f16vec3 arg_0 = f16vec3(3.5hf);
   f16vec3 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_e1bba2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_e1bba2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_e1bba2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.glsl
index 9e4d162..819b3d2 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 round_f665b5() {
   f16vec4 arg_0 = f16vec4(3.5hf);
   f16vec4 res = round(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = round_f665b5();
+  v.tint_symbol = round_f665b5();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_f665b5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_f665b5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 round_f665b5() {
   f16vec4 arg_0 = f16vec4(3.5hf);
   f16vec4 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_f665b5();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = round_f665b5();
+  v.tint_symbol = round_f665b5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = round_f665b5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 round_f665b5() {
   f16vec4 arg_0 = f16vec4(3.5hf);
   f16vec4 res = round(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = round_f665b5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = round_f665b5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = round_f665b5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.glsl
index 8faa907..a51b7b2 100644
--- a/test/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/270da5.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float saturate_270da5() {
   float arg_0 = 2.0f;
   float res = clamp(arg_0, 0.0f, 1.0f);
   return res;
 }
 void main() {
-  prevent_dce = saturate_270da5();
+  v.tint_symbol = saturate_270da5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float saturate_270da5() {
+  float arg_0 = 2.0f;
+  float res = clamp(arg_0, 0.0f, 1.0f);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_270da5();
+  v.tint_symbol = saturate_270da5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_270da5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float saturate_270da5() {
   float arg_0 = 2.0f;
   float res = clamp(arg_0, 0.0f, 1.0f);
   return res;
 }
-void main() {
-  prevent_dce = saturate_270da5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_270da5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_270da5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float saturate_270da5() {
-  float arg_0 = 2.0f;
-  float res = clamp(arg_0, 0.0f, 1.0f);
-  return res;
-}
 void main() {
-  prevent_dce = saturate_270da5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_270da5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_270da5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.glsl
index 0cc9a3f..c35dfa4 100644
--- a/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/462535.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 saturate_462535() {
   f16vec3 arg_0 = f16vec3(2.0hf);
   f16vec3 res = clamp(arg_0, f16vec3(0.0hf), f16vec3(1.0hf));
   return res;
 }
 void main() {
-  prevent_dce = saturate_462535();
+  v.tint_symbol = saturate_462535();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_462535();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_462535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 saturate_462535() {
   f16vec3 arg_0 = f16vec3(2.0hf);
   f16vec3 res = clamp(arg_0, f16vec3(0.0hf), f16vec3(1.0hf));
   return res;
 }
-void main() {
-  prevent_dce = saturate_462535();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_462535();
+  v.tint_symbol = saturate_462535();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_462535();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 saturate_462535() {
   f16vec3 arg_0 = f16vec3(2.0hf);
   f16vec3 res = clamp(arg_0, f16vec3(0.0hf), f16vec3(1.0hf));
   return res;
 }
-void main() {
-  prevent_dce = saturate_462535();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_462535();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_462535();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.glsl
index a10c342..4a4d116 100644
--- a/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_4ed8d7() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  saturate_4ed8d7();
+}
+#version 310 es
+
+void saturate_4ed8d7() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_4ed8d7();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_4ed8d7() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  saturate_4ed8d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_4ed8d7();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_4ed8d7();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_4ed8d7() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  saturate_4ed8d7();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_4ed8d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_4ed8d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_4ed8d7() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  saturate_4ed8d7();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_4ed8d7();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_4ed8d7();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.glsl
index de243e9..466e5df 100644
--- a/test/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/51567f.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 saturate_51567f() {
   vec2 arg_0 = vec2(2.0f);
   vec2 res = clamp(arg_0, vec2(0.0f), vec2(1.0f));
   return res;
 }
 void main() {
-  prevent_dce = saturate_51567f();
+  v.tint_symbol = saturate_51567f();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 saturate_51567f() {
+  vec2 arg_0 = vec2(2.0f);
+  vec2 res = clamp(arg_0, vec2(0.0f), vec2(1.0f));
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_51567f();
+  v.tint_symbol = saturate_51567f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_51567f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 saturate_51567f() {
   vec2 arg_0 = vec2(2.0f);
   vec2 res = clamp(arg_0, vec2(0.0f), vec2(1.0f));
   return res;
 }
-void main() {
-  prevent_dce = saturate_51567f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_51567f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_51567f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 saturate_51567f() {
-  vec2 arg_0 = vec2(2.0f);
-  vec2 res = clamp(arg_0, vec2(0.0f), vec2(1.0f));
-  return res;
-}
 void main() {
-  prevent_dce = saturate_51567f();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_51567f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_51567f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.glsl
index d2a71ad..dbe514f 100644
--- a/test/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/6bcddf.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 saturate_6bcddf() {
   vec3 arg_0 = vec3(2.0f);
   vec3 res = clamp(arg_0, vec3(0.0f), vec3(1.0f));
   return res;
 }
 void main() {
-  prevent_dce = saturate_6bcddf();
+  v.tint_symbol = saturate_6bcddf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 saturate_6bcddf() {
+  vec3 arg_0 = vec3(2.0f);
+  vec3 res = clamp(arg_0, vec3(0.0f), vec3(1.0f));
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_6bcddf();
+  v.tint_symbol = saturate_6bcddf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_6bcddf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 saturate_6bcddf() {
   vec3 arg_0 = vec3(2.0f);
   vec3 res = clamp(arg_0, vec3(0.0f), vec3(1.0f));
   return res;
 }
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_6bcddf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 saturate_6bcddf() {
-  vec3 arg_0 = vec3(2.0f);
-  vec3 res = clamp(arg_0, vec3(0.0f), vec3(1.0f));
-  return res;
-}
 void main() {
-  prevent_dce = saturate_6bcddf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_6bcddf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_6bcddf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.glsl
index ab7cdc8..a0e1389 100644
--- a/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_78b37c() {
+  float res = 1.0f;
+}
+void main() {
+  saturate_78b37c();
+}
+#version 310 es
+
+void saturate_78b37c() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_78b37c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_78b37c() {
   float res = 1.0f;
 }
-void main() {
-  saturate_78b37c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_78b37c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_78b37c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_78b37c() {
-  float res = 1.0f;
-}
 void main() {
-  saturate_78b37c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_78b37c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_78b37c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_78b37c() {
-  float res = 1.0f;
-}
-void main() {
-  saturate_78b37c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_78b37c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_78b37c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.glsl
index 887c3e0..bf06874 100644
--- a/test/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/a5b571.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 saturate_a5b571() {
   vec4 arg_0 = vec4(2.0f);
   vec4 res = clamp(arg_0, vec4(0.0f), vec4(1.0f));
   return res;
 }
 void main() {
-  prevent_dce = saturate_a5b571();
+  v.tint_symbol = saturate_a5b571();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 saturate_a5b571() {
+  vec4 arg_0 = vec4(2.0f);
+  vec4 res = clamp(arg_0, vec4(0.0f), vec4(1.0f));
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_a5b571();
+  v.tint_symbol = saturate_a5b571();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_a5b571();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 saturate_a5b571() {
   vec4 arg_0 = vec4(2.0f);
   vec4 res = clamp(arg_0, vec4(0.0f), vec4(1.0f));
   return res;
 }
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_a5b571();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 saturate_a5b571() {
-  vec4 arg_0 = vec4(2.0f);
-  vec4 res = clamp(arg_0, vec4(0.0f), vec4(1.0f));
-  return res;
-}
 void main() {
-  prevent_dce = saturate_a5b571();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_a5b571();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_a5b571();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.glsl
index 85f3fbe..1370eb0 100644
--- a/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/cd2028.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 saturate_cd2028() {
   f16vec2 arg_0 = f16vec2(2.0hf);
   f16vec2 res = clamp(arg_0, f16vec2(0.0hf), f16vec2(1.0hf));
   return res;
 }
 void main() {
-  prevent_dce = saturate_cd2028();
+  v.tint_symbol = saturate_cd2028();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_cd2028();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_cd2028();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 saturate_cd2028() {
   f16vec2 arg_0 = f16vec2(2.0hf);
   f16vec2 res = clamp(arg_0, f16vec2(0.0hf), f16vec2(1.0hf));
   return res;
 }
-void main() {
-  prevent_dce = saturate_cd2028();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_cd2028();
+  v.tint_symbol = saturate_cd2028();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_cd2028();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 saturate_cd2028() {
   f16vec2 arg_0 = f16vec2(2.0hf);
   f16vec2 res = clamp(arg_0, f16vec2(0.0hf), f16vec2(1.0hf));
   return res;
 }
-void main() {
-  prevent_dce = saturate_cd2028();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_cd2028();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_cd2028();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.glsl
index ad4b630..6de7e06 100644
--- a/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_d55822() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  saturate_d55822();
+}
+#version 310 es
+
+void saturate_d55822() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_d55822();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_d55822() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  saturate_d55822();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_d55822();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_d55822();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_d55822() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  saturate_d55822();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_d55822();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_d55822();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_d55822() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  saturate_d55822();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_d55822();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_d55822();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.glsl
index 8d29aed..4dfcf72 100644
--- a/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/dcde71.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 saturate_dcde71() {
   f16vec4 arg_0 = f16vec4(2.0hf);
   f16vec4 res = clamp(arg_0, f16vec4(0.0hf), f16vec4(1.0hf));
   return res;
 }
 void main() {
-  prevent_dce = saturate_dcde71();
+  v.tint_symbol = saturate_dcde71();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_dcde71();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_dcde71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 saturate_dcde71() {
   f16vec4 arg_0 = f16vec4(2.0hf);
   f16vec4 res = clamp(arg_0, f16vec4(0.0hf), f16vec4(1.0hf));
   return res;
 }
-void main() {
-  prevent_dce = saturate_dcde71();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_dcde71();
+  v.tint_symbol = saturate_dcde71();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_dcde71();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 saturate_dcde71() {
   f16vec4 arg_0 = f16vec4(2.0hf);
   f16vec4 res = clamp(arg_0, f16vec4(0.0hf), f16vec4(1.0hf));
   return res;
 }
-void main() {
-  prevent_dce = saturate_dcde71();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_dcde71();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_dcde71();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.glsl
index 78bbea2..5c65e39 100644
--- a/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void saturate_e40fb6() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  saturate_e40fb6();
+}
+#version 310 es
+
+void saturate_e40fb6() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  saturate_e40fb6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void saturate_e40fb6() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  saturate_e40fb6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_e40fb6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   saturate_e40fb6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_e40fb6() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  saturate_e40fb6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_e40fb6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_e40fb6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void saturate_e40fb6() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  saturate_e40fb6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  saturate_e40fb6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  saturate_e40fb6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.glsl
index 0be15967..e97e8d2 100644
--- a/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/saturate/e8df56.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t saturate_e8df56() {
   float16_t arg_0 = 2.0hf;
   float16_t res = clamp(arg_0, 0.0hf, 1.0hf);
   return res;
 }
 void main() {
-  prevent_dce = saturate_e8df56();
+  v.tint_symbol = saturate_e8df56();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_e8df56();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_e8df56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t saturate_e8df56() {
   float16_t arg_0 = 2.0hf;
   float16_t res = clamp(arg_0, 0.0hf, 1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_e8df56();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = saturate_e8df56();
+  v.tint_symbol = saturate_e8df56();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = saturate_e8df56();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t saturate_e8df56() {
   float16_t arg_0 = 2.0hf;
   float16_t res = clamp(arg_0, 0.0hf, 1.0hf);
   return res;
 }
-void main() {
-  prevent_dce = saturate_e8df56();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = saturate_e8df56();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = saturate_e8df56();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.glsl
index ddf1abe..1a6ae36 100644
--- a/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_0799fd() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  sign_0799fd();
+}
+#version 310 es
+
+void sign_0799fd() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_0799fd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_0799fd() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  sign_0799fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_0799fd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_0799fd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_0799fd() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  sign_0799fd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_0799fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_0799fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_0799fd() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  sign_0799fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_0799fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_0799fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.glsl
index 6228ed5..509e8d4 100644
--- a/test/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/159665.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 sign_159665() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_159665();
+  v.tint_symbol = sign_159665();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sign_159665() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_159665();
+  v.tint_symbol = sign_159665();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_159665();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sign_159665() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_159665();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_159665();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_159665();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sign_159665() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_159665();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_159665();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_159665();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.glsl
index f451af7..75781bb 100644
--- a/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/160933.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sign_160933() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_160933();
+  v.tint_symbol = sign_160933();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_160933();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_160933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sign_160933() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_160933();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_160933();
+  v.tint_symbol = sign_160933();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_160933();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sign_160933() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_160933();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_160933();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_160933();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.glsl
index 891cb85..4c10f7e 100644
--- a/test/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/3233fa.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
 int sign_3233fa() {
   int arg_0 = 1;
   int res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_3233fa();
+  v.tint_symbol = sign_3233fa();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  int tint_symbol;
+} v;
+int sign_3233fa() {
+  int arg_0 = 1;
+  int res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_3233fa();
+  v.tint_symbol = sign_3233fa();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_3233fa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   int prevent_dce;
 };
 
-int prevent_dce;
+layout(location = 0) flat out int vertex_main_loc0_Output;
 int sign_3233fa() {
   int arg_0 = 1;
   int res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_3233fa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_3233fa();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_3233fa();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  int prevent_dce;
-};
-
-int prevent_dce;
-int sign_3233fa() {
-  int arg_0 = 1;
-  int res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_3233fa();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_3233fa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_3233fa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.glsl
index 5dbf7ea..e0f3dd6 100644
--- a/test/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/3a39ac.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_3a39ac() {
+  int res = 1;
+}
+void main() {
+  sign_3a39ac();
+}
+#version 310 es
+
+void sign_3a39ac() {
+  int res = 1;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_3a39ac();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_3a39ac() {
   int res = 1;
 }
-void main() {
-  sign_3a39ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3a39ac();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_3a39ac();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3a39ac() {
-  int res = 1;
-}
 void main() {
-  sign_3a39ac();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3a39ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3a39ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3a39ac() {
-  int res = 1;
-}
-void main() {
-  sign_3a39ac();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3a39ac();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3a39ac();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.glsl
index 0f0a87c..9b04c3a 100644
--- a/test/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/3bdab6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_3bdab6() {
+  ivec4 res = ivec4(1);
+}
+void main() {
+  sign_3bdab6();
+}
+#version 310 es
+
+void sign_3bdab6() {
+  ivec4 res = ivec4(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_3bdab6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_3bdab6() {
   ivec4 res = ivec4(1);
 }
-void main() {
-  sign_3bdab6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3bdab6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_3bdab6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3bdab6() {
-  ivec4 res = ivec4(1);
-}
 void main() {
-  sign_3bdab6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3bdab6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3bdab6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_3bdab6() {
-  ivec4 res = ivec4(1);
-}
-void main() {
-  sign_3bdab6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_3bdab6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_3bdab6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.glsl
index 4ee1fef..257bb29 100644
--- a/test/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/55339e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_55339e() {
+  ivec3 res = ivec3(1);
+}
+void main() {
+  sign_55339e();
+}
+#version 310 es
+
+void sign_55339e() {
+  ivec3 res = ivec3(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_55339e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_55339e() {
   ivec3 res = ivec3(1);
 }
-void main() {
-  sign_55339e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_55339e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_55339e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_55339e() {
-  ivec3 res = ivec3(1);
-}
 void main() {
-  sign_55339e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_55339e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_55339e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_55339e() {
-  ivec3 res = ivec3(1);
-}
-void main() {
-  sign_55339e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_55339e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_55339e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.glsl
index 4caa638..d85ee6c 100644
--- a/test/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/58d779.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
 ivec4 sign_58d779() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_58d779();
+  v.tint_symbol = sign_58d779();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec4 tint_symbol;
+} v;
+ivec4 sign_58d779() {
+  ivec4 arg_0 = ivec4(1);
+  ivec4 res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_58d779();
+  v.tint_symbol = sign_58d779();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_58d779();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec4 prevent_dce;
 };
 
-ivec4 prevent_dce;
+layout(location = 0) flat out ivec4 vertex_main_loc0_Output;
 ivec4 sign_58d779() {
   ivec4 arg_0 = ivec4(1);
   ivec4 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_58d779();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_58d779();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_58d779();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec4 prevent_dce;
-};
-
-ivec4 prevent_dce;
-ivec4 sign_58d779() {
-  ivec4 arg_0 = ivec4(1);
-  ivec4 res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_58d779();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_58d779();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec4(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_58d779();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.glsl
index 1127715..3d91fb9 100644
--- a/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/5d283a.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sign_5d283a() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_5d283a();
+  v.tint_symbol = sign_5d283a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_5d283a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_5d283a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sign_5d283a() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_5d283a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_5d283a();
+  v.tint_symbol = sign_5d283a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_5d283a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sign_5d283a() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_5d283a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_5d283a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_5d283a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.glsl
index 16f054b..5f6d000 100644
--- a/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/7c85ea.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sign_7c85ea() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_7c85ea();
+  v.tint_symbol = sign_7c85ea();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_7c85ea();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_7c85ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sign_7c85ea() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_7c85ea();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_7c85ea();
+  v.tint_symbol = sign_7c85ea();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_7c85ea();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sign_7c85ea() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_7c85ea();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_7c85ea();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_7c85ea();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.glsl
index 46b5f9e..88ccceb 100644
--- a/test/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/926015.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
 ivec2 sign_926015() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_926015();
+  v.tint_symbol = sign_926015();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec2 tint_symbol;
+} v;
+ivec2 sign_926015() {
+  ivec2 arg_0 = ivec2(1);
+  ivec2 res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_926015();
+  v.tint_symbol = sign_926015();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_926015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec2 prevent_dce;
 };
 
-ivec2 prevent_dce;
+layout(location = 0) flat out ivec2 vertex_main_loc0_Output;
 ivec2 sign_926015() {
   ivec2 arg_0 = ivec2(1);
   ivec2 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_926015();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_926015();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_926015();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec2 prevent_dce;
-};
-
-ivec2 prevent_dce;
-ivec2 sign_926015() {
-  ivec2 arg_0 = ivec2(1);
-  ivec2 res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_926015();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_926015();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec2(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_926015();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.glsl
index 12a56c4..6d08025 100644
--- a/test/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/943b2e.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_943b2e() {
+  ivec2 res = ivec2(1);
+}
+void main() {
+  sign_943b2e();
+}
+#version 310 es
+
+void sign_943b2e() {
+  ivec2 res = ivec2(1);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_943b2e();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_943b2e() {
   ivec2 res = ivec2(1);
 }
-void main() {
-  sign_943b2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_943b2e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_943b2e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_943b2e() {
-  ivec2 res = ivec2(1);
-}
 void main() {
-  sign_943b2e();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_943b2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_943b2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_943b2e() {
-  ivec2 res = ivec2(1);
-}
-void main() {
-  sign_943b2e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_943b2e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_943b2e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.glsl
index 309b937..32e62db 100644
--- a/test/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/9603b1.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
 ivec3 sign_9603b1() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_9603b1();
+  v.tint_symbol = sign_9603b1();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  ivec3 tint_symbol;
+} v;
+ivec3 sign_9603b1() {
+  ivec3 arg_0 = ivec3(1);
+  ivec3 res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_9603b1();
+  v.tint_symbol = sign_9603b1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_9603b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   ivec3 prevent_dce;
 };
 
-ivec3 prevent_dce;
+layout(location = 0) flat out ivec3 vertex_main_loc0_Output;
 ivec3 sign_9603b1() {
   ivec3 arg_0 = ivec3(1);
   ivec3 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_9603b1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_9603b1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_9603b1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  ivec3 prevent_dce;
-};
-
-ivec3 prevent_dce;
-ivec3 sign_9603b1() {
-  ivec3 arg_0 = ivec3(1);
-  ivec3 res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_9603b1();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_9603b1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), ivec3(0));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_9603b1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.glsl
index 9eaa0ae..bbf2d22 100644
--- a/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_ab6301() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  sign_ab6301();
+}
+#version 310 es
+
+void sign_ab6301() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_ab6301();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_ab6301() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  sign_ab6301();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_ab6301();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_ab6301();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_ab6301() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  sign_ab6301();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_ab6301();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_ab6301();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_ab6301() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  sign_ab6301();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_ab6301();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_ab6301();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.glsl
index e4af150..fd6f559 100644
--- a/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/b8f634.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 sign_b8f634() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_b8f634();
+  v.tint_symbol = sign_b8f634();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sign_b8f634() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_b8f634();
+  v.tint_symbol = sign_b8f634();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_b8f634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sign_b8f634() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_b8f634();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_b8f634();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_b8f634();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sign_b8f634() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_b8f634();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_b8f634();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_b8f634();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.glsl
index a3f66c2..fe802f1 100644
--- a/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_c8289c() {
+  float res = 1.0f;
+}
+void main() {
+  sign_c8289c();
+}
+#version 310 es
+
+void sign_c8289c() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_c8289c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_c8289c() {
   float res = 1.0f;
 }
-void main() {
-  sign_c8289c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_c8289c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_c8289c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_c8289c() {
-  float res = 1.0f;
-}
 void main() {
-  sign_c8289c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_c8289c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_c8289c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_c8289c() {
-  float res = 1.0f;
-}
-void main() {
-  sign_c8289c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_c8289c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_c8289c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.glsl
index 6071b96..e67eac8 100644
--- a/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/ccdb3c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sign_ccdb3c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_ccdb3c();
+  v.tint_symbol = sign_ccdb3c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_ccdb3c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sign_ccdb3c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_ccdb3c();
+  v.tint_symbol = sign_ccdb3c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_ccdb3c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sign_ccdb3c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_ccdb3c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_ccdb3c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.glsl
index 383c599..757eaa6 100644
--- a/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/d065d8.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 sign_d065d8() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_d065d8();
+  v.tint_symbol = sign_d065d8();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sign_d065d8() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_d065d8();
+  v.tint_symbol = sign_d065d8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_d065d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sign_d065d8() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_d065d8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_d065d8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_d065d8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sign_d065d8() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_d065d8();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_d065d8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_d065d8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.glsl
index 8505462..e8d053e 100644
--- a/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/dd790e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float sign_dd790e() {
   float arg_0 = 1.0f;
   float res = sign(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sign_dd790e();
+  v.tint_symbol = sign_dd790e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sign_dd790e() {
+  float arg_0 = 1.0f;
+  float res = sign(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sign_dd790e();
+  v.tint_symbol = sign_dd790e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_dd790e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sign_dd790e() {
   float arg_0 = 1.0f;
   float res = sign(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sign_dd790e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_dd790e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sign_dd790e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sign_dd790e() {
-  float arg_0 = 1.0f;
-  float res = sign(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sign_dd790e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sign_dd790e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sign_dd790e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.glsl
index e5d7450..0a1f23c 100644
--- a/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sign_f5da6a() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  sign_f5da6a();
+}
+#version 310 es
+
+void sign_f5da6a() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sign_f5da6a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sign_f5da6a() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  sign_f5da6a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_f5da6a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sign_f5da6a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_f5da6a() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  sign_f5da6a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_f5da6a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_f5da6a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sign_f5da6a() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  sign_f5da6a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sign_f5da6a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sign_f5da6a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.glsl
index d6631d4..88ccb35 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 sin_01f241() {
   vec3 arg_0 = vec3(1.57079637050628662109f);
   vec3 res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_01f241();
+  v.tint_symbol = sin_01f241();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sin_01f241() {
+  vec3 arg_0 = vec3(1.57079637050628662109f);
+  vec3 res = sin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_01f241();
+  v.tint_symbol = sin_01f241();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_01f241();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sin_01f241() {
   vec3 arg_0 = vec3(1.57079637050628662109f);
   vec3 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_01f241();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_01f241();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_01f241();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sin_01f241() {
-  vec3 arg_0 = vec3(1.57079637050628662109f);
-  vec3 res = sin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sin_01f241();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_01f241();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_01f241();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.glsl
index 1f219c7..5cc6310 100644
--- a/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_15b2c6() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  sin_15b2c6();
+}
+#version 310 es
+
+void sin_15b2c6() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_15b2c6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_15b2c6() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  sin_15b2c6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_15b2c6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_15b2c6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_15b2c6() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  sin_15b2c6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_15b2c6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_15b2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_15b2c6() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  sin_15b2c6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_15b2c6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_15b2c6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.glsl
index a23d6d3..44f37df 100644
--- a/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/2c903b.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sin_2c903b() {
   f16vec3 arg_0 = f16vec3(1.5703125hf);
   f16vec3 res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_2c903b();
+  v.tint_symbol = sin_2c903b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_2c903b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_2c903b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sin_2c903b() {
   f16vec3 arg_0 = f16vec3(1.5703125hf);
   f16vec3 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_2c903b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_2c903b();
+  v.tint_symbol = sin_2c903b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_2c903b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sin_2c903b() {
   f16vec3 arg_0 = f16vec3(1.5703125hf);
   f16vec3 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_2c903b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_2c903b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_2c903b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.glsl
index 6c23d95..f4821ee 100644
--- a/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/3cca11.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sin_3cca11() {
   f16vec2 arg_0 = f16vec2(1.5703125hf);
   f16vec2 res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_3cca11();
+  v.tint_symbol = sin_3cca11();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_3cca11();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_3cca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sin_3cca11() {
   f16vec2 arg_0 = f16vec2(1.5703125hf);
   f16vec2 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_3cca11();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_3cca11();
+  v.tint_symbol = sin_3cca11();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_3cca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sin_3cca11() {
   f16vec2 arg_0 = f16vec2(1.5703125hf);
   f16vec2 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_3cca11();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_3cca11();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_3cca11();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.glsl
index 8937168..0aad1ef 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 sin_4e3979() {
   vec4 arg_0 = vec4(1.57079637050628662109f);
   vec4 res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_4e3979();
+  v.tint_symbol = sin_4e3979();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sin_4e3979() {
+  vec4 arg_0 = vec4(1.57079637050628662109f);
+  vec4 res = sin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_4e3979();
+  v.tint_symbol = sin_4e3979();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_4e3979();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sin_4e3979() {
   vec4 arg_0 = vec4(1.57079637050628662109f);
   vec4 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_4e3979();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_4e3979();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_4e3979();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sin_4e3979() {
-  vec4 arg_0 = vec4(1.57079637050628662109f);
-  vec4 res = sin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sin_4e3979();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_4e3979();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_4e3979();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.glsl
index f7dbc51..c6cf7c7 100644
--- a/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/5c0712.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sin_5c0712() {
   f16vec4 arg_0 = f16vec4(1.5703125hf);
   f16vec4 res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_5c0712();
+  v.tint_symbol = sin_5c0712();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_5c0712();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_5c0712();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sin_5c0712() {
   f16vec4 arg_0 = f16vec4(1.5703125hf);
   f16vec4 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_5c0712();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_5c0712();
+  v.tint_symbol = sin_5c0712();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_5c0712();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sin_5c0712() {
   f16vec4 arg_0 = f16vec4(1.5703125hf);
   f16vec4 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_5c0712();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_5c0712();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_5c0712();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.glsl
index 6af8a1b..a87bb46 100644
--- a/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/66a59f.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sin_66a59f() {
   float16_t arg_0 = 1.5703125hf;
   float16_t res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_66a59f();
+  v.tint_symbol = sin_66a59f();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_66a59f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_66a59f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sin_66a59f() {
   float16_t arg_0 = 1.5703125hf;
   float16_t res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_66a59f();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_66a59f();
+  v.tint_symbol = sin_66a59f();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_66a59f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sin_66a59f() {
   float16_t arg_0 = 1.5703125hf;
   float16_t res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_66a59f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_66a59f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_66a59f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.glsl
index 49a8556..01145e6 100644
--- a/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_67b03c() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  sin_67b03c();
+}
+#version 310 es
+
+void sin_67b03c() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_67b03c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_67b03c() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  sin_67b03c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_67b03c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_67b03c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_67b03c() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  sin_67b03c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_67b03c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_67b03c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_67b03c() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  sin_67b03c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_67b03c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_67b03c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.glsl
index 18d090c..6fbe2cb 100644
--- a/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_68d3ab() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  sin_68d3ab();
+}
+#version 310 es
+
+void sin_68d3ab() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_68d3ab();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_68d3ab() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  sin_68d3ab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_68d3ab();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_68d3ab();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_68d3ab() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  sin_68d3ab();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_68d3ab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_68d3ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_68d3ab() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  sin_68d3ab();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_68d3ab();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_68d3ab();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.glsl
index ee5eef1..17ef61c 100644
--- a/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sin_a9ab19() {
+  float res = 1.0f;
+}
+void main() {
+  sin_a9ab19();
+}
+#version 310 es
+
+void sin_a9ab19() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sin_a9ab19();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sin_a9ab19() {
   float res = 1.0f;
 }
-void main() {
-  sin_a9ab19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_a9ab19();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sin_a9ab19();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_a9ab19() {
-  float res = 1.0f;
-}
 void main() {
-  sin_a9ab19();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_a9ab19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_a9ab19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sin_a9ab19() {
-  float res = 1.0f;
-}
-void main() {
-  sin_a9ab19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sin_a9ab19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sin_a9ab19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.glsl
index 1ff07ed..a42a622 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float sin_b78c91() {
   float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_b78c91();
+  v.tint_symbol = sin_b78c91();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sin_b78c91() {
+  float arg_0 = 1.57079637050628662109f;
+  float res = sin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_b78c91();
+  v.tint_symbol = sin_b78c91();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_b78c91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sin_b78c91() {
   float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_b78c91();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_b78c91();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_b78c91();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sin_b78c91() {
-  float arg_0 = 1.57079637050628662109f;
-  float res = sin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sin_b78c91();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_b78c91();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_b78c91();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.glsl
index c9a73f1..1689f27 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 sin_fc8bc4() {
   vec2 arg_0 = vec2(1.57079637050628662109f);
   vec2 res = sin(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sin_fc8bc4();
+  v.tint_symbol = sin_fc8bc4();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sin_fc8bc4() {
+  vec2 arg_0 = vec2(1.57079637050628662109f);
+  vec2 res = sin(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sin_fc8bc4();
+  v.tint_symbol = sin_fc8bc4();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_fc8bc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sin_fc8bc4() {
   vec2 arg_0 = vec2(1.57079637050628662109f);
   vec2 res = sin(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sin_fc8bc4();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sin_fc8bc4() {
-  vec2 arg_0 = vec2(1.57079637050628662109f);
-  vec2 res = sin(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sin_fc8bc4();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sin_fc8bc4();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sin_fc8bc4();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.glsl
index d527dc9..7b71ae0 100644
--- a/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/0908c1.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sinh_0908c1() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_0908c1();
+  v.tint_symbol = sinh_0908c1();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_0908c1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_0908c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sinh_0908c1() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_0908c1();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_0908c1();
+  v.tint_symbol = sinh_0908c1();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_0908c1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sinh_0908c1() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_0908c1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_0908c1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_0908c1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.glsl
index ce8302e..0460718 100644
--- a/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/445e33.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 sinh_445e33() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_445e33();
+  v.tint_symbol = sinh_445e33();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sinh_445e33() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = sinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_445e33();
+  v.tint_symbol = sinh_445e33();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_445e33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sinh_445e33() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_445e33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_445e33();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_445e33();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sinh_445e33() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = sinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_445e33();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_445e33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_445e33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.glsl
index b3081a2..3fd1c1b 100644
--- a/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/69cce2.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sinh_69cce2() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_69cce2();
+  v.tint_symbol = sinh_69cce2();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_69cce2();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_69cce2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sinh_69cce2() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_69cce2();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_69cce2();
+  v.tint_symbol = sinh_69cce2();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_69cce2();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sinh_69cce2() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_69cce2();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_69cce2();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_69cce2();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.glsl
index bbffbbd..c14c188 100644
--- a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_77a2a3() {
+  vec3 res = vec3(1.17520117759704589844f);
+}
+void main() {
+  sinh_77a2a3();
+}
+#version 310 es
+
+void sinh_77a2a3() {
+  vec3 res = vec3(1.17520117759704589844f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_77a2a3();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_77a2a3() {
   vec3 res = vec3(1.17520117759704589844f);
 }
-void main() {
-  sinh_77a2a3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_77a2a3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_77a2a3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_77a2a3() {
-  vec3 res = vec3(1.17520117759704589844f);
-}
 void main() {
-  sinh_77a2a3();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_77a2a3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_77a2a3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_77a2a3() {
-  vec3 res = vec3(1.17520117759704589844f);
-}
-void main() {
-  sinh_77a2a3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_77a2a3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_77a2a3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.glsl
index 96c03a9..e58184f 100644
--- a/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/7bb598.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float sinh_7bb598() {
   float arg_0 = 1.0f;
   float res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_7bb598();
+  v.tint_symbol = sinh_7bb598();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sinh_7bb598() {
+  float arg_0 = 1.0f;
+  float res = sinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_7bb598();
+  v.tint_symbol = sinh_7bb598();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_7bb598();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sinh_7bb598() {
   float arg_0 = 1.0f;
   float res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_7bb598();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sinh_7bb598() {
-  float arg_0 = 1.0f;
-  float res = sinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_7bb598();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_7bb598();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_7bb598();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.glsl
index 80abb81..a1f16a4 100644
--- a/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/924f19.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sinh_924f19() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_924f19();
+  v.tint_symbol = sinh_924f19();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_924f19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_924f19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sinh_924f19() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_924f19();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_924f19();
+  v.tint_symbol = sinh_924f19();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_924f19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sinh_924f19() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_924f19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_924f19();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_924f19();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.glsl
index 502b0d6..077dcde 100644
--- a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_9c1092() {
+  vec2 res = vec2(1.17520117759704589844f);
+}
+void main() {
+  sinh_9c1092();
+}
+#version 310 es
+
+void sinh_9c1092() {
+  vec2 res = vec2(1.17520117759704589844f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_9c1092();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_9c1092() {
   vec2 res = vec2(1.17520117759704589844f);
 }
-void main() {
-  sinh_9c1092();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_9c1092();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_9c1092();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_9c1092() {
-  vec2 res = vec2(1.17520117759704589844f);
-}
 void main() {
-  sinh_9c1092();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_9c1092();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_9c1092();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_9c1092() {
-  vec2 res = vec2(1.17520117759704589844f);
-}
-void main() {
-  sinh_9c1092();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_9c1092();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_9c1092();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.glsl
index 9aae8d2..1733332 100644
--- a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_a3da7c() {
+  vec4 res = vec4(1.17520117759704589844f);
+}
+void main() {
+  sinh_a3da7c();
+}
+#version 310 es
+
+void sinh_a3da7c() {
+  vec4 res = vec4(1.17520117759704589844f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_a3da7c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_a3da7c() {
   vec4 res = vec4(1.17520117759704589844f);
 }
-void main() {
-  sinh_a3da7c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_a3da7c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_a3da7c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_a3da7c() {
-  vec4 res = vec4(1.17520117759704589844f);
-}
 void main() {
-  sinh_a3da7c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_a3da7c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_a3da7c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_a3da7c() {
-  vec4 res = vec4(1.17520117759704589844f);
-}
-void main() {
-  sinh_a3da7c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_a3da7c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_a3da7c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.glsl
index 177407e..a526f96 100644
--- a/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/b9860e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 sinh_b9860e() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_b9860e();
+  v.tint_symbol = sinh_b9860e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sinh_b9860e() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = sinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_b9860e();
+  v.tint_symbol = sinh_b9860e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_b9860e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sinh_b9860e() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_b9860e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sinh_b9860e() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = sinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_b9860e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_b9860e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_b9860e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.glsl
index be50e3c..fd6d716 100644
--- a/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/ba7e25.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sinh_ba7e25() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_ba7e25();
+  v.tint_symbol = sinh_ba7e25();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_ba7e25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sinh_ba7e25() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_ba7e25();
+  v.tint_symbol = sinh_ba7e25();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_ba7e25();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sinh_ba7e25() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_ba7e25();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_ba7e25();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.glsl
index 69b1191..1c21cac 100644
--- a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sinh_c4df74() {
+  float res = 1.17520117759704589844f;
+}
+void main() {
+  sinh_c4df74();
+}
+#version 310 es
+
+void sinh_c4df74() {
+  float res = 1.17520117759704589844f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sinh_c4df74();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sinh_c4df74() {
   float res = 1.17520117759704589844f;
 }
-void main() {
-  sinh_c4df74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_c4df74();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sinh_c4df74();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_c4df74() {
-  float res = 1.17520117759704589844f;
-}
 void main() {
-  sinh_c4df74();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_c4df74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_c4df74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sinh_c4df74() {
-  float res = 1.17520117759704589844f;
-}
-void main() {
-  sinh_c4df74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sinh_c4df74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sinh_c4df74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.glsl
index 03db81e..0aa008c 100644
--- a/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sinh/c9a5eb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 sinh_c9a5eb() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = sinh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sinh_c9a5eb();
+  v.tint_symbol = sinh_c9a5eb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sinh_c9a5eb() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = sinh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sinh_c9a5eb();
+  v.tint_symbol = sinh_c9a5eb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_c9a5eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sinh_c9a5eb() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = sinh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sinh_c9a5eb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sinh_c9a5eb() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = sinh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sinh_c9a5eb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sinh_c9a5eb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sinh_c9a5eb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.glsl
index e191999..e2c9caf 100644
--- a/test/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/0c481b.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_0c481b() {
+  vec2 res = vec2(0.5f);
+}
+void main() {
+  smoothstep_0c481b();
+}
+#version 310 es
+
+void smoothstep_0c481b() {
+  vec2 res = vec2(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_0c481b();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_0c481b() {
   vec2 res = vec2(0.5f);
 }
-void main() {
-  smoothstep_0c481b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c481b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_0c481b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c481b() {
-  vec2 res = vec2(0.5f);
-}
 void main() {
-  smoothstep_0c481b();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c481b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c481b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c481b() {
-  vec2 res = vec2(0.5f);
-}
-void main() {
-  smoothstep_0c481b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c481b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c481b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.glsl
index f740d57..a3ea126 100644
--- a/test/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/0c4ffc.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_0c4ffc() {
+  vec4 res = vec4(0.5f);
+}
+void main() {
+  smoothstep_0c4ffc();
+}
+#version 310 es
+
+void smoothstep_0c4ffc() {
+  vec4 res = vec4(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_0c4ffc();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_0c4ffc() {
   vec4 res = vec4(0.5f);
 }
-void main() {
-  smoothstep_0c4ffc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c4ffc();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_0c4ffc();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c4ffc() {
-  vec4 res = vec4(0.5f);
-}
 void main() {
-  smoothstep_0c4ffc();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c4ffc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c4ffc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_0c4ffc() {
-  vec4 res = vec4(0.5f);
-}
-void main() {
-  smoothstep_0c4ffc();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_0c4ffc();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_0c4ffc();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.glsl
index 33d109f..672a2c8 100644
--- a/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/12c031.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 smoothstep_12c031() {
   f16vec2 arg_0 = f16vec2(2.0hf);
   f16vec2 arg_1 = f16vec2(4.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_12c031();
+  v.tint_symbol = smoothstep_12c031();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_12c031();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 smoothstep_12c031() {
   f16vec2 arg_0 = f16vec2(2.0hf);
   f16vec2 arg_1 = f16vec2(4.0hf);
@@ -58,38 +32,19 @@
   f16vec2 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_12c031();
+  v.tint_symbol = smoothstep_12c031();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_12c031();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 smoothstep_12c031() {
   f16vec2 arg_0 = f16vec2(2.0hf);
   f16vec2 arg_1 = f16vec2(4.0hf);
@@ -97,25 +52,17 @@
   f16vec2 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_12c031();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_12c031();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.glsl
index 7ffc3c1..6e20eac 100644
--- a/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/392c19.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 smoothstep_392c19() {
   vec2 arg_0 = vec2(2.0f);
   vec2 arg_1 = vec2(4.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_392c19();
+  v.tint_symbol = smoothstep_392c19();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_392c19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 smoothstep_392c19() {
   vec2 arg_0 = vec2(2.0f);
   vec2 arg_1 = vec2(4.0f);
@@ -56,37 +30,18 @@
   vec2 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_392c19();
+  v.tint_symbol = smoothstep_392c19();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_392c19();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 smoothstep_392c19() {
   vec2 arg_0 = vec2(2.0f);
   vec2 arg_1 = vec2(4.0f);
@@ -94,25 +49,17 @@
   vec2 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_392c19();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_392c19();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.glsl
index fe186cf..1c4f8d6 100644
--- a/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/40864c.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 smoothstep_40864c() {
   vec4 arg_0 = vec4(2.0f);
   vec4 arg_1 = vec4(4.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_40864c();
+  v.tint_symbol = smoothstep_40864c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_40864c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 smoothstep_40864c() {
   vec4 arg_0 = vec4(2.0f);
   vec4 arg_1 = vec4(4.0f);
@@ -56,37 +30,18 @@
   vec4 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_40864c();
+  v.tint_symbol = smoothstep_40864c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_40864c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 smoothstep_40864c() {
   vec4 arg_0 = vec4(2.0f);
   vec4 arg_1 = vec4(4.0f);
@@ -94,25 +49,17 @@
   vec4 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_40864c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_40864c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.glsl
index cca7c5a..ebe2299 100644
--- a/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/586e12.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t smoothstep_586e12() {
   float16_t arg_0 = 2.0hf;
   float16_t arg_1 = 4.0hf;
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_586e12();
+  v.tint_symbol = smoothstep_586e12();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_586e12();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t smoothstep_586e12() {
   float16_t arg_0 = 2.0hf;
   float16_t arg_1 = 4.0hf;
@@ -58,38 +32,19 @@
   float16_t res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_586e12();
+  v.tint_symbol = smoothstep_586e12();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_586e12();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t smoothstep_586e12() {
   float16_t arg_0 = 2.0hf;
   float16_t arg_1 = 4.0hf;
@@ -97,25 +52,17 @@
   float16_t res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_586e12();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_586e12();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.glsl
index beadacd..99a19ed 100644
--- a/test/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/66e4bd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_66e4bd() {
+  vec3 res = vec3(0.5f);
+}
+void main() {
+  smoothstep_66e4bd();
+}
+#version 310 es
+
+void smoothstep_66e4bd() {
+  vec3 res = vec3(0.5f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_66e4bd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_66e4bd() {
   vec3 res = vec3(0.5f);
 }
-void main() {
-  smoothstep_66e4bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_66e4bd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_66e4bd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_66e4bd() {
-  vec3 res = vec3(0.5f);
-}
 void main() {
-  smoothstep_66e4bd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_66e4bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_66e4bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_66e4bd() {
-  vec3 res = vec3(0.5f);
-}
-void main() {
-  smoothstep_66e4bd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_66e4bd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_66e4bd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.glsl
index eef2131..fc39983 100644
--- a/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/6c4975.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float smoothstep_6c4975() {
   float arg_0 = 2.0f;
   float arg_1 = 4.0f;
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_6c4975();
+  v.tint_symbol = smoothstep_6c4975();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6c4975();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float smoothstep_6c4975() {
   float arg_0 = 2.0f;
   float arg_1 = 4.0f;
@@ -56,37 +30,18 @@
   float res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_6c4975();
+  v.tint_symbol = smoothstep_6c4975();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6c4975();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float smoothstep_6c4975() {
   float arg_0 = 2.0f;
   float arg_1 = 4.0f;
@@ -94,25 +49,17 @@
   float res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6c4975();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_6c4975();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.glsl
index 2806979..276b010 100644
--- a/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/6e7a74.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 smoothstep_6e7a74() {
   f16vec3 arg_0 = f16vec3(2.0hf);
   f16vec3 arg_1 = f16vec3(4.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_6e7a74();
+  v.tint_symbol = smoothstep_6e7a74();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6e7a74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 smoothstep_6e7a74() {
   f16vec3 arg_0 = f16vec3(2.0hf);
   f16vec3 arg_1 = f16vec3(4.0hf);
@@ -58,38 +32,19 @@
   f16vec3 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_6e7a74();
+  v.tint_symbol = smoothstep_6e7a74();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_6e7a74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 smoothstep_6e7a74() {
   f16vec3 arg_0 = f16vec3(2.0hf);
   f16vec3 arg_1 = f16vec3(4.0hf);
@@ -97,25 +52,17 @@
   f16vec3 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_6e7a74();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_6e7a74();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.glsl
index 33fc9d0..e19491d 100644
--- a/test/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/a80fff.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void smoothstep_a80fff() {
+  float res = 0.5f;
+}
+void main() {
+  smoothstep_a80fff();
+}
+#version 310 es
+
+void smoothstep_a80fff() {
+  float res = 0.5f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  smoothstep_a80fff();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void smoothstep_a80fff() {
   float res = 0.5f;
 }
-void main() {
-  smoothstep_a80fff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_a80fff();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   smoothstep_a80fff();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_a80fff() {
-  float res = 0.5f;
-}
 void main() {
-  smoothstep_a80fff();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_a80fff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_a80fff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void smoothstep_a80fff() {
-  float res = 0.5f;
-}
-void main() {
-  smoothstep_a80fff();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  smoothstep_a80fff();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  smoothstep_a80fff();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.glsl
index 96fa3a9..4f028f9 100644
--- a/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/aad1db.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 smoothstep_aad1db() {
   vec3 arg_0 = vec3(2.0f);
   vec3 arg_1 = vec3(4.0f);
@@ -19,36 +15,14 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_aad1db();
+  v.tint_symbol = smoothstep_aad1db();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_aad1db();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 smoothstep_aad1db() {
   vec3 arg_0 = vec3(2.0f);
   vec3 arg_1 = vec3(4.0f);
@@ -56,37 +30,18 @@
   vec3 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_aad1db();
+  v.tint_symbol = smoothstep_aad1db();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_aad1db();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 smoothstep_aad1db() {
   vec3 arg_0 = vec3(2.0f);
   vec3 arg_1 = vec3(4.0f);
@@ -94,25 +49,17 @@
   vec3 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_aad1db();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_aad1db();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.glsl
index 0c4061a..7ef249f 100644
--- a/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/smoothstep/c43ebd.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 smoothstep_c43ebd() {
   f16vec4 arg_0 = f16vec4(2.0hf);
   f16vec4 arg_1 = f16vec4(4.0hf);
@@ -20,37 +16,15 @@
   return res;
 }
 void main() {
-  prevent_dce = smoothstep_c43ebd();
+  v.tint_symbol = smoothstep_c43ebd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_c43ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 smoothstep_c43ebd() {
   f16vec4 arg_0 = f16vec4(2.0hf);
   f16vec4 arg_1 = f16vec4(4.0hf);
@@ -58,38 +32,19 @@
   f16vec4 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = smoothstep_c43ebd();
+  v.tint_symbol = smoothstep_c43ebd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = smoothstep_c43ebd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 smoothstep_c43ebd() {
   f16vec4 arg_0 = f16vec4(2.0hf);
   f16vec4 arg_1 = f16vec4(4.0hf);
@@ -97,25 +52,17 @@
   f16vec4 res = smoothstep(arg_0, arg_1, arg_2);
   return res;
 }
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = smoothstep_c43ebd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = smoothstep_c43ebd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.glsl
index f3c7ff0..0b0fcb0 100644
--- a/test/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/072192.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_072192() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  sqrt_072192();
+}
+#version 310 es
+
+void sqrt_072192() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_072192();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_072192() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  sqrt_072192();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_072192();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_072192();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_072192() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  sqrt_072192();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_072192();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_072192();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_072192() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  sqrt_072192();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_072192();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_072192();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.glsl
index 3744551..fa717e0 100644
--- a/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/20c74e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float sqrt_20c74e() {
   float arg_0 = 1.0f;
   float res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_20c74e();
+  v.tint_symbol = sqrt_20c74e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float sqrt_20c74e() {
+  float arg_0 = 1.0f;
+  float res = sqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_20c74e();
+  v.tint_symbol = sqrt_20c74e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_20c74e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float sqrt_20c74e() {
   float arg_0 = 1.0f;
   float res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_20c74e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float sqrt_20c74e() {
-  float arg_0 = 1.0f;
-  float res = sqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_20c74e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_20c74e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_20c74e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.glsl
index 6d0cd90..48c80ba 100644
--- a/test/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/4ac2c5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_4ac2c5() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  sqrt_4ac2c5();
+}
+#version 310 es
+
+void sqrt_4ac2c5() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_4ac2c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_4ac2c5() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  sqrt_4ac2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_4ac2c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_4ac2c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_4ac2c5() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  sqrt_4ac2c5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_4ac2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_4ac2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_4ac2c5() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  sqrt_4ac2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_4ac2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_4ac2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.glsl
index 0f853a3..2b446c1 100644
--- a/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/803d1c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sqrt_803d1c() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_803d1c();
+  v.tint_symbol = sqrt_803d1c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_803d1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 sqrt_803d1c() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_803d1c();
+  v.tint_symbol = sqrt_803d1c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_803d1c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 sqrt_803d1c() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_803d1c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_803d1c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.glsl
index 9d64ac2..1432394 100644
--- a/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/895a0c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sqrt_895a0c() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_895a0c();
+  v.tint_symbol = sqrt_895a0c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_895a0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 sqrt_895a0c() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_895a0c();
+  v.tint_symbol = sqrt_895a0c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_895a0c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 sqrt_895a0c() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_895a0c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_895a0c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.glsl
index 793cd5f..104575a 100644
--- a/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/8c7024.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 sqrt_8c7024() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_8c7024();
+  v.tint_symbol = sqrt_8c7024();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 sqrt_8c7024() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = sqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_8c7024();
+  v.tint_symbol = sqrt_8c7024();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_8c7024();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 sqrt_8c7024() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_8c7024();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 sqrt_8c7024() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = sqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_8c7024();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_8c7024();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_8c7024();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.glsl
index e11044e..3220a3c 100644
--- a/test/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/8da177.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_8da177() {
+  float res = 1.0f;
+}
+void main() {
+  sqrt_8da177();
+}
+#version 310 es
+
+void sqrt_8da177() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_8da177();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_8da177() {
   float res = 1.0f;
 }
-void main() {
-  sqrt_8da177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_8da177();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_8da177();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_8da177() {
-  float res = 1.0f;
-}
 void main() {
-  sqrt_8da177();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_8da177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_8da177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_8da177() {
-  float res = 1.0f;
-}
-void main() {
-  sqrt_8da177();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_8da177();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_8da177();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.glsl
index 11cbc1e..72889da 100644
--- a/test/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/9c5cbe.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void sqrt_9c5cbe() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  sqrt_9c5cbe();
+}
+#version 310 es
+
+void sqrt_9c5cbe() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  sqrt_9c5cbe();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void sqrt_9c5cbe() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  sqrt_9c5cbe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_9c5cbe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   sqrt_9c5cbe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_9c5cbe() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  sqrt_9c5cbe();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_9c5cbe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_9c5cbe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void sqrt_9c5cbe() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  sqrt_9c5cbe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  sqrt_9c5cbe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  sqrt_9c5cbe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.glsl
index 2d0d24a..94653e0 100644
--- a/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/aa0d7a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 sqrt_aa0d7a() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_aa0d7a();
+  v.tint_symbol = sqrt_aa0d7a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 sqrt_aa0d7a() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = sqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_aa0d7a();
+  v.tint_symbol = sqrt_aa0d7a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_aa0d7a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 sqrt_aa0d7a() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_aa0d7a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 sqrt_aa0d7a() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = sqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_aa0d7a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_aa0d7a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_aa0d7a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.glsl
index 3710cc3..2d93991 100644
--- a/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/d9ab4d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sqrt_d9ab4d() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_d9ab4d();
+  v.tint_symbol = sqrt_d9ab4d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_d9ab4d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 sqrt_d9ab4d() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_d9ab4d();
+  v.tint_symbol = sqrt_d9ab4d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_d9ab4d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 sqrt_d9ab4d() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_d9ab4d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_d9ab4d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.glsl
index fe7a8cc..4e33cf8 100644
--- a/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/ec33e9.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sqrt_ec33e9() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_ec33e9();
+  v.tint_symbol = sqrt_ec33e9();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_ec33e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t sqrt_ec33e9() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_ec33e9();
+  v.tint_symbol = sqrt_ec33e9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_ec33e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t sqrt_ec33e9() {
   float16_t arg_0 = 1.0hf;
   float16_t res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_ec33e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_ec33e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.glsl
index a43ad2e..9eb4d57 100644
--- a/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/sqrt/f8c59a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 sqrt_f8c59a() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = sqrt(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = sqrt_f8c59a();
+  v.tint_symbol = sqrt_f8c59a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 sqrt_f8c59a() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = sqrt(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = sqrt_f8c59a();
+  v.tint_symbol = sqrt_f8c59a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_f8c59a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 sqrt_f8c59a() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = sqrt(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = sqrt_f8c59a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 sqrt_f8c59a() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = sqrt(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = sqrt_f8c59a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = sqrt_f8c59a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = sqrt_f8c59a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.glsl
index 743876b..336a766 100644
--- a/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/07cb06.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 step_07cb06() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = step_07cb06();
+  v.tint_symbol = step_07cb06();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_07cb06();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_07cb06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 step_07cb06() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_07cb06();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_07cb06();
+  v.tint_symbol = step_07cb06();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_07cb06();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 step_07cb06() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 arg_1 = f16vec2(1.0hf);
   f16vec2 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_07cb06();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_07cb06();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_07cb06();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.glsl
index cc980d8..4cab40e 100644
--- a/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/0b073b.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float step_0b073b() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = step_0b073b();
+  v.tint_symbol = step_0b073b();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_0b073b();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_0b073b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float step_0b073b() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_0b073b();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_0b073b();
+  v.tint_symbol = step_0b073b();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_0b073b();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float step_0b073b() {
   float arg_0 = 1.0f;
   float arg_1 = 1.0f;
   float res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_0b073b();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_0b073b();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_0b073b();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.glsl
index 3d26372..b1781c4 100644
--- a/test/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/19accd.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 step_19accd() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = step_19accd();
+  v.tint_symbol = step_19accd();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_19accd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_19accd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 step_19accd() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_19accd();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_19accd();
+  v.tint_symbol = step_19accd();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_19accd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 step_19accd() {
   vec2 arg_0 = vec2(1.0f);
   vec2 arg_1 = vec2(1.0f);
   vec2 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_19accd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_19accd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_19accd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/334303.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/334303.wgsl.expected.ir.glsl
index ff998f4..1b45896 100644
--- a/test/tint/builtins/gen/var/step/334303.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/334303.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 step_334303() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = step_334303();
+  v.tint_symbol = step_334303();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_334303();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_334303();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 step_334303() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_334303();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_334303();
+  v.tint_symbol = step_334303();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_334303();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 step_334303() {
   vec3 arg_0 = vec3(1.0f);
   vec3 arg_1 = vec3(1.0f);
   vec3 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_334303();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_334303();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_334303();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.glsl
index d701f8b..6cc8062 100644
--- a/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_38cd79() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  step_38cd79();
+}
+#version 310 es
+
+void step_38cd79() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_38cd79();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_38cd79() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  step_38cd79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_38cd79();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_38cd79();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_38cd79() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  step_38cd79();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_38cd79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_38cd79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_38cd79() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  step_38cd79();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_38cd79();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_38cd79();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/step/415879.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/415879.wgsl.expected.ir.glsl
index aa27fee..ae67f8f 100644
--- a/test/tint/builtins/gen/var/step/415879.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/415879.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_415879() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  step_415879();
+}
+#version 310 es
+
+void step_415879() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_415879();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_415879() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  step_415879();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_415879();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_415879();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_415879() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  step_415879();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_415879();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_415879();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_415879() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  step_415879();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_415879();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_415879();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.glsl
index 03ccd46..c047923 100644
--- a/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/630d07.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t step_630d07() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = step_630d07();
+  v.tint_symbol = step_630d07();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_630d07();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_630d07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t step_630d07() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_630d07();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_630d07();
+  v.tint_symbol = step_630d07();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_630d07();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t step_630d07() {
   float16_t arg_0 = 1.0hf;
   float16_t arg_1 = 1.0hf;
   float16_t res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_630d07();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_630d07();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_630d07();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.glsl
index 1eae3d6..b87d3e2 100644
--- a/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_7c7e5c() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  step_7c7e5c();
+}
+#version 310 es
+
+void step_7c7e5c() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_7c7e5c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_7c7e5c() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  step_7c7e5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_7c7e5c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_7c7e5c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_7c7e5c() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  step_7c7e5c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_7c7e5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_7c7e5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_7c7e5c() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  step_7c7e5c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_7c7e5c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_7c7e5c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.glsl
index b078219..7092596 100644
--- a/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/baa320.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 step_baa320() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = step_baa320();
+  v.tint_symbol = step_baa320();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_baa320();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_baa320();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 step_baa320() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_baa320();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_baa320();
+  v.tint_symbol = step_baa320();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_baa320();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 step_baa320() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 arg_1 = f16vec4(1.0hf);
   f16vec4 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_baa320();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_baa320();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_baa320();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.glsl
index 565919b..ea1855c 100644
--- a/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/cc6b61.wgsl.expected.ir.glsl
@@ -1,17 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 step_cc6b61() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
@@ -19,100 +15,51 @@
   return res;
 }
 void main() {
-  prevent_dce = step_cc6b61();
+  v.tint_symbol = step_cc6b61();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_cc6b61();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_cc6b61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 step_cc6b61() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_cc6b61();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_cc6b61();
+  v.tint_symbol = step_cc6b61();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_cc6b61();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'main' : function already has a body 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 step_cc6b61() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 arg_1 = f16vec3(1.0hf);
   f16vec3 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_cc6b61();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_cc6b61();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_cc6b61();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.glsl
index 657481d..e079dfb 100644
--- a/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/e2b337.wgsl.expected.ir.glsl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 step_e2b337() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
@@ -18,98 +14,49 @@
   return res;
 }
 void main() {
-  prevent_dce = step_e2b337();
+  v.tint_symbol = step_e2b337();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_e2b337();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_e2b337();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 step_e2b337() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_e2b337();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = step_e2b337();
+  v.tint_symbol = step_e2b337();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = step_e2b337();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 step_e2b337() {
   vec4 arg_0 = vec4(1.0f);
   vec4 arg_1 = vec4(1.0f);
   vec4 res = step(arg_0, arg_1);
   return res;
 }
-void main() {
-  prevent_dce = step_e2b337();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = step_e2b337();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = step_e2b337();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.glsl
index 497d392..c19ef16 100644
--- a/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void step_f9b70c() {
+  float res = 1.0f;
+}
+void main() {
+  step_f9b70c();
+}
+#version 310 es
+
+void step_f9b70c() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  step_f9b70c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void step_f9b70c() {
   float res = 1.0f;
 }
-void main() {
-  step_f9b70c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_f9b70c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   step_f9b70c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_f9b70c() {
-  float res = 1.0f;
-}
 void main() {
-  step_f9b70c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_f9b70c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_f9b70c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void step_f9b70c() {
-  float res = 1.0f;
-}
-void main() {
-  step_f9b70c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  step_f9b70c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  step_f9b70c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.glsl
index af351e9..0626ce4 100644
--- a/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/244e2a.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 tan_244e2a() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_244e2a();
+  v.tint_symbol = tan_244e2a();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 tan_244e2a() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = tan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_244e2a();
+  v.tint_symbol = tan_244e2a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_244e2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 tan_244e2a() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_244e2a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_244e2a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_244e2a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 tan_244e2a() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = tan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tan_244e2a();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_244e2a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_244e2a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.glsl
index 8daa360..d5c3b43 100644
--- a/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/2f030e.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float tan_2f030e() {
   float arg_0 = 1.0f;
   float res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_2f030e();
+  v.tint_symbol = tan_2f030e();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float tan_2f030e() {
+  float arg_0 = 1.0f;
+  float res = tan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_2f030e();
+  v.tint_symbol = tan_2f030e();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_2f030e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float tan_2f030e() {
   float arg_0 = 1.0f;
   float res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_2f030e();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_2f030e();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_2f030e();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float tan_2f030e() {
-  float arg_0 = 1.0f;
-  float res = tan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tan_2f030e();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_2f030e();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_2f030e();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.glsl
index 47eb319..600b075 100644
--- a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_311400() {
+  float res = 1.55740773677825927734f;
+}
+void main() {
+  tan_311400();
+}
+#version 310 es
+
+void tan_311400() {
+  float res = 1.55740773677825927734f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_311400();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_311400() {
   float res = 1.55740773677825927734f;
 }
-void main() {
-  tan_311400();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_311400();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_311400();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_311400() {
-  float res = 1.55740773677825927734f;
-}
 void main() {
-  tan_311400();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_311400();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_311400();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_311400() {
-  float res = 1.55740773677825927734f;
-}
-void main() {
-  tan_311400();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_311400();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_311400();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.glsl
index d9851ac..744ef16 100644
--- a/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/539e54.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tan_539e54() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_539e54();
+  v.tint_symbol = tan_539e54();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_539e54();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_539e54();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tan_539e54() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_539e54();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_539e54();
+  v.tint_symbol = tan_539e54();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_539e54();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 tan_539e54() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_539e54();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_539e54();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_539e54();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.glsl
index 5bb5992..67635ef 100644
--- a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_7be368() {
+  vec2 res = vec2(1.55740773677825927734f);
+}
+void main() {
+  tan_7be368();
+}
+#version 310 es
+
+void tan_7be368() {
+  vec2 res = vec2(1.55740773677825927734f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_7be368();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_7be368() {
   vec2 res = vec2(1.55740773677825927734f);
 }
-void main() {
-  tan_7be368();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_7be368();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_7be368();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_7be368() {
-  vec2 res = vec2(1.55740773677825927734f);
-}
 void main() {
-  tan_7be368();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_7be368();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_7be368();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_7be368() {
-  vec2 res = vec2(1.55740773677825927734f);
-}
-void main() {
-  tan_7be368();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_7be368();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_7be368();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.glsl
index 35b450f..90f68e5 100644
--- a/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/7ea104.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 tan_7ea104() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_7ea104();
+  v.tint_symbol = tan_7ea104();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 tan_7ea104() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = tan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_7ea104();
+  v.tint_symbol = tan_7ea104();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_7ea104();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 tan_7ea104() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_7ea104();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_7ea104();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_7ea104();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 tan_7ea104() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = tan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tan_7ea104();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_7ea104();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_7ea104();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.glsl
index 80000f6..4988143 100644
--- a/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/8ce3e9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 tan_8ce3e9() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_8ce3e9();
+  v.tint_symbol = tan_8ce3e9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 tan_8ce3e9() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = tan(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_8ce3e9();
+  v.tint_symbol = tan_8ce3e9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_8ce3e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 tan_8ce3e9() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_8ce3e9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 tan_8ce3e9() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = tan(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tan_8ce3e9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_8ce3e9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_8ce3e9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.glsl
index c9a6409..609345c 100644
--- a/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/9f7c9c.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tan_9f7c9c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_9f7c9c();
+  v.tint_symbol = tan_9f7c9c();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_9f7c9c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tan_9f7c9c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_9f7c9c();
+  v.tint_symbol = tan_9f7c9c();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_9f7c9c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 tan_9f7c9c() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_9f7c9c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_9f7c9c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.glsl
index 30f1985..fca70d2 100644
--- a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_a0966f() {
+  vec4 res = vec4(1.55740773677825927734f);
+}
+void main() {
+  tan_a0966f();
+}
+#version 310 es
+
+void tan_a0966f() {
+  vec4 res = vec4(1.55740773677825927734f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_a0966f();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_a0966f() {
   vec4 res = vec4(1.55740773677825927734f);
 }
-void main() {
-  tan_a0966f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_a0966f();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_a0966f();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_a0966f() {
-  vec4 res = vec4(1.55740773677825927734f);
-}
 void main() {
-  tan_a0966f();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_a0966f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_a0966f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_a0966f() {
-  vec4 res = vec4(1.55740773677825927734f);
-}
-void main() {
-  tan_a0966f();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_a0966f();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_a0966f();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.glsl
index 453e57f..3c5af49 100644
--- a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tan_ae26ae() {
+  vec3 res = vec3(1.55740773677825927734f);
+}
+void main() {
+  tan_ae26ae();
+}
+#version 310 es
+
+void tan_ae26ae() {
+  vec3 res = vec3(1.55740773677825927734f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tan_ae26ae();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tan_ae26ae() {
   vec3 res = vec3(1.55740773677825927734f);
 }
-void main() {
-  tan_ae26ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_ae26ae();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tan_ae26ae();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_ae26ae() {
-  vec3 res = vec3(1.55740773677825927734f);
-}
 void main() {
-  tan_ae26ae();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_ae26ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_ae26ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tan_ae26ae() {
-  vec3 res = vec3(1.55740773677825927734f);
-}
-void main() {
-  tan_ae26ae();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tan_ae26ae();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tan_ae26ae();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.glsl
index b051583..8b0e166 100644
--- a/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/d4d491.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tan_d4d491() {
   float16_t arg_0 = 1.0hf;
   float16_t res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_d4d491();
+  v.tint_symbol = tan_d4d491();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_d4d491();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_d4d491();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tan_d4d491() {
   float16_t arg_0 = 1.0hf;
   float16_t res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_d4d491();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_d4d491();
+  v.tint_symbol = tan_d4d491();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_d4d491();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t tan_d4d491() {
   float16_t arg_0 = 1.0hf;
   float16_t res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_d4d491();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_d4d491();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_d4d491();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.glsl
index 50c6231..dad4a59 100644
--- a/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tan/db0456.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tan_db0456() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = tan(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tan_db0456();
+  v.tint_symbol = tan_db0456();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_db0456();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_db0456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tan_db0456() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_db0456();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tan_db0456();
+  v.tint_symbol = tan_db0456();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tan_db0456();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 tan_db0456() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = tan(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tan_db0456();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tan_db0456();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tan_db0456();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.glsl
index 58fd9ab..a700061 100644
--- a/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/06a4fe.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tanh_06a4fe() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_06a4fe();
+  v.tint_symbol = tanh_06a4fe();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_06a4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 tanh_06a4fe() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_06a4fe();
+  v.tint_symbol = tanh_06a4fe();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_06a4fe();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 tanh_06a4fe() {
   f16vec3 arg_0 = f16vec3(1.0hf);
   f16vec3 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_06a4fe();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_06a4fe();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.glsl
index 63d9b15..6cb14cf 100644
--- a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_313aa1() {
+  float res = 0.76159417629241943359f;
+}
+void main() {
+  tanh_313aa1();
+}
+#version 310 es
+
+void tanh_313aa1() {
+  float res = 0.76159417629241943359f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_313aa1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_313aa1() {
   float res = 0.76159417629241943359f;
 }
-void main() {
-  tanh_313aa1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_313aa1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_313aa1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_313aa1() {
-  float res = 0.76159417629241943359f;
-}
 void main() {
-  tanh_313aa1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_313aa1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_313aa1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_313aa1() {
-  float res = 0.76159417629241943359f;
-}
-void main() {
-  tanh_313aa1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_313aa1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_313aa1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.glsl
index 15f7c73..ff864aa 100644
--- a/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/5663c5.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 tanh_5663c5() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_5663c5();
+  v.tint_symbol = tanh_5663c5();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 tanh_5663c5() {
+  vec4 arg_0 = vec4(1.0f);
+  vec4 res = tanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_5663c5();
+  v.tint_symbol = tanh_5663c5();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5663c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 tanh_5663c5() {
   vec4 arg_0 = vec4(1.0f);
   vec4 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_5663c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 tanh_5663c5() {
-  vec4 arg_0 = vec4(1.0f);
-  vec4 res = tanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_5663c5();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5663c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5663c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.glsl
index d1b5a11..b634376 100644
--- a/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/5724b3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 tanh_5724b3() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_5724b3();
+  v.tint_symbol = tanh_5724b3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 tanh_5724b3() {
+  vec2 arg_0 = vec2(1.0f);
+  vec2 res = tanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_5724b3();
+  v.tint_symbol = tanh_5724b3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5724b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 tanh_5724b3() {
   vec2 arg_0 = vec2(1.0f);
   vec2 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_5724b3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 tanh_5724b3() {
-  vec2 arg_0 = vec2(1.0f);
-  vec2 res = tanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_5724b3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5724b3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5724b3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.glsl
index f967f9e..f2eb1c8 100644
--- a/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/5b19af.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tanh_5b19af() {
   float16_t arg_0 = 1.0hf;
   float16_t res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_5b19af();
+  v.tint_symbol = tanh_5b19af();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5b19af();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5b19af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t tanh_5b19af() {
   float16_t arg_0 = 1.0hf;
   float16_t res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_5b19af();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_5b19af();
+  v.tint_symbol = tanh_5b19af();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_5b19af();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t tanh_5b19af() {
   float16_t arg_0 = 1.0hf;
   float16_t res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_5b19af();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_5b19af();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_5b19af();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.glsl
index 1467d1c..6f08f81 100644
--- a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_6289fd() {
+  vec3 res = vec3(0.76159417629241943359f);
+}
+void main() {
+  tanh_6289fd();
+}
+#version 310 es
+
+void tanh_6289fd() {
+  vec3 res = vec3(0.76159417629241943359f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_6289fd();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_6289fd() {
   vec3 res = vec3(0.76159417629241943359f);
 }
-void main() {
-  tanh_6289fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_6289fd();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_6289fd();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_6289fd() {
-  vec3 res = vec3(0.76159417629241943359f);
-}
 void main() {
-  tanh_6289fd();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_6289fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_6289fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_6289fd() {
-  vec3 res = vec3(0.76159417629241943359f);
-}
-void main() {
-  tanh_6289fd();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_6289fd();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_6289fd();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.glsl
index 37209c6..245db08 100644
--- a/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/6d105a.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tanh_6d105a() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_6d105a();
+  v.tint_symbol = tanh_6d105a();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_6d105a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_6d105a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 tanh_6d105a() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_6d105a();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_6d105a();
+  v.tint_symbol = tanh_6d105a();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_6d105a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 tanh_6d105a() {
   f16vec2 arg_0 = f16vec2(1.0hf);
   f16vec2 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_6d105a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_6d105a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_6d105a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.glsl
index 5f91afd..ac5436b 100644
--- a/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/9f9fb9.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 tanh_9f9fb9() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_9f9fb9();
+  v.tint_symbol = tanh_9f9fb9();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 tanh_9f9fb9() {
+  vec3 arg_0 = vec3(1.0f);
+  vec3 res = tanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_9f9fb9();
+  v.tint_symbol = tanh_9f9fb9();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_9f9fb9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 tanh_9f9fb9() {
   vec3 arg_0 = vec3(1.0f);
   vec3 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_9f9fb9();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 tanh_9f9fb9() {
-  vec3 arg_0 = vec3(1.0f);
-  vec3 res = tanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_9f9fb9();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_9f9fb9();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_9f9fb9();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.glsl
index 0c4670b..99832a9 100644
--- a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_ac5d33() {
+  vec4 res = vec4(0.76159417629241943359f);
+}
+void main() {
+  tanh_ac5d33();
+}
+#version 310 es
+
+void tanh_ac5d33() {
+  vec4 res = vec4(0.76159417629241943359f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_ac5d33();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_ac5d33() {
   vec4 res = vec4(0.76159417629241943359f);
 }
-void main() {
-  tanh_ac5d33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_ac5d33();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_ac5d33();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_ac5d33() {
-  vec4 res = vec4(0.76159417629241943359f);
-}
 void main() {
-  tanh_ac5d33();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_ac5d33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_ac5d33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_ac5d33() {
-  vec4 res = vec4(0.76159417629241943359f);
-}
-void main() {
-  tanh_ac5d33();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_ac5d33();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_ac5d33();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.glsl
index 85be66a..df005f2 100644
--- a/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/c15fdb.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float tanh_c15fdb() {
   float arg_0 = 1.0f;
   float res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_c15fdb();
+  v.tint_symbol = tanh_c15fdb();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float tanh_c15fdb() {
+  float arg_0 = 1.0f;
+  float res = tanh(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_c15fdb();
+  v.tint_symbol = tanh_c15fdb();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_c15fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float tanh_c15fdb() {
   float arg_0 = 1.0f;
   float res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_c15fdb();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float tanh_c15fdb() {
-  float arg_0 = 1.0f;
-  float res = tanh(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = tanh_c15fdb();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_c15fdb();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_c15fdb();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.glsl
index ee7de12..0d5f3aa 100644
--- a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void tanh_c48aa6() {
+  vec2 res = vec2(0.76159417629241943359f);
+}
+void main() {
+  tanh_c48aa6();
+}
+#version 310 es
+
+void tanh_c48aa6() {
+  vec2 res = vec2(0.76159417629241943359f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tanh_c48aa6();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void tanh_c48aa6() {
   vec2 res = vec2(0.76159417629241943359f);
 }
-void main() {
-  tanh_c48aa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_c48aa6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tanh_c48aa6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_c48aa6() {
-  vec2 res = vec2(0.76159417629241943359f);
-}
 void main() {
-  tanh_c48aa6();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_c48aa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_c48aa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void tanh_c48aa6() {
-  vec2 res = vec2(0.76159417629241943359f);
-}
-void main() {
-  tanh_c48aa6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  tanh_c48aa6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tanh_c48aa6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.glsl
index 8e1ae18..dd06ebe 100644
--- a/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/tanh/e8efb3.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tanh_e8efb3() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = tanh(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = tanh_e8efb3();
+  v.tint_symbol = tanh_e8efb3();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_e8efb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 tanh_e8efb3() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = tanh_e8efb3();
+  v.tint_symbol = tanh_e8efb3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = tanh_e8efb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 tanh_e8efb3() {
   f16vec4 arg_0 = f16vec4(1.0hf);
   f16vec4 res = tanh(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = tanh_e8efb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = tanh_e8efb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.glsl
index 0709d10..1606433 100644
--- a/test/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/32dd64.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_32dd64() {
+  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+void main() {
+  transpose_32dd64();
+}
+#version 310 es
+
+void transpose_32dd64() {
+  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_32dd64();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_32dd64() {
   mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
 }
-void main() {
-  transpose_32dd64();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_32dd64();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_32dd64();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_32dd64() {
-  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
 void main() {
-  transpose_32dd64();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_32dd64();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_32dd64();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_32dd64() {
-  mat4x3 res = mat4x3(vec3(1.0f), vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
-void main() {
-  transpose_32dd64();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_32dd64();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_32dd64();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.glsl
index 0780c52..9ed21db 100644
--- a/test/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/553e90.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_553e90() {
+  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
+}
+void main() {
+  transpose_553e90();
+}
+#version 310 es
+
+void transpose_553e90() {
+  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_553e90();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_553e90() {
   mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
 }
-void main() {
-  transpose_553e90();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_553e90();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_553e90();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_553e90() {
-  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
-}
 void main() {
-  transpose_553e90();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_553e90();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_553e90();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_553e90() {
-  mat2x4 res = mat2x4(vec4(1.0f), vec4(1.0f));
-}
-void main() {
-  transpose_553e90();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_553e90();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_553e90();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.glsl
index e7f0b44..f58d140 100644
--- a/test/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/5c133c.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_5c133c() {
+  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+void main() {
+  transpose_5c133c();
+}
+#version 310 es
+
+void transpose_5c133c() {
+  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_5c133c();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_5c133c() {
   mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
 }
-void main() {
-  transpose_5c133c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_5c133c();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_5c133c();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_5c133c() {
-  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
 void main() {
-  transpose_5c133c();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_5c133c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_5c133c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_5c133c() {
-  mat3x4 res = mat3x4(vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
-void main() {
-  transpose_5c133c();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_5c133c();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_5c133c();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.glsl
index 8fb501e..bbf467f 100644
--- a/test/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/66fce8.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_66fce8() {
+  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+void main() {
+  transpose_66fce8();
+}
+#version 310 es
+
+void transpose_66fce8() {
+  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_66fce8();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_66fce8() {
   mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
 }
-void main() {
-  transpose_66fce8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_66fce8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_66fce8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_66fce8() {
-  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
 void main() {
-  transpose_66fce8();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_66fce8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_66fce8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_66fce8() {
-  mat3 res = mat3(vec3(1.0f), vec3(1.0f), vec3(1.0f));
-}
-void main() {
-  transpose_66fce8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_66fce8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_66fce8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.glsl
index 8041e2f..b0ec527 100644
--- a/test/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/70ca11.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_70ca11() {
+  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+void main() {
+  transpose_70ca11();
+}
+#version 310 es
+
+void transpose_70ca11() {
+  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_70ca11();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_70ca11() {
   mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
 }
-void main() {
-  transpose_70ca11();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_70ca11();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_70ca11();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_70ca11() {
-  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
 void main() {
-  transpose_70ca11();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_70ca11();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_70ca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_70ca11() {
-  mat3x2 res = mat3x2(vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
-void main() {
-  transpose_70ca11();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_70ca11();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_70ca11();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.glsl
index 9cb49f1..d59e245 100644
--- a/test/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/7eb2c5.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_7eb2c5() {
+  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
+}
+void main() {
+  transpose_7eb2c5();
+}
+#version 310 es
+
+void transpose_7eb2c5() {
+  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_7eb2c5();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_7eb2c5() {
   mat2 res = mat2(vec2(1.0f), vec2(1.0f));
 }
-void main() {
-  transpose_7eb2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_7eb2c5();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_7eb2c5();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_7eb2c5() {
-  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
-}
 void main() {
-  transpose_7eb2c5();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_7eb2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_7eb2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_7eb2c5() {
-  mat2 res = mat2(vec2(1.0f), vec2(1.0f));
-}
-void main() {
-  transpose_7eb2c5();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_7eb2c5();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_7eb2c5();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.glsl
index a5b39fb..cf902e5 100644
--- a/test/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/84a763.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_84a763() {
+  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+void main() {
+  transpose_84a763();
+}
+#version 310 es
+
+void transpose_84a763() {
+  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_84a763();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_84a763() {
   mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
 }
-void main() {
-  transpose_84a763();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_84a763();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_84a763();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_84a763() {
-  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
 void main() {
-  transpose_84a763();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_84a763();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_84a763();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_84a763() {
-  mat4x2 res = mat4x2(vec2(1.0f), vec2(1.0f), vec2(1.0f), vec2(1.0f));
-}
-void main() {
-  transpose_84a763();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_84a763();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_84a763();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.glsl
index d8d864c..a4fd65e 100644
--- a/test/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/ace596.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_ace596() {
+  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
+}
+void main() {
+  transpose_ace596();
+}
+#version 310 es
+
+void transpose_ace596() {
+  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_ace596();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_ace596() {
   mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
 }
-void main() {
-  transpose_ace596();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_ace596();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_ace596();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_ace596() {
-  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
-}
 void main() {
-  transpose_ace596();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_ace596();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_ace596();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_ace596() {
-  mat2x3 res = mat2x3(vec3(1.0f), vec3(1.0f));
-}
-void main() {
-  transpose_ace596();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_ace596();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_ace596();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.glsl
index b92b502..325104a 100644
--- a/test/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/transpose/dc671a.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void transpose_dc671a() {
+  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+void main() {
+  transpose_dc671a();
+}
+#version 310 es
+
+void transpose_dc671a() {
+  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  transpose_dc671a();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void transpose_dc671a() {
   mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
 }
-void main() {
-  transpose_dc671a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_dc671a();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   transpose_dc671a();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_dc671a() {
-  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
 void main() {
-  transpose_dc671a();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_dc671a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_dc671a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void transpose_dc671a() {
-  mat4 res = mat4(vec4(1.0f), vec4(1.0f), vec4(1.0f), vec4(1.0f));
-}
-void main() {
-  transpose_dc671a();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  transpose_dc671a();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  transpose_dc671a();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.glsl
index 34e2e08..d08d4f4 100644
--- a/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/103ab8.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 trunc_103ab8() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_103ab8();
+  v.tint_symbol = trunc_103ab8();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_103ab8();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_103ab8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec3 prevent_dce;
-};
-
-f16vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec3 tint_symbol;
+} v;
 f16vec3 trunc_103ab8() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_103ab8();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_103ab8();
+  v.tint_symbol = trunc_103ab8();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_103ab8();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec3 prevent_dce;
 };
 
-f16vec3 prevent_dce;
+layout(location = 0) flat out f16vec3 vertex_main_loc0_Output;
 f16vec3 trunc_103ab8() {
   f16vec3 arg_0 = f16vec3(1.5hf);
   f16vec3 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_103ab8();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_103ab8();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec3(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_103ab8();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.glsl
index e7bb6f0..0e4d909 100644
--- a/test/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/117396.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_117396() {
+  vec3 res = vec3(1.0f);
+}
+void main() {
+  trunc_117396();
+}
+#version 310 es
+
+void trunc_117396() {
+  vec3 res = vec3(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_117396();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_117396() {
   vec3 res = vec3(1.0f);
 }
-void main() {
-  trunc_117396();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_117396();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_117396();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_117396() {
-  vec3 res = vec3(1.0f);
-}
 void main() {
-  trunc_117396();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_117396();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_117396();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_117396() {
-  vec3 res = vec3(1.0f);
-}
-void main() {
-  trunc_117396();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_117396();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_117396();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.glsl
index 73246f4..96c7a47 100644
--- a/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/562d05.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
 vec3 trunc_562d05() {
   vec3 arg_0 = vec3(1.5f);
   vec3 res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_562d05();
+  v.tint_symbol = trunc_562d05();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec3 tint_symbol;
+} v;
+vec3 trunc_562d05() {
+  vec3 arg_0 = vec3(1.5f);
+  vec3 res = trunc(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_562d05();
+  v.tint_symbol = trunc_562d05();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_562d05();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec3 prevent_dce;
 };
 
-vec3 prevent_dce;
+layout(location = 0) flat out vec3 vertex_main_loc0_Output;
 vec3 trunc_562d05() {
   vec3 arg_0 = vec3(1.5f);
   vec3 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_562d05();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_562d05();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_562d05();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec3 prevent_dce;
-};
-
-vec3 prevent_dce;
-vec3 trunc_562d05() {
-  vec3 arg_0 = vec3(1.5f);
-  vec3 res = trunc(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_562d05();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_562d05();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec3(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_562d05();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.glsl
index c42cc92..7fbbf86 100644
--- a/test/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/7d6ded.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_7d6ded() {
+  float res = 1.0f;
+}
+void main() {
+  trunc_7d6ded();
+}
+#version 310 es
+
+void trunc_7d6ded() {
+  float res = 1.0f;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_7d6ded();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_7d6ded() {
   float res = 1.0f;
 }
-void main() {
-  trunc_7d6ded();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_7d6ded();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_7d6ded();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_7d6ded() {
-  float res = 1.0f;
-}
 void main() {
-  trunc_7d6ded();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_7d6ded();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_7d6ded();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_7d6ded() {
-  float res = 1.0f;
-}
-void main() {
-  trunc_7d6ded();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_7d6ded();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_7d6ded();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.glsl
index 4f6123a..9597363 100644
--- a/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/a56109.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 trunc_a56109() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_a56109();
+  v.tint_symbol = trunc_a56109();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_a56109();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_a56109();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec2 prevent_dce;
-};
-
-f16vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec2 tint_symbol;
+} v;
 f16vec2 trunc_a56109() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_a56109();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_a56109();
+  v.tint_symbol = trunc_a56109();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_a56109();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec2 prevent_dce;
 };
 
-f16vec2 prevent_dce;
+layout(location = 0) flat out f16vec2 vertex_main_loc0_Output;
 f16vec2 trunc_a56109() {
   f16vec2 arg_0 = f16vec2(1.5hf);
   f16vec2 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_a56109();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_a56109();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec2(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_a56109();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.glsl
index 39f30c0..e312044 100644
--- a/test/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/c12555.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_c12555() {
+  vec2 res = vec2(1.0f);
+}
+void main() {
+  trunc_c12555();
+}
+#version 310 es
+
+void trunc_c12555() {
+  vec2 res = vec2(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_c12555();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_c12555() {
   vec2 res = vec2(1.0f);
 }
-void main() {
-  trunc_c12555();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_c12555();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_c12555();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_c12555() {
-  vec2 res = vec2(1.0f);
-}
 void main() {
-  trunc_c12555();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_c12555();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_c12555();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_c12555() {
-  vec2 res = vec2(1.0f);
-}
-void main() {
-  trunc_c12555();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_c12555();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_c12555();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.glsl
index afc223f..1863b8a 100644
--- a/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/cc2b0d.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t trunc_cc2b0d() {
   float16_t arg_0 = 1.5hf;
   float16_t res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_cc2b0d();
+  v.tint_symbol = trunc_cc2b0d();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_cc2b0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  float16_t prevent_dce;
-};
-
-float16_t prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float16_t tint_symbol;
+} v;
 float16_t trunc_cc2b0d() {
   float16_t arg_0 = 1.5hf;
   float16_t res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_cc2b0d();
+  v.tint_symbol = trunc_cc2b0d();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_cc2b0d();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float16_t prevent_dce;
 };
 
-float16_t prevent_dce;
+layout(location = 0) flat out float16_t vertex_main_loc0_Output;
 float16_t trunc_cc2b0d() {
   float16_t arg_0 = 1.5hf;
   float16_t res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_cc2b0d();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0hf);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_cc2b0d();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.glsl
index 37c4dbd..0f260cb 100644
--- a/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/ce7c17.wgsl.expected.ir.glsl
@@ -1,115 +1,62 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 trunc_ce7c17() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_ce7c17();
+  v.tint_symbol = trunc_ce7c17();
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_ce7c17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
 
-
-struct VertexOutput {
-  vec4 pos;
-  f16vec4 prevent_dce;
-};
-
-f16vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  f16vec4 tint_symbol;
+} v;
 f16vec4 trunc_ce7c17() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_ce7c17();
+  v.tint_symbol = trunc_ce7c17();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_ce7c17();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function already has a body 
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   f16vec4 prevent_dce;
 };
 
-f16vec4 prevent_dce;
+layout(location = 0) flat out f16vec4 vertex_main_loc0_Output;
 f16vec4 trunc_ce7c17() {
   f16vec4 arg_0 = f16vec4(1.5hf);
   f16vec4 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_ce7c17();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), f16vec4(0.0hf));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_ce7c17();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.glsl
index 633d64b..eddde64 100644
--- a/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/e183aa.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 trunc_e183aa() {
   vec4 arg_0 = vec4(1.5f);
   vec4 res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_e183aa();
+  v.tint_symbol = trunc_e183aa();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 trunc_e183aa() {
+  vec4 arg_0 = vec4(1.5f);
+  vec4 res = trunc(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_e183aa();
+  v.tint_symbol = trunc_e183aa();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_e183aa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 trunc_e183aa() {
   vec4 arg_0 = vec4(1.5f);
   vec4 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_e183aa();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 trunc_e183aa() {
-  vec4 arg_0 = vec4(1.5f);
-  vec4 res = trunc(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_e183aa();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_e183aa();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_e183aa();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.glsl
index 4d8c776..bb0b09e 100644
--- a/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/eb83df.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
 float trunc_eb83df() {
   float arg_0 = 1.5f;
   float res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_eb83df();
+  v.tint_symbol = trunc_eb83df();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  float tint_symbol;
+} v;
+float trunc_eb83df() {
+  float arg_0 = 1.5f;
+  float res = trunc(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_eb83df();
+  v.tint_symbol = trunc_eb83df();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_eb83df();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   float prevent_dce;
 };
 
-float prevent_dce;
+layout(location = 0) flat out float vertex_main_loc0_Output;
 float trunc_eb83df() {
   float arg_0 = 1.5f;
   float res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_eb83df();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  float prevent_dce;
-};
-
-float prevent_dce;
-float trunc_eb83df() {
-  float arg_0 = 1.5f;
-  float res = trunc(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_eb83df();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_eb83df();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), 0.0f);
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_eb83df();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.glsl
index d8868b1..6557248 100644
--- a/test/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/f0f1a1.wgsl.expected.ir.glsl
@@ -1,10 +1,25 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+void trunc_f0f1a1() {
+  vec4 res = vec4(1.0f);
+}
+void main() {
+  trunc_f0f1a1();
+}
+#version 310 es
+
+void trunc_f0f1a1() {
+  vec4 res = vec4(1.0f);
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  trunc_f0f1a1();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
 };
@@ -12,89 +27,15 @@
 void trunc_f0f1a1() {
   vec4 res = vec4(1.0f);
 }
-void main() {
-  trunc_f0f1a1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_f0f1a1();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   trunc_f0f1a1();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_f0f1a1() {
-  vec4 res = vec4(1.0f);
-}
 void main() {
-  trunc_f0f1a1();
+  gl_Position = vertex_main_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_f0f1a1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_f0f1a1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function already has a body 
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-};
-
-void trunc_f0f1a1() {
-  vec4 res = vec4(1.0f);
-}
-void main() {
-  trunc_f0f1a1();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  trunc_f0f1a1();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  trunc_f0f1a1();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.glsl
index 64b9ed7..161c5ce 100644
--- a/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/trunc/f370d3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 trunc_f370d3() {
   vec2 arg_0 = vec2(1.5f);
   vec2 res = trunc(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = trunc_f370d3();
+  v.tint_symbol = trunc_f370d3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 trunc_f370d3() {
+  vec2 arg_0 = vec2(1.5f);
+  vec2 res = trunc(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = trunc_f370d3();
+  v.tint_symbol = trunc_f370d3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_f370d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 trunc_f370d3() {
   vec2 arg_0 = vec2(1.5f);
   vec2 res = trunc(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = trunc_f370d3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 trunc_f370d3() {
-  vec2 arg_0 = vec2(1.5f);
-  vec2 res = trunc(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = trunc_f370d3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = trunc_f370d3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = trunc_f370d3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.glsl
index 0c5b240..9ea3b27 100644
--- a/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/unpack2x16float/32a5cf.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 unpack2x16float_32a5cf() {
   uint arg_0 = 1u;
   vec2 res = unpackHalf2x16(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = unpack2x16float_32a5cf();
+  v.tint_symbol = unpack2x16float_32a5cf();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16float_32a5cf() {
+  uint arg_0 = 1u;
+  vec2 res = unpackHalf2x16(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = unpack2x16float_32a5cf();
+  v.tint_symbol = unpack2x16float_32a5cf();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16float_32a5cf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 unpack2x16float_32a5cf() {
   uint arg_0 = 1u;
   vec2 res = unpackHalf2x16(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack2x16float_32a5cf();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16float_32a5cf() {
-  uint arg_0 = 1u;
-  vec2 res = unpackHalf2x16(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = unpack2x16float_32a5cf();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16float_32a5cf();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16float_32a5cf();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl
index 36a056e..06bff27 100644
--- a/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/unpack2x16snorm/b4aea6.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 unpack2x16snorm_b4aea6() {
   uint arg_0 = 1u;
   vec2 res = unpackSnorm2x16(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
+  v.tint_symbol = unpack2x16snorm_b4aea6();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16snorm_b4aea6() {
+  uint arg_0 = 1u;
+  vec2 res = unpackSnorm2x16(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
+  v.tint_symbol = unpack2x16snorm_b4aea6();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16snorm_b4aea6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 unpack2x16snorm_b4aea6() {
   uint arg_0 = 1u;
   vec2 res = unpackSnorm2x16(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack2x16snorm_b4aea6();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16snorm_b4aea6() {
-  uint arg_0 = 1u;
-  vec2 res = unpackSnorm2x16(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16snorm_b4aea6();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16snorm_b4aea6();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl
index 4c30b86..433f161 100644
--- a/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/unpack2x16unorm/7699c0.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
 vec2 unpack2x16unorm_7699c0() {
   uint arg_0 = 1u;
   vec2 res = unpackUnorm2x16(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
+  v.tint_symbol = unpack2x16unorm_7699c0();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec2 tint_symbol;
+} v;
+vec2 unpack2x16unorm_7699c0() {
+  uint arg_0 = 1u;
+  vec2 res = unpackUnorm2x16(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
+  v.tint_symbol = unpack2x16unorm_7699c0();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16unorm_7699c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec2 prevent_dce;
 };
 
-vec2 prevent_dce;
+layout(location = 0) flat out vec2 vertex_main_loc0_Output;
 vec2 unpack2x16unorm_7699c0() {
   uint arg_0 = 1u;
   vec2 res = unpackUnorm2x16(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack2x16unorm_7699c0();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec2 prevent_dce;
-};
-
-vec2 prevent_dce;
-vec2 unpack2x16unorm_7699c0() {
-  uint arg_0 = 1u;
-  vec2 res = unpackUnorm2x16(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack2x16unorm_7699c0();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec2(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack2x16unorm_7699c0();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl
index 0fb1b52..b416d01 100644
--- a/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/unpack4x8snorm/523fb3.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 unpack4x8snorm_523fb3() {
   uint arg_0 = 1u;
   vec4 res = unpackSnorm4x8(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
+  v.tint_symbol = unpack4x8snorm_523fb3();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 unpack4x8snorm_523fb3() {
+  uint arg_0 = 1u;
+  vec4 res = unpackSnorm4x8(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
+  v.tint_symbol = unpack4x8snorm_523fb3();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8snorm_523fb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 unpack4x8snorm_523fb3() {
   uint arg_0 = 1u;
   vec4 res = unpackSnorm4x8(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4x8snorm_523fb3();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 unpack4x8snorm_523fb3() {
-  uint arg_0 = 1u;
-  vec4 res = unpackSnorm4x8(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8snorm_523fb3();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8snorm_523fb3();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.glsl
index 99cd54f..fd1b79f 100644
--- a/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/unpack4x8unorm/750c74.wgsl.expected.ir.glsl
@@ -1,112 +1,59 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
 vec4 unpack4x8unorm_750c74() {
   uint arg_0 = 1u;
   vec4 res = unpackUnorm4x8(arg_0);
   return res;
 }
 void main() {
-  prevent_dce = unpack4x8unorm_750c74();
+  v.tint_symbol = unpack4x8unorm_750c74();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  vec4 tint_symbol;
+} v;
+vec4 unpack4x8unorm_750c74() {
+  uint arg_0 = 1u;
+  vec4 res = unpackUnorm4x8(arg_0);
+  return res;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
-  prevent_dce = unpack4x8unorm_750c74();
+  v.tint_symbol = unpack4x8unorm_750c74();
 }
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8unorm_750c74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
 
 struct VertexOutput {
   vec4 pos;
   vec4 prevent_dce;
 };
 
-vec4 prevent_dce;
+layout(location = 0) flat out vec4 vertex_main_loc0_Output;
 vec4 unpack4x8unorm_750c74() {
   uint arg_0 = 1u;
   vec4 res = unpackUnorm4x8(arg_0);
   return res;
 }
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4x8unorm_750c74();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function already has a body 
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  vec4 prevent_dce;
-};
-
-vec4 prevent_dce;
-vec4 unpack4x8unorm_750c74() {
-  uint arg_0 = 1u;
-  vec4 res = unpackUnorm4x8(arg_0);
-  return res;
-}
 void main() {
-  prevent_dce = unpack4x8unorm_750c74();
+  VertexOutput v = vertex_main_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4x8unorm_750c74();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4x8unorm_750c74();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.glsl b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.glsl
index a36f314..0a6d38d 100644
--- a/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.glsl
+++ b/test/tint/builtins/gen/var/unpack4xU8/a5ea55.wgsl.expected.ir.glsl
@@ -1,16 +1,49 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 unpack4xU8_a5ea55() {
+  uint arg_0 = 1u;
+  uint v_1 = arg_0;
+  uvec4 v_2 = uvec4(0u, 8u, 16u, 24u);
+  uvec4 v_3 = (uvec4(v_1) >> v_2);
+  uvec4 res = (v_3 & uvec4(255u));
+  return res;
+}
+void main() {
+  v.tint_symbol = unpack4xU8_a5ea55();
+}
+#version 310 es
+
+layout(binding = 0, std430)
+buffer tint_symbol_1_1_ssbo {
+  uvec4 tint_symbol;
+} v;
+uvec4 unpack4xU8_a5ea55() {
+  uint arg_0 = 1u;
+  uint v_1 = arg_0;
+  uvec4 v_2 = uvec4(0u, 8u, 16u, 24u);
+  uvec4 v_3 = (uvec4(v_1) >> v_2);
+  uvec4 res = (v_3 & uvec4(255u));
+  return res;
+}
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  v.tint_symbol = unpack4xU8_a5ea55();
+}
+#version 310 es
+
 struct VertexOutput {
   vec4 pos;
   uvec4 prevent_dce;
 };
 
-uvec4 prevent_dce;
+layout(location = 0) flat out uvec4 vertex_main_loc0_Output;
 uvec4 unpack4xU8_a5ea55() {
   uint arg_0 = 1u;
   uint v = arg_0;
@@ -19,103 +52,17 @@
   uvec4 res = (v_2 & uvec4(255u));
   return res;
 }
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-VertexOutput main() {
+VertexOutput vertex_main_inner() {
   VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
   tint_symbol.pos = vec4(0.0f);
   tint_symbol.prevent_dce = unpack4xU8_a5ea55();
   return tint_symbol;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 unpack4xU8_a5ea55() {
-  uint arg_0 = 1u;
-  uint v = arg_0;
-  uvec4 v_1 = uvec4(0u, 8u, 16u, 24u);
-  uvec4 v_2 = (uvec4(v) >> v_1);
-  uvec4 res = (v_2 & uvec4(255u));
-  return res;
-}
 void main() {
-  prevent_dce = unpack4xU8_a5ea55();
+  VertexOutput v_3 = vertex_main_inner();
+  gl_Position = v_3.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vertex_main_loc0_Output = v_3.prevent_dce;
+  gl_PointSize = 1.0f;
 }
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4xU8_a5ea55();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:24: 'main' : function already has a body 
-ERROR: 0:24: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-struct VertexOutput {
-  vec4 pos;
-  uvec4 prevent_dce;
-};
-
-uvec4 prevent_dce;
-uvec4 unpack4xU8_a5ea55() {
-  uint arg_0 = 1u;
-  uint v = arg_0;
-  uvec4 v_1 = uvec4(0u, 8u, 16u, 24u);
-  uvec4 v_2 = (uvec4(v) >> v_1);
-  uvec4 res = (v_2 & uvec4(255u));
-  return res;
-}
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main() {
-  prevent_dce = unpack4xU8_a5ea55();
-}
-VertexOutput main() {
-  VertexOutput tint_symbol = VertexOutput(vec4(0.0f), uvec4(0u));
-  tint_symbol.pos = vec4(0.0f);
-  tint_symbol.prevent_dce = unpack4xU8_a5ea55();
-  return tint_symbol;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:23: 'local_size_x' : there is no such layout identifier for this stage taking an assigned value 
-ERROR: 0:23: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/const/global/global.wgsl.expected.ir.glsl b/test/tint/const/global/global.wgsl.expected.ir.glsl
index 0ca58db..6b965c0 100644
--- a/test/tint/const/global/global.wgsl.expected.ir.glsl
+++ b/test/tint/const/global/global.wgsl.expected.ir.glsl
@@ -1,11 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   int v1 = 1;
   uint v2 = 1u;
   float v3 = 1.0f;
@@ -16,12 +15,6 @@
   float v9[10] = float[10](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/const/inferred/function.wgsl.expected.ir.glsl b/test/tint/const/inferred/function.wgsl.expected.ir.glsl
index a5209bc..477f56d 100644
--- a/test/tint/const/inferred/function.wgsl.expected.ir.glsl
+++ b/test/tint/const/inferred/function.wgsl.expected.ir.glsl
@@ -1,21 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-void const_decls() {
-}
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'float' :  entry point cannot return a value
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.glsl
index 522ef36..41c3909 100644
--- a/test/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/for_loop_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/for_loop_attribute.wgsl:5:21 warning: 'dpdx' must only be called from uniform control flow
   for (; x > v.x && dpdx(1.0) > 0.0; ) {
                     ^^^^^^^^^
@@ -17,7 +15,8 @@
 precision highp int;
 
 
-void main(float x) {
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
   vec4 v = vec4(0.0f);
   {
     while(true) {
@@ -37,12 +36,6 @@
     }
   }
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.glsl
index 170ee56..1371be9 100644
--- a/test/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/if_statement_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/if_statement_attribute.wgsl:8:14 warning: 'dpdx' must only be called from uniform control flow
   } else if (dpdx(1.0) > 0)  {
              ^^^^^^^^^
@@ -12,12 +10,19 @@
   if (x > 0) {
       ^
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:585 internal compiler error: Switch() matched no cases. Type: tint::core::type::Sampler
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+#version 310 es
+precision highp float;
+precision highp int;
 
-tint executable returned error: signal: trace/BPT trap
+
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
+  if ((x > 0.0f)) {
+  } else {
+    if ((dFdx(1.0f) > 0.0f)) {
+    }
+  }
+}
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.glsl
index 1b21217..5c8c74d 100644
--- a/test/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/loop_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/loop_attribute.wgsl:5:9 warning: 'dpdx' must only be called from uniform control flow
     _ = dpdx(1.0);
         ^^^^^^^^^
@@ -17,7 +15,8 @@
 precision highp int;
 
 
-void main(float x) {
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
   {
     while(true) {
       dFdx(1.0f);
@@ -28,12 +27,6 @@
     }
   }
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.glsl
index ef93c8a..d19cd52 100644
--- a/test/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/loop_body_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/loop_body_attribute.wgsl:4:9 warning: 'dpdx' must only be called from uniform control flow
     _ = dpdx(1.0);
         ^^^^^^^^^
@@ -17,7 +15,8 @@
 precision highp int;
 
 
-void main(float x) {
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
   {
     while(true) {
       dFdx(1.0f);
@@ -28,12 +27,6 @@
     }
   }
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.glsl
index d0cb570..f75b1d7 100644
--- a/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/loop_continuing_attribute.wgsl:5:11 warning: 'dpdx' must only be called from uniform control flow
       _ = dpdx(1.0);
           ^^^^^^^^^
@@ -17,7 +15,8 @@
 precision highp int;
 
 
-void main(float x) {
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
   {
     while(true) {
       {
@@ -28,12 +27,6 @@
     }
   }
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.glsl
index d70dd2a..62a659b 100644
--- a/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/switch_statement_attribute.wgsl:7:27 warning: 'dpdx' must only be called from uniform control flow
   switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
                           ^^^^^^^^^
@@ -12,12 +10,26 @@
   switch (i32(x == 0.0 && dpdx(1.0) == 0.0)) {
               ^
 
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:585 internal compiler error: Switch() matched no cases. Type: tint::core::type::Sampler
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
+#version 310 es
+precision highp float;
+precision highp int;
 
-tint executable returned error: signal: trace/BPT trap
+
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
+  bool v = false;
+  if ((x == 0.0f)) {
+    v = (dFdx(1.0f) == 0.0f);
+  } else {
+    v = false;
+  }
+  switch(int(v)) {
+    default:
+    {
+      break;
+    }
+  }
+}
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.glsl b/test/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.glsl
index e281865..8306527 100644
--- a/test/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.glsl
+++ b/test/tint/diagnostic_filtering/while_loop_attribute.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 <dawn>/test/tint/diagnostic_filtering/while_loop_attribute.wgsl:5:21 warning: 'dpdx' must only be called from uniform control flow
   while (x > 0.0 && dpdx(1.0) > 0.0)  {
                     ^^^^^^^^^
@@ -17,7 +15,8 @@
 precision highp int;
 
 
-void main(float x) {
+layout(location = 0) in float tint_symbol_loc0_Input;
+void tint_symbol_inner(float x) {
   vec4 v = vec4(0.0f);
   {
     while(true) {
@@ -37,12 +36,6 @@
     }
   }
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input);
+}
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.ir.glsl b/test/tint/extensions/parsing/basic.wgsl.expected.ir.glsl
index 8161e01..064838b 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.ir.glsl
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   return vec4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.ir.glsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.ir.glsl
index 8161e01..064838b 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.ir.glsl
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   return vec4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/extensions/parsing/multiple.wgsl.expected.ir.glsl b/test/tint/extensions/parsing/multiple.wgsl.expected.ir.glsl
index 8161e01..064838b 100644
--- a/test/tint/extensions/parsing/multiple.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/parsing/multiple.wgsl.expected.ir.glsl
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   return vec4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.glsl
index 73ff9a8..faeec19 100644
--- a/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/additional_params/b.wgsl.expected.ir.glsl
@@ -1,21 +1,15 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(location = 0) in vec4 f_loc0_Input;
+in vec4 f_Input;
 void g(float a, float b, float c) {
 }
-void main(vec4 pos, vec4 uv, vec4 fbf) {
+void f_inner(vec4 pos, vec4 uv, vec4 fbf) {
   g(pos[0u], uv[0u], fbf[0u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_inner(gl_FragCoord, f_loc0_Input, f_Input);
+}
diff --git a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.glsl
index 6a8259d..8231a4c 100644
--- a/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/additional_params/g.wgsl.expected.ir.glsl
@@ -1,21 +1,14 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+in vec4 f_Input;
 void g(float a, float b) {
 }
-void main(vec4 fbf, vec4 pos) {
+void f_inner(vec4 fbf, vec4 pos) {
   g(fbf[3u], pos[0u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_inner(f_Input, gl_FragCoord);
+}
diff --git a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.glsl
index 8deb13d..a73a781 100644
--- a/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/additional_params/j.wgsl.expected.ir.glsl
@@ -1,21 +1,16 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(location = 0) in vec4 f_loc0_Input;
+layout(location = 1) flat in vec4 f_loc1_Input;
+in vec4 f_Input;
 void g(float a, float b, float c) {
 }
-void main(vec4 a, vec4 b, vec4 fbf) {
+void f_inner(vec4 a, vec4 b, vec4 fbf) {
   g(a[0u], b[1u], fbf[0u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_inner(f_loc0_Input, f_loc1_Input, f_Input);
+}
diff --git a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.glsl
index 18350bc..0e79fe2 100644
--- a/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/one_output/multiple_inputs.wgsl.expected.ir.glsl
@@ -1,20 +1,14 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main(vec4 fbf_1, vec4 fbf_3) {
+in vec4 f_Input;
+in vec4 f_Input_1;
+layout(location = 0) out vec4 f_loc0_Output;
+vec4 f_inner(vec4 fbf_1, vec4 fbf_3) {
   return (fbf_1 + fbf_3);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_loc0_Output = f_inner(f_Input, f_Input_1);
+}
diff --git a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.glsl
index 4e88049..58a28c7 100644
--- a/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/one_output/single_input.wgsl.expected.ir.glsl
@@ -1,20 +1,13 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-vec4 main(vec4 fbf) {
+in vec4 f_Input;
+layout(location = 0) out vec4 f_loc0_Output;
+vec4 f_inner(vec4 fbf) {
   return fbf;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: 'float' :  entry point cannot return a value
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_loc0_Output = f_inner(f_Input);
+}
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.glsl
index 9052bb1..26164cc 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/multiple_inputs.wgsl.expected.ir.glsl
@@ -1,21 +1,15 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+in vec4 f_Input;
+in vec4 f_Input_1;
 void g(float a, float b) {
 }
-void main(vec4 fbf_1, vec4 fbf_3) {
+void f_inner(vec4 fbf_1, vec4 fbf_3) {
   g(fbf_1[0u], fbf_3[1u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_inner(f_Input, f_Input_1);
+}
diff --git a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.glsl b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.glsl
index 2d5e8ee..94f50fa 100644
--- a/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.glsl
+++ b/test/tint/extensions/texel_fetch/zero_outputs/single_input.wgsl.expected.ir.glsl
@@ -1,21 +1,14 @@
-SKIP: INVALID
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+in vec4 f_Input;
 void g(float a) {
 }
-void main(vec4 fbf) {
+void f_inner(vec4 fbf) {
   g(fbf[1u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  f_inner(f_Input);
+}
diff --git a/test/tint/let/inferred/function.wgsl.expected.ir.glsl b/test/tint/let/inferred/function.wgsl.expected.ir.glsl
index edaa642..477f56d 100644
--- a/test/tint/let/inferred/function.wgsl.expected.ir.glsl
+++ b/test/tint/let/inferred/function.wgsl.expected.ir.glsl
@@ -1,55 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
-
-struct MyStruct {
-  float f1;
-};
 precision highp float;
 precision highp int;
 
 
-int ret_i32() {
-  return 1;
-}
-uint ret_u32() {
-  return 1u;
-}
-float ret_f32() {
-  return 1.0f;
-}
-MyStruct ret_MyStruct() {
-  return MyStruct(0.0f);
-}
-float[10] ret_MyArray() {
-  return float[10](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-}
-void let_decls() {
-  int v1 = 1;
-  uint v2 = 1u;
-  float v3 = 1.0f;
-  ivec3 v4 = ivec3(1);
-  uvec3 v5 = uvec3(1u);
-  vec3 v6 = vec3(1.0f);
-  mat3 v7 = mat3(v6, v6, v6);
-  MyStruct v8 = MyStruct(1.0f);
-  float v9[10] = float[10](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  int v10 = ret_i32();
-  uint v11 = ret_u32();
-  float v12 = ret_f32();
-  MyStruct v13 = ret_MyStruct();
-  MyStruct v14 = ret_MyStruct();
-  float v15[10] = ret_MyArray();
-}
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: 'float' : type requires declaration of default precision qualifier 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/samples/compute_boids.wgsl.expected.ir.glsl b/test/tint/samples/compute_boids.wgsl.expected.ir.glsl
index 173acb9..d3cb577 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.ir.glsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.ir.glsl
@@ -1,5 +1,34 @@
-SKIP: FAILED
+#version 310 es
 
+layout(location = 0) in vec2 vert_main_loc0_Input;
+layout(location = 1) in vec2 vert_main_loc1_Input;
+layout(location = 2) in vec2 vert_main_loc2_Input;
+vec4 vert_main_inner(vec2 a_particlePos, vec2 a_particleVel, vec2 a_pos) {
+  float angle = -(atan(a_particleVel[0u], a_particleVel[1u]));
+  float v = (a_pos[0u] * cos(angle));
+  float v_1 = (v - (a_pos[1u] * sin(angle)));
+  float v_2 = (a_pos[0u] * sin(angle));
+  vec2 pos = vec2(v_1, (v_2 + (a_pos[1u] * cos(angle))));
+  return vec4((pos + a_particlePos), 0.0f, 1.0f);
+}
+void main() {
+  gl_Position = vert_main_inner(vert_main_loc0_Input, vert_main_loc1_Input, vert_main_loc2_Input);
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
+#version 310 es
+precision highp float;
+precision highp int;
+
+
+layout(location = 0) out vec4 frag_main_loc0_Output;
+vec4 frag_main_inner() {
+  return vec4(1.0f);
+}
+void main() {
+  frag_main_loc0_Output = frag_main_inner();
+}
 #version 310 es
 
 struct SimParams {
@@ -20,32 +49,26 @@
 struct Particles {
   Particle particles[5];
 };
-precision highp float;
-precision highp int;
 
-
-uniform SimParams params;
-Particles particlesA;
-Particles particlesB;
-vec4 main(vec2 a_particlePos, vec2 a_particleVel, vec2 a_pos) {
-  float angle = -(atan(a_particleVel[0u], a_particleVel[1u]));
-  float v = (a_pos[0u] * cos(angle));
-  float v_1 = (v - (a_pos[1u] * sin(angle)));
-  float v_2 = (a_pos[0u] * sin(angle));
-  vec2 pos = vec2(v_1, (v_2 + (a_pos[1u] * cos(angle))));
-  return vec4((pos + a_particlePos), 0.0f, 1.0f);
-}
-vec4 main() {
-  return vec4(1.0f);
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 tint_symbol) {
+layout(binding = 0, std140)
+uniform tint_symbol_2_1_ubo {
+  SimParams tint_symbol_1;
+} v;
+layout(binding = 1, std430)
+buffer tint_symbol_4_1_ssbo {
+  Particles tint_symbol_3;
+} v_1;
+layout(binding = 2, std430)
+buffer tint_symbol_6_1_ssbo {
+  Particles tint_symbol_5;
+} v_2;
+void comp_main_inner(uvec3 tint_symbol) {
   uint index = tint_symbol[0u];
   if ((index >= 5u)) {
     return;
   }
-  vec2 vPos = particlesA.particles[index].pos;
-  vec2 vVel = particlesA.particles[index].vel;
+  vec2 vPos = v_1.tint_symbol_3.particles[index].pos;
+  vec2 vVel = v_1.tint_symbol_3.particles[index].vel;
   vec2 cMass = vec2(0.0f);
   vec2 cVel = vec2(0.0f);
   vec2 colVel = vec2(0.0f);
@@ -66,19 +89,19 @@
         }
         continue;
       }
-      pos = particlesA.particles[i].pos.xy;
-      vel = particlesA.particles[i].vel.xy;
+      pos = v_1.tint_symbol_3.particles[i].pos.xy;
+      vel = v_1.tint_symbol_3.particles[i].vel.xy;
       float v_3 = distance(pos, vPos);
-      if ((v_3 < params.rule1Distance)) {
+      if ((v_3 < v.tint_symbol_1.rule1Distance)) {
         cMass = (cMass + pos);
         cMassCount = (cMassCount + 1);
       }
       float v_4 = distance(pos, vPos);
-      if ((v_4 < params.rule2Distance)) {
+      if ((v_4 < v.tint_symbol_1.rule2Distance)) {
         colVel = (colVel - (pos - vPos));
       }
       float v_5 = distance(pos, vPos);
-      if ((v_5 < params.rule3Distance)) {
+      if ((v_5 < v.tint_symbol_1.rule3Distance)) {
         cVel = (cVel + vel);
         cVelCount = (cVelCount + 1);
       }
@@ -99,10 +122,10 @@
     float v_10 = float(cVelCount);
     cVel = (v_9 / vec2(v_10, float(cVelCount)));
   }
-  vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
+  vVel = (((vVel + (cMass * v.tint_symbol_1.rule1Scale)) + (colVel * v.tint_symbol_1.rule2Scale)) + (cVel * v.tint_symbol_1.rule3Scale));
   vec2 v_11 = normalize(vVel);
   vVel = (v_11 * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
-  vPos = (vPos + (vVel * params.deltaT));
+  vPos = (vPos + (vVel * v.tint_symbol_1.deltaT));
   if ((vPos.x < -1.0f)) {
     vPos[0u] = 1.0f;
   }
@@ -115,267 +138,10 @@
   if ((vPos.y > 1.0f)) {
     vPos[1u] = -1.0f;
   }
-  particlesB.particles[index].pos = vPos;
-  particlesB.particles[index].vel = vVel;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:28: 'main' : function cannot take any parameter(s) 
-ERROR: 0:28: 'float' :  entry point cannot return a value
-ERROR: 0:28: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-#version 310 es
-
-struct SimParams {
-  float deltaT;
-  float rule1Distance;
-  float rule2Distance;
-  float rule3Distance;
-  float rule1Scale;
-  float rule2Scale;
-  float rule3Scale;
-};
-
-struct Particle {
-  vec2 pos;
-  vec2 vel;
-};
-
-struct Particles {
-  Particle particles[5];
-};
-precision highp float;
-precision highp int;
-
-
-uniform SimParams params;
-Particles particlesA;
-Particles particlesB;
-vec4 main(vec2 a_particlePos, vec2 a_particleVel, vec2 a_pos) {
-  float angle = -(atan(a_particleVel[0u], a_particleVel[1u]));
-  float v = (a_pos[0u] * cos(angle));
-  float v_1 = (v - (a_pos[1u] * sin(angle)));
-  float v_2 = (a_pos[0u] * sin(angle));
-  vec2 pos = vec2(v_1, (v_2 + (a_pos[1u] * cos(angle))));
-  return vec4((pos + a_particlePos), 0.0f, 1.0f);
-}
-vec4 main() {
-  return vec4(1.0f);
+  v_2.tint_symbol_5.particles[index].pos = vPos;
+  v_2.tint_symbol_5.particles[index].vel = vVel;
 }
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 tint_symbol) {
-  uint index = tint_symbol[0u];
-  if ((index >= 5u)) {
-    return;
-  }
-  vec2 vPos = particlesA.particles[index].pos;
-  vec2 vVel = particlesA.particles[index].vel;
-  vec2 cMass = vec2(0.0f);
-  vec2 cVel = vec2(0.0f);
-  vec2 colVel = vec2(0.0f);
-  int cMassCount = 0;
-  int cVelCount = 0;
-  vec2 pos = vec2(0.0f);
-  vec2 vel = vec2(0.0f);
-  {
-    uint i = 0u;
-    while(true) {
-      if ((i < 5u)) {
-      } else {
-        break;
-      }
-      if ((i == index)) {
-        {
-          i = (i + 1u);
-        }
-        continue;
-      }
-      pos = particlesA.particles[i].pos.xy;
-      vel = particlesA.particles[i].vel.xy;
-      float v_3 = distance(pos, vPos);
-      if ((v_3 < params.rule1Distance)) {
-        cMass = (cMass + pos);
-        cMassCount = (cMassCount + 1);
-      }
-      float v_4 = distance(pos, vPos);
-      if ((v_4 < params.rule2Distance)) {
-        colVel = (colVel - (pos - vPos));
-      }
-      float v_5 = distance(pos, vPos);
-      if ((v_5 < params.rule3Distance)) {
-        cVel = (cVel + vel);
-        cVelCount = (cVelCount + 1);
-      }
-      {
-        i = (i + 1u);
-      }
-      continue;
-    }
-  }
-  if ((cMassCount > 0)) {
-    vec2 v_6 = cMass;
-    float v_7 = float(cMassCount);
-    vec2 v_8 = (v_6 / vec2(v_7, float(cMassCount)));
-    cMass = (v_8 - vPos);
-  }
-  if ((cVelCount > 0)) {
-    vec2 v_9 = cVel;
-    float v_10 = float(cVelCount);
-    cVel = (v_9 / vec2(v_10, float(cVelCount)));
-  }
-  vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
-  vec2 v_11 = normalize(vVel);
-  vVel = (v_11 * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
-  vPos = (vPos + (vVel * params.deltaT));
-  if ((vPos.x < -1.0f)) {
-    vPos[0u] = 1.0f;
-  }
-  if ((vPos.x > 1.0f)) {
-    vPos[0u] = -1.0f;
-  }
-  if ((vPos.y < -1.0f)) {
-    vPos[1u] = 1.0f;
-  }
-  if ((vPos.y > 1.0f)) {
-    vPos[1u] = -1.0f;
-  }
-  particlesB.particles[index].pos = vPos;
-  particlesB.particles[index].vel = vVel;
+void main() {
+  comp_main_inner(gl_GlobalInvocationID);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: 'float' : type requires declaration of default precision qualifier 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-#version 310 es
-
-struct SimParams {
-  float deltaT;
-  float rule1Distance;
-  float rule2Distance;
-  float rule3Distance;
-  float rule1Scale;
-  float rule2Scale;
-  float rule3Scale;
-};
-
-struct Particle {
-  vec2 pos;
-  vec2 vel;
-};
-
-struct Particles {
-  Particle particles[5];
-};
-precision highp float;
-precision highp int;
-
-
-uniform SimParams params;
-Particles particlesA;
-Particles particlesB;
-vec4 main(vec2 a_particlePos, vec2 a_particleVel, vec2 a_pos) {
-  float angle = -(atan(a_particleVel[0u], a_particleVel[1u]));
-  float v = (a_pos[0u] * cos(angle));
-  float v_1 = (v - (a_pos[1u] * sin(angle)));
-  float v_2 = (a_pos[0u] * sin(angle));
-  vec2 pos = vec2(v_1, (v_2 + (a_pos[1u] * cos(angle))));
-  return vec4((pos + a_particlePos), 0.0f, 1.0f);
-}
-vec4 main() {
-  return vec4(1.0f);
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 tint_symbol) {
-  uint index = tint_symbol[0u];
-  if ((index >= 5u)) {
-    return;
-  }
-  vec2 vPos = particlesA.particles[index].pos;
-  vec2 vVel = particlesA.particles[index].vel;
-  vec2 cMass = vec2(0.0f);
-  vec2 cVel = vec2(0.0f);
-  vec2 colVel = vec2(0.0f);
-  int cMassCount = 0;
-  int cVelCount = 0;
-  vec2 pos = vec2(0.0f);
-  vec2 vel = vec2(0.0f);
-  {
-    uint i = 0u;
-    while(true) {
-      if ((i < 5u)) {
-      } else {
-        break;
-      }
-      if ((i == index)) {
-        {
-          i = (i + 1u);
-        }
-        continue;
-      }
-      pos = particlesA.particles[i].pos.xy;
-      vel = particlesA.particles[i].vel.xy;
-      float v_3 = distance(pos, vPos);
-      if ((v_3 < params.rule1Distance)) {
-        cMass = (cMass + pos);
-        cMassCount = (cMassCount + 1);
-      }
-      float v_4 = distance(pos, vPos);
-      if ((v_4 < params.rule2Distance)) {
-        colVel = (colVel - (pos - vPos));
-      }
-      float v_5 = distance(pos, vPos);
-      if ((v_5 < params.rule3Distance)) {
-        cVel = (cVel + vel);
-        cVelCount = (cVelCount + 1);
-      }
-      {
-        i = (i + 1u);
-      }
-      continue;
-    }
-  }
-  if ((cMassCount > 0)) {
-    vec2 v_6 = cMass;
-    float v_7 = float(cMassCount);
-    vec2 v_8 = (v_6 / vec2(v_7, float(cMassCount)));
-    cMass = (v_8 - vPos);
-  }
-  if ((cVelCount > 0)) {
-    vec2 v_9 = cVel;
-    float v_10 = float(cVelCount);
-    cVel = (v_9 / vec2(v_10, float(cVelCount)));
-  }
-  vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
-  vec2 v_11 = normalize(vVel);
-  vVel = (v_11 * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
-  vPos = (vPos + (vVel * params.deltaT));
-  if ((vPos.x < -1.0f)) {
-    vPos[0u] = 1.0f;
-  }
-  if ((vPos.x > 1.0f)) {
-    vPos[0u] = -1.0f;
-  }
-  if ((vPos.y < -1.0f)) {
-    vPos[1u] = 1.0f;
-  }
-  if ((vPos.y > 1.0f)) {
-    vPos[1u] = -1.0f;
-  }
-  particlesB.particles[index].pos = vPos;
-  particlesB.particles[index].vel = vVel;
-}
-error: Error parsing GLSL shader:
-ERROR: 0:28: 'main' : function cannot take any parameter(s) 
-ERROR: 0:28: 'float' :  entry point cannot return a value
-ERROR: 0:28: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/samples/cube.wgsl.expected.ir.glsl b/test/tint/samples/cube.wgsl.expected.ir.glsl
index 36f3538..168727c 100644
--- a/test/tint/samples/cube.wgsl.expected.ir.glsl
+++ b/test/tint/samples/cube.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct Uniforms {
@@ -15,63 +13,38 @@
   vec4 cur_position;
   vec4 color;
 };
-precision highp float;
-precision highp int;
 
-
-uniform Uniforms uniforms;
-VertexOutput main(VertexInput tint_symbol) {
+layout(binding = 0, std140)
+uniform tint_symbol_3_1_ubo {
+  Uniforms tint_symbol_2;
+} v;
+layout(location = 0) in vec4 vtx_main_loc0_Input;
+layout(location = 1) in vec4 vtx_main_loc1_Input;
+layout(location = 0) out vec4 vtx_main_loc0_Output;
+VertexOutput vtx_main_inner(VertexInput tint_symbol) {
   VertexOutput tint_symbol_1 = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol_1.Position = (uniforms.modelViewProjectionMatrix * tint_symbol.cur_position);
+  tint_symbol_1.Position = (v.tint_symbol_2.modelViewProjectionMatrix * tint_symbol.cur_position);
   tint_symbol_1.vtxFragColor = tint_symbol.color;
   return tint_symbol_1;
 }
-vec4 main(vec4 fragColor) {
-  return fragColor;
+void main() {
+  VertexOutput v_1 = vtx_main_inner(VertexInput(vtx_main_loc0_Input, vtx_main_loc1_Input));
+  vtx_main_loc0_Output = v_1.vtxFragColor;
+  gl_Position = v_1.Position;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:21: 'main' : function cannot take any parameter(s) 
-ERROR: 0:21: 'structure' :  entry point cannot return a value
-ERROR: 0:21: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
-
-struct Uniforms {
-  mat4 modelViewProjectionMatrix;
-};
-
-struct VertexOutput {
-  vec4 vtxFragColor;
-  vec4 Position;
-};
-
-struct VertexInput {
-  vec4 cur_position;
-  vec4 color;
-};
 precision highp float;
 precision highp int;
 
 
-uniform Uniforms uniforms;
-VertexOutput main(VertexInput tint_symbol) {
-  VertexOutput tint_symbol_1 = VertexOutput(vec4(0.0f), vec4(0.0f));
-  tint_symbol_1.Position = (uniforms.modelViewProjectionMatrix * tint_symbol.cur_position);
-  tint_symbol_1.vtxFragColor = tint_symbol.color;
-  return tint_symbol_1;
-}
-vec4 main(vec4 fragColor) {
+layout(location = 0) in vec4 frag_main_loc0_Input;
+layout(location = 0) out vec4 frag_main_loc0_Output;
+vec4 frag_main_inner(vec4 fragColor) {
   return fragColor;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: 'float' : type requires declaration of default precision qualifier 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  frag_main_loc0_Output = frag_main_inner(frag_main_loc0_Input);
+}
diff --git a/test/tint/samples/simple.wgsl.expected.ir.glsl b/test/tint/samples/simple.wgsl.expected.ir.glsl
index 6beaacd..0cca305 100644
--- a/test/tint/samples/simple.wgsl.expected.ir.glsl
+++ b/test/tint/samples/simple.wgsl.expected.ir.glsl
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
 void bar() {
 }
-vec4 main() {
+vec4 tint_symbol_inner() {
   vec2 a = vec2(0.0f);
   bar();
   return vec4(0.40000000596046447754f, 0.40000000596046447754f, 0.80000001192092895508f, 1.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'float' :  entry point cannot return a value
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/samples/simple_vertex.spvasm.expected.ir.glsl b/test/tint/samples/simple_vertex.spvasm.expected.ir.glsl
index 239d5e5..f27d15a 100644
--- a/test/tint/samples/simple_vertex.spvasm.expected.ir.glsl
+++ b/test/tint/samples/simple_vertex.spvasm.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct main_out {
@@ -10,16 +8,13 @@
 void main_1() {
   tint_symbol = vec4(0.0f);
 }
-main_out main() {
+main_out tint_symbol_1_inner() {
   main_1();
   return main_out(tint_symbol);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_1_inner().tint_symbol;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.glsl
index 3469963..a905696 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins.wgsl.expected.ir.glsl
@@ -1,17 +1,9 @@
-SKIP: FAILED
-
 #version 310 es
 
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 local_invocation_id, uint local_invocation_index, uvec3 global_invocation_id, uvec3 workgroup_id, uvec3 num_workgroups) {
+void tint_symbol_inner(uvec3 local_invocation_id, uint local_invocation_index, uvec3 global_invocation_id, uvec3 workgroup_id, uvec3 num_workgroups) {
   uint foo = ((((local_invocation_id[0u] + local_invocation_index) + global_invocation_id[0u]) + workgroup_id[0u]) + num_workgroups[0u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: 'main' : function cannot take any parameter(s) 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_inner(gl_LocalInvocationID, gl_LocalInvocationIndex, gl_GlobalInvocationID, gl_WorkGroupID, gl_NumWorkGroups);
+}
diff --git a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.glsl
index aaacd81..213eadb 100644
--- a/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/compute_input_builtins_struct.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct ComputeInputs {
@@ -10,16 +8,10 @@
   uvec3 num_workgroups;
 };
 
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(ComputeInputs inputs) {
+void tint_symbol_inner(ComputeInputs inputs) {
   uint foo = ((((inputs.local_invocation_id[0u] + inputs.local_invocation_index) + inputs.global_invocation_id[0u]) + inputs.workgroup_id[0u]) + inputs.num_workgroups[0u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'main' : function cannot take any parameter(s) 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_inner(ComputeInputs(gl_LocalInvocationID, gl_LocalInvocationIndex, gl_GlobalInvocationID, gl_WorkGroupID, gl_NumWorkGroups));
+}
diff --git a/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.glsl
index f7b1150..7e470b2 100644
--- a/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/compute_input_mixed.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct ComputeInputs0 {
@@ -10,16 +8,13 @@
   uvec3 workgroup_id;
 };
 
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(ComputeInputs0 inputs0, uint local_invocation_index, uvec3 global_invocation_id, ComputeInputs1 inputs1) {
+void tint_symbol_inner(ComputeInputs0 inputs0, uint local_invocation_index, uvec3 global_invocation_id, ComputeInputs1 inputs1) {
   uint foo = (((inputs0.local_invocation_id[0u] + local_invocation_index) + global_invocation_id[0u]) + inputs1.workgroup_id[0u]);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'main' : function cannot take any parameter(s) 
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  ComputeInputs0 v = ComputeInputs0(gl_LocalInvocationID);
+  uint v_1 = gl_LocalInvocationIndex;
+  uvec3 v_2 = gl_GlobalInvocationID;
+  tint_symbol_inner(v, v_1, v_2, ComputeInputs1(gl_WorkGroupID));
+}
diff --git a/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.glsl
index d9b6c97..3507c1a 100644
--- a/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/fragment_f16_io_polyfill.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -11,16 +9,15 @@
 precision highp int;
 
 
-Outputs main(float16_t loc1, f16vec4 loc2) {
+layout(location = 1) in float16_t frag_main_loc1_Input;
+layout(location = 2) in f16vec4 frag_main_loc2_Input;
+layout(location = 1) out float16_t frag_main_loc1_Output;
+layout(location = 2) out f16vec4 frag_main_loc2_Output;
+Outputs frag_main_inner(float16_t loc1, f16vec4 loc2) {
   return Outputs((loc1 * 2.0hf), (loc2 * 3.0hf));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'main' : function cannot take any parameter(s) 
-ERROR: 0:12: 'structure' :  entry point cannot return a value
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  Outputs v = frag_main_inner(frag_main_loc1_Input, frag_main_loc2_Input);
+  frag_main_loc1_Output = v.a;
+  frag_main_loc2_Output = v.b;
+}
diff --git a/test/tint/types/functions/shader_io/fragment_input_locations.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/fragment_input_locations.wgsl.expected.ir.glsl
index 9f8d42f..9ef7529 100644
--- a/test/tint/types/functions/shader_io/fragment_input_locations.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/fragment_input_locations.wgsl.expected.ir.glsl
@@ -1,22 +1,18 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-void main(int loc0, uint loc1, float loc2, vec4 loc3) {
+layout(location = 0) flat in int tint_symbol_loc0_Input;
+layout(location = 1) flat in uint tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) in vec4 tint_symbol_loc3_Input;
+void tint_symbol_inner(int loc0, uint loc1, float loc2, vec4 loc3) {
   int i = loc0;
   uint u = loc1;
   float f = loc2;
   vec4 v = loc3;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input);
+}
diff --git a/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.glsl
index 3ed55f0..fea895d 100644
--- a/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/fragment_input_locations_f16.wgsl.expected.ir.glsl
@@ -1,12 +1,16 @@
-SKIP: FAILED
-
 #version 310 es
+#extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
-#extension GL_AMD_gpu_shader_half_float: require
 
-void main(int loc0, uint loc1, float loc2, vec4 loc3, float16_t loc4, f16vec3 loc5) {
+layout(location = 0) flat in int tint_symbol_loc0_Input;
+layout(location = 1) flat in uint tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) in vec4 tint_symbol_loc3_Input;
+layout(location = 4) in float16_t tint_symbol_loc4_Input;
+layout(location = 5) in f16vec3 tint_symbol_loc5_Input;
+void tint_symbol_inner(int loc0, uint loc1, float loc2, vec4 loc3, float16_t loc4, f16vec3 loc5) {
   int i = loc0;
   uint u = loc1;
   float f = loc2;
@@ -14,12 +18,6 @@
   float16_t x = loc4;
   f16vec3 y = loc5;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'main' : function cannot take any parameter(s) 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input, tint_symbol_loc4_Input, tint_symbol_loc5_Input);
+}
diff --git a/test/tint/types/functions/shader_io/fragment_output_locations.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/fragment_output_locations.wgsl.expected.ir.glsl
index 79861db..70dd4c0 100644
--- a/test/tint/types/functions/shader_io/fragment_output_locations.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/fragment_output_locations.wgsl.expected.ir.glsl
@@ -1,136 +1,48 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
+layout(location = 0) out int main0_loc0_Output;
+int main0_inner() {
   return 1;
 }
-uint main() {
-  return 1u;
+void main() {
+  main0_loc0_Output = main0_inner();
 }
-float main() {
-  return 1.0f;
-}
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'int' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
-  return 1;
-}
-uint main() {
+layout(location = 1) out uint main1_loc1_Output;
+uint main1_inner() {
   return 1u;
 }
-float main() {
-  return 1.0f;
+void main() {
+  main1_loc1_Output = main1_inner();
 }
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'int' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
-  return 1;
-}
-uint main() {
-  return 1u;
-}
-float main() {
+layout(location = 2) out float main2_loc2_Output;
+float main2_inner() {
   return 1.0f;
 }
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
+void main() {
+  main2_loc2_Output = main2_inner();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'int' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
-  return 1;
-}
-uint main() {
-  return 1u;
-}
-float main() {
-  return 1.0f;
-}
-vec4 main() {
+layout(location = 3) out vec4 main3_loc3_Output;
+vec4 main3_inner() {
   return vec4(1.0f, 2.0f, 3.0f, 4.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'int' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  main3_loc3_Output = main3_inner();
+}
diff --git a/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.glsl
index 1ca27f4..f336cb5 100644
--- a/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/fragment_output_locations_f16.wgsl.expected.ir.glsl
@@ -1,280 +1,74 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-#extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
+layout(location = 0) out int main0_loc0_Output;
+int main0_inner() {
   return 1;
 }
-uint main() {
-  return 1u;
+void main() {
+  main0_loc0_Output = main0_inner();
 }
-float main() {
-  return 1.0f;
-}
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
-}
-float16_t main() {
-  return 2.25hf;
-}
-f16vec3 main() {
-  return f16vec3(3.0hf, 5.0hf, 8.0hf);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'int' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-#extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
-  return 1;
-}
-uint main() {
+layout(location = 1) out uint main1_loc1_Output;
+uint main1_inner() {
   return 1u;
 }
-float main() {
-  return 1.0f;
+void main() {
+  main1_loc1_Output = main1_inner();
 }
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
-}
-float16_t main() {
-  return 2.25hf;
-}
-f16vec3 main() {
-  return f16vec3(3.0hf, 5.0hf, 8.0hf);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'int' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-#extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
-  return 1;
-}
-uint main() {
-  return 1u;
-}
-float main() {
+layout(location = 2) out float main2_loc2_Output;
+float main2_inner() {
   return 1.0f;
 }
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
+void main() {
+  main2_loc2_Output = main2_inner();
 }
-float16_t main() {
-  return 2.25hf;
-}
-f16vec3 main() {
-  return f16vec3(3.0hf, 5.0hf, 8.0hf);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'int' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-#extension GL_AMD_gpu_shader_half_float: require
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-
-int main() {
-  return 1;
-}
-uint main() {
-  return 1u;
-}
-float main() {
-  return 1.0f;
-}
-vec4 main() {
+layout(location = 3) out vec4 main3_loc3_Output;
+vec4 main3_inner() {
   return vec4(1.0f, 2.0f, 3.0f, 4.0f);
 }
-float16_t main() {
-  return 2.25hf;
+void main() {
+  main3_loc3_Output = main3_inner();
 }
-f16vec3 main() {
-  return f16vec3(3.0hf, 5.0hf, 8.0hf);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'int' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-
-int main() {
-  return 1;
-}
-uint main() {
-  return 1u;
-}
-float main() {
-  return 1.0f;
-}
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
-}
-float16_t main() {
+layout(location = 4) out float16_t main4_loc4_Output;
+float16_t main4_inner() {
   return 2.25hf;
 }
-f16vec3 main() {
-  return f16vec3(3.0hf, 5.0hf, 8.0hf);
+void main() {
+  main4_loc4_Output = main4_inner();
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'int' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
-precision highp float;
-precision highp int;
-
 #extension GL_AMD_gpu_shader_half_float: require
 precision highp float;
 precision highp int;
 
-precision highp float;
-precision highp int;
 
-
-int main() {
-  return 1;
-}
-uint main() {
-  return 1u;
-}
-float main() {
-  return 1.0f;
-}
-vec4 main() {
-  return vec4(1.0f, 2.0f, 3.0f, 4.0f);
-}
-float16_t main() {
-  return 2.25hf;
-}
-f16vec3 main() {
+layout(location = 5) out f16vec3 main5_loc5_Output;
+f16vec3 main5_inner() {
   return f16vec3(3.0hf, 5.0hf, 8.0hf);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'int' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  main5_loc5_Output = main5_inner();
+}
diff --git a/test/tint/types/functions/shader_io/interpolate_input_parameters.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/interpolate_input_parameters.wgsl.expected.ir.glsl
index e3fa2a7..d67e624 100644
--- a/test/tint/types/functions/shader_io/interpolate_input_parameters.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/interpolate_input_parameters.wgsl.expected.ir.glsl
@@ -1,18 +1,20 @@
-SKIP: FAILED
-
 #version 310 es
 precision highp float;
 precision highp int;
 
 
-void main(float none, float tint_symbol_1, float perspective_center, float perspective_centroid, float perspective_sample, float linear_center, float linear_centroid, float linear_sample, float perspective_default, float linear_default) {
+layout(location = 0) in float tint_symbol_loc0_Input;
+layout(location = 1) flat in float tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) centroid in float tint_symbol_loc3_Input;
+layout(location = 4) in float tint_symbol_loc4_Input;
+layout(location = 5) in float tint_symbol_loc5_Input;
+layout(location = 6) centroid in float tint_symbol_loc6_Input;
+layout(location = 7) in float tint_symbol_loc7_Input;
+layout(location = 8) in float tint_symbol_loc8_Input;
+layout(location = 9) in float tint_symbol_loc9_Input;
+void tint_symbol_inner(float none, float tint_symbol_1, float perspective_center, float perspective_centroid, float perspective_sample, float linear_center, float linear_centroid, float linear_sample, float perspective_default, float linear_default) {
 }
-error: Error parsing GLSL shader:
-ERROR: 0:6: 'main' : function cannot take any parameter(s) 
-ERROR: 0:6: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_inner(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input, tint_symbol_loc4_Input, tint_symbol_loc5_Input, tint_symbol_loc6_Input, tint_symbol_loc7_Input, tint_symbol_loc8_Input, tint_symbol_loc9_Input);
+}
diff --git a/test/tint/types/functions/shader_io/interpolate_return_struct.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/interpolate_return_struct.wgsl.expected.ir.glsl
index b160b8d..1cba7bc 100644
--- a/test/tint/types/functions/shader_io/interpolate_return_struct.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/interpolate_return_struct.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct Out {
@@ -14,15 +12,29 @@
   float linear_sample;
 };
 
-Out main() {
+layout(location = 0) out float tint_symbol_1_loc0_Output;
+layout(location = 1) flat out float tint_symbol_1_loc1_Output;
+layout(location = 2) out float tint_symbol_1_loc2_Output;
+layout(location = 3) centroid out float tint_symbol_1_loc3_Output;
+layout(location = 4) out float tint_symbol_1_loc4_Output;
+layout(location = 5) out float tint_symbol_1_loc5_Output;
+layout(location = 6) centroid out float tint_symbol_1_loc6_Output;
+layout(location = 7) out float tint_symbol_1_loc7_Output;
+Out tint_symbol_1_inner() {
   return Out(vec4(0.0f), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'structure' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  Out v = tint_symbol_1_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  tint_symbol_1_loc0_Output = v.none;
+  tint_symbol_1_loc1_Output = v.tint_symbol;
+  tint_symbol_1_loc2_Output = v.perspective_center;
+  tint_symbol_1_loc3_Output = v.perspective_centroid;
+  tint_symbol_1_loc4_Output = v.perspective_sample;
+  tint_symbol_1_loc5_Output = v.linear_center;
+  tint_symbol_1_loc6_Output = v.linear_centroid;
+  tint_symbol_1_loc7_Output = v.linear_sample;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/invariant.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/invariant.wgsl.expected.ir.glsl
index 34cb462..c9cfc30 100644
--- a/test/tint/types/functions/shader_io/invariant.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/invariant.wgsl.expected.ir.glsl
@@ -1,16 +1,11 @@
-SKIP: FAILED
-
 #version 310 es
 
-vec4 main() {
+vec4 tint_symbol_inner() {
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'float' :  entry point cannot return a value
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner();
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/invariant_struct_member.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/invariant_struct_member.wgsl.expected.ir.glsl
index b0981a6..0fc5a09 100644
--- a/test/tint/types/functions/shader_io/invariant_struct_member.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/invariant_struct_member.wgsl.expected.ir.glsl
@@ -1,20 +1,15 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct Out {
   vec4 pos;
 };
 
-Out main() {
+Out tint_symbol_inner() {
   return Out(vec4(0.0f));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'structure' :  entry point cannot return a value
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner().pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/shared_struct_helper_function.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/shared_struct_helper_function.wgsl.expected.ir.glsl
index 0cbddc6..c31a09d 100644
--- a/test/tint/types/functions/shader_io/shared_struct_helper_function.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/shared_struct_helper_function.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct VertexOutput {
@@ -7,22 +5,21 @@
   int loc0;
 };
 
+layout(location = 0) flat out int vert_main1_loc0_Output;
 VertexOutput foo(float x) {
   return VertexOutput(vec4(x, x, x, 1.0f), 42);
 }
-VertexOutput main() {
+VertexOutput vert_main1_inner() {
   return foo(0.5f);
 }
-VertexOutput main() {
-  return foo(0.25f);
+void main() {
+  VertexOutput v = vert_main1_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vert_main1_loc0_Output = v.loc0;
+  gl_PointSize = 1.0f;
 }
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 struct VertexOutput {
@@ -30,21 +27,18 @@
   int loc0;
 };
 
+layout(location = 0) flat out int vert_main2_loc0_Output;
 VertexOutput foo(float x) {
   return VertexOutput(vec4(x, x, x, 1.0f), 42);
 }
-VertexOutput main() {
-  return foo(0.5f);
-}
-VertexOutput main() {
+VertexOutput vert_main2_inner() {
   return foo(0.25f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutput v = vert_main2_inner();
+  gl_Position = v.pos;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  vert_main2_loc0_Output = v.loc0;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_input_locations.wgsl.expected.ir.glsl
index 2048c71..db4424f 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations.wgsl.expected.ir.glsl
@@ -1,21 +1,19 @@
-SKIP: FAILED
-
 #version 310 es
 
-vec4 main(int loc0, uint loc1, float loc2, vec4 loc3) {
+layout(location = 0) in int tint_symbol_loc0_Input;
+layout(location = 1) in uint tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) in vec4 tint_symbol_loc3_Input;
+vec4 tint_symbol_inner(int loc0, uint loc1, float loc2, vec4 loc3) {
   int i = loc0;
   uint u = loc1;
   float f = loc2;
   vec4 v = loc3;
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'main' : function cannot take any parameter(s) 
-ERROR: 0:3: 'float' :  entry point cannot return a value
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input);
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.glsl
index 12042c8..fe26de7 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_f16.wgsl.expected.ir.glsl
@@ -1,9 +1,13 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
-vec4 main(int loc0, uint loc1, float loc2, vec4 loc3, float16_t loc4, f16vec3 loc5) {
+layout(location = 0) in int tint_symbol_loc0_Input;
+layout(location = 1) in uint tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) in vec4 tint_symbol_loc3_Input;
+layout(location = 4) in float16_t tint_symbol_loc4_Input;
+layout(location = 5) in f16vec3 tint_symbol_loc5_Input;
+vec4 tint_symbol_inner(int loc0, uint loc1, float loc2, vec4 loc3, float16_t loc4, f16vec3 loc5) {
   int i = loc0;
   uint u = loc1;
   float f = loc2;
@@ -12,13 +16,9 @@
   f16vec3 y = loc5;
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: 'main' : function cannot take any parameter(s) 
-ERROR: 0:4: 'float' :  entry point cannot return a value
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input, tint_symbol_loc4_Input, tint_symbol_loc5_Input);
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_struct.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_input_locations_struct.wgsl.expected.ir.glsl
index 43d99f7..215b725 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_struct.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_struct.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct VertexInputs {
@@ -9,20 +7,20 @@
   vec4 loc3;
 };
 
-vec4 main(VertexInputs inputs) {
+layout(location = 0) in int tint_symbol_loc0_Input;
+layout(location = 1) in uint tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) in vec4 tint_symbol_loc3_Input;
+vec4 tint_symbol_inner(VertexInputs inputs) {
   int i = inputs.loc0;
   uint u = inputs.loc1;
   float f = inputs.loc2;
   vec4 v = inputs.loc3;
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'main' : function cannot take any parameter(s) 
-ERROR: 0:10: 'float' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner(VertexInputs(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input));
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.glsl
index ad4d582..4d09d08 100644
--- a/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_input_locations_struct_f16.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -12,7 +10,13 @@
   f16vec3 loc5;
 };
 
-vec4 main(VertexInputs inputs) {
+layout(location = 0) in int tint_symbol_loc0_Input;
+layout(location = 1) in uint tint_symbol_loc1_Input;
+layout(location = 2) in float tint_symbol_loc2_Input;
+layout(location = 3) in vec4 tint_symbol_loc3_Input;
+layout(location = 4) in float16_t tint_symbol_loc4_Input;
+layout(location = 5) in f16vec3 tint_symbol_loc5_Input;
+vec4 tint_symbol_inner(VertexInputs inputs) {
   int i = inputs.loc0;
   uint u = inputs.loc1;
   float f = inputs.loc2;
@@ -21,13 +25,9 @@
   f16vec3 y = inputs.loc5;
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'float' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner(VertexInputs(tint_symbol_loc0_Input, tint_symbol_loc1_Input, tint_symbol_loc2_Input, tint_symbol_loc3_Input, tint_symbol_loc4_Input, tint_symbol_loc5_Input));
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_output_builtins.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_output_builtins.wgsl.expected.ir.glsl
index 99a9459..40d9dce 100644
--- a/test/tint/types/functions/shader_io/vertex_output_builtins.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_output_builtins.wgsl.expected.ir.glsl
@@ -1,16 +1,11 @@
-SKIP: FAILED
-
 #version 310 es
 
-vec4 main() {
+vec4 tint_symbol_inner() {
   return vec4(1.0f, 2.0f, 3.0f, 4.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:3: 'float' :  entry point cannot return a value
-ERROR: 0:3: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner();
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_output_builtins_struct.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_output_builtins_struct.wgsl.expected.ir.glsl
index 47eb54a..d5c2e6e 100644
--- a/test/tint/types/functions/shader_io/vertex_output_builtins_struct.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_output_builtins_struct.wgsl.expected.ir.glsl
@@ -1,20 +1,15 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct VertexOutputs {
   vec4 position;
 };
 
-VertexOutputs main() {
+VertexOutputs tint_symbol_inner() {
   return VertexOutputs(vec4(1.0f, 2.0f, 3.0f, 4.0f));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'structure' :  entry point cannot return a value
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  gl_Position = tint_symbol_inner().position;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_output_locations_struct.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_output_locations_struct.wgsl.expected.ir.glsl
index be2cfa0..fc28ee7 100644
--- a/test/tint/types/functions/shader_io/vertex_output_locations_struct.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_output_locations_struct.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 
 struct VertexOutputs {
@@ -10,15 +8,21 @@
   vec4 position;
 };
 
-VertexOutputs main() {
+layout(location = 0) flat out int tint_symbol_loc0_Output;
+layout(location = 1) flat out uint tint_symbol_loc1_Output;
+layout(location = 2) out float tint_symbol_loc2_Output;
+layout(location = 3) out vec4 tint_symbol_loc3_Output;
+VertexOutputs tint_symbol_inner() {
   return VertexOutputs(1, 1u, 1.0f, vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(0.0f));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutputs v = tint_symbol_inner();
+  tint_symbol_loc0_Output = v.loc0;
+  tint_symbol_loc1_Output = v.loc1;
+  tint_symbol_loc2_Output = v.loc2;
+  tint_symbol_loc3_Output = v.loc3;
+  gl_Position = v.position;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.glsl b/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.glsl
index b2540fd..250760d 100644
--- a/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.glsl
+++ b/test/tint/types/functions/shader_io/vertex_output_locations_struct_f16.wgsl.expected.ir.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float: require
 
@@ -13,15 +11,25 @@
   f16vec3 loc5;
 };
 
-VertexOutputs main() {
+layout(location = 0) flat out int tint_symbol_loc0_Output;
+layout(location = 1) flat out uint tint_symbol_loc1_Output;
+layout(location = 2) out float tint_symbol_loc2_Output;
+layout(location = 3) out vec4 tint_symbol_loc3_Output;
+layout(location = 4) out float16_t tint_symbol_loc4_Output;
+layout(location = 5) out f16vec3 tint_symbol_loc5_Output;
+VertexOutputs tint_symbol_inner() {
   return VertexOutputs(1, 1u, 1.0f, vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(0.0f), 2.25hf, f16vec3(3.0hf, 5.0hf, 8.0hf));
 }
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  VertexOutputs v = tint_symbol_inner();
+  tint_symbol_loc0_Output = v.loc0;
+  tint_symbol_loc1_Output = v.loc1;
+  tint_symbol_loc2_Output = v.loc2;
+  tint_symbol_loc3_Output = v.loc3;
+  gl_Position = v.position;
+  gl_Position[1u] = -(gl_Position.y);
+  gl_Position[2u] = ((2.0f * gl_Position.z) - gl_Position.w);
+  tint_symbol_loc4_Output = v.loc4;
+  tint_symbol_loc5_Output = v.loc5;
+  gl_PointSize = 1.0f;
+}
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 49694ea..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uint x_1 = 0u;
-void main_1() {
-  uint x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uint x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.glsl
deleted file mode 100644
index 839d347..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uvec3 x_1 = uvec3(0u);
-void main_1() {
-  uvec3 x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.glsl
deleted file mode 100644
index 839d347..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uvec3 x_1 = uvec3(0u);
-void main_1() {
-  uvec3 x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_6.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_6.spvasm.expected.ir.glsl
deleted file mode 100644
index b9bf526..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_6.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-void main_1(uvec3 tint_wgid) {
-  uvec3 x_2 = tint_wgid;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  main_1(x_1_param);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'main' : function cannot take any parameter(s) 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 49694ea..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uint x_1 = 0u;
-void main_1() {
-  uint x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uint x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.glsl
deleted file mode 100644
index 839d347..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uvec3 x_1 = uvec3(0u);
-void main_1() {
-  uvec3 x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.glsl
deleted file mode 100644
index 839d347..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uvec3 x_1 = uvec3(0u);
-void main_1() {
-  uvec3 x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_6.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_6.spvasm.expected.ir.glsl
deleted file mode 100644
index b9bf526..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_6.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-void main_1(uvec3 tint_wgid) {
-  uvec3 x_2 = tint_wgid;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  main_1(x_1_param);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'main' : function cannot take any parameter(s) 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 49694ea..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uint x_1 = 0u;
-void main_1() {
-  uint x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uint x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.glsl
deleted file mode 100644
index 839d347..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uvec3 x_1 = uvec3(0u);
-void main_1() {
-  uvec3 x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.glsl
deleted file mode 100644
index 839d347..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-uvec3 x_1 = uvec3(0u);
-void main_1() {
-  uvec3 x_2 = x_1;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  x_1 = x_1_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:8: 'main' : function cannot take any parameter(s) 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_6.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_6.spvasm.expected.ir.glsl
deleted file mode 100644
index b9bf526..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_6.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-void main_1(uvec3 tint_wgid) {
-  uvec3 x_2 = tint_wgid;
-}
-layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
-void main(uvec3 x_1_param) {
-  main_1(x_1_param);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:7: 'main' : function cannot take any parameter(s) 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.glsl
deleted file mode 100644
index e319c22..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,26 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-vec4 x_2 = vec4(0.0f);
-float x_900 = 0.0f;
-void main_1() {
-  x_900 = 1.0f;
-}
-main_out main() {
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'structure' :  entry point cannot return a value
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.glsl
deleted file mode 100644
index 139d152..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.glsl
deleted file mode 100644
index 139d152..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.glsl
deleted file mode 100644
index 139d152..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.glsl
deleted file mode 100644
index b36056c..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,26 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-float x_900 = 0.0f;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  x_900 = 1.0f;
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'structure' :  entry point cannot return a value
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.glsl
deleted file mode 100644
index ddd8c5a..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.glsl
deleted file mode 100644
index ddd8c5a..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.glsl
deleted file mode 100644
index ddd8c5a..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.glsl
deleted file mode 100644
index 42caa1f..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(1.0f, 2.0f, 3.0f, 4.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.glsl
deleted file mode 100644
index 239d5e5..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = vec4(0.0f);
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.glsl
deleted file mode 100644
index 066ef74..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol[1u] = 0.0f;
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.glsl
deleted file mode 100644
index 066ef74..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol[1u] = 0.0f;
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.glsl
deleted file mode 100644
index 239d5e5..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = vec4(0.0f);
-}
-main_out main() {
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.ir.glsl
deleted file mode 100644
index 0f9cde2..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_IOLocations.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  uint x_2_1;
-  uint x_4_1;
-};
-precision highp float;
-precision highp int;
-
-
-uint x_1 = 0u;
-uint x_2 = 0u;
-uint x_3 = 0u;
-uint x_4 = 0u;
-void main_1() {
-}
-main_out main(uint x_1_param, uint x_3_param) {
-  x_1 = x_1_param;
-  x_3 = x_3_param;
-  main_1();
-  return main_out(x_2, x_4);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function cannot take any parameter(s) 
-ERROR: 0:17: 'structure' :  entry point cannot return a value
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_Output.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_Output.spvasm.expected.ir.glsl
deleted file mode 100644
index 57a4286..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_Output.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  uint x_1_1;
-  uvec2 x_2_1;
-  int x_3_1;
-  ivec2 x_4_1;
-  float x_5_1;
-  vec2 x_6_1;
-  vec4 x_8_1;
-};
-
-uint x_1 = 0u;
-uvec2 x_2 = uvec2(0u);
-int x_3 = 0;
-ivec2 x_4 = ivec2(0);
-float x_5 = 0.0f;
-vec2 x_6 = vec2(0.0f);
-vec4 x_8 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_1, x_2, x_3, x_4, x_5, x_6, x_8);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'structure' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Floating_Fragment_In.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Floating_Fragment_In.spvasm.expected.ir.glsl
deleted file mode 100644
index 738e45d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Floating_Fragment_In.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision highp float;
-precision highp int;
-
-
-float x_1 = 0.0f;
-float x_2 = 0.0f;
-float x_3 = 0.0f;
-float x_4 = 0.0f;
-float x_5 = 0.0f;
-float x_6 = 0.0f;
-void main_1() {
-}
-void main(float x_1_param, float x_2_param, float x_3_param, float x_4_param, float x_5_param, float x_6_param) {
-  x_1 = x_1_param;
-  x_2 = x_2_param;
-  x_3 = x_3_param;
-  x_4 = x_4_param;
-  x_5 = x_5_param;
-  x_6 = x_6_param;
-  main_1();
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_FlattenStruct_LocOnMembers.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_FlattenStruct_LocOnMembers.spvasm.expected.ir.glsl
deleted file mode 100644
index 3f0d5bc..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_FlattenStruct_LocOnMembers.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct Communicators {
-  float alice;
-  vec4 bob;
-};
-
-struct main_out {
-  vec4 x_2_1;
-  float x_3_1;
-  vec4 x_3_2;
-};
-
-Communicators x_1 = Communicators(0.0f, vec4(0.0f));
-Communicators x_3 = Communicators(0.0f, vec4(0.0f));
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main(float x_1_param, vec4 x_1_param_1) {
-  x_1.alice = x_1_param;
-  x_1.bob = x_1_param_1;
-  main_1();
-  return main_out(x_2, x_3.alice, x_3.bob);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:19: 'main' : function cannot take any parameter(s) 
-ERROR: 0:19: 'structure' :  entry point cannot return a value
-ERROR: 0:19: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenArray_OneLevel.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenArray_OneLevel.spvasm.expected.ir.glsl
deleted file mode 100644
index 2623fc7..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenArray_OneLevel.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-float x_1[3] = float[3](0.0f, 0.0f, 0.0f);
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main(float x_1_param, float x_1_param_1, float x_1_param_2) {
-  x_1[0] = x_1_param;
-  x_1[1] = x_1_param_1;
-  x_1[2] = x_1_param_2;
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'main' : function cannot take any parameter(s) 
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenMatrix.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenMatrix.spvasm.expected.ir.glsl
deleted file mode 100644
index 244ebfd..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenMatrix.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-mat2x4 x_1 = mat2x4(vec4(0.0f), vec4(0.0f));
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main(vec4 x_1_param, vec4 x_1_param_1) {
-  x_1[0] = x_1_param;
-  x_1[1] = x_1_param_1;
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'main' : function cannot take any parameter(s) 
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenNested.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenNested.spvasm.expected.ir.glsl
deleted file mode 100644
index ba7a5b4..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenNested.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-mat2x4 x_1[2] = mat2x4[2](mat2x4(vec4(0.0f), vec4(0.0f)), mat2x4(vec4(0.0f), vec4(0.0f)));
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main(vec4 x_1_param, vec4 x_1_param_1, vec4 x_1_param_2, vec4 x_1_param_3) {
-  x_1[0][0] = x_1_param;
-  x_1[0][1] = x_1_param_1;
-  x_1[1][0] = x_1_param_2;
-  x_1[1][1] = x_1_param_3;
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:11: 'main' : function cannot take any parameter(s) 
-ERROR: 0:11: 'structure' :  entry point cannot return a value
-ERROR: 0:11: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenStruct_LocOnVariable.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenStruct_LocOnVariable.spvasm.expected.ir.glsl
deleted file mode 100644
index 14d881d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Input_FlattenStruct_LocOnVariable.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct Communicators {
-  float alice;
-  vec4 bob;
-};
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-Communicators x_1 = Communicators(0.0f, vec4(0.0f));
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main(float x_1_param, vec4 x_1_param_1) {
-  x_1.alice = x_1_param;
-  x_1.bob = x_1_param_1;
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'main' : function cannot take any parameter(s) 
-ERROR: 0:16: 'structure' :  entry point cannot return a value
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenArray_OneLevel.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenArray_OneLevel.spvasm.expected.ir.glsl
deleted file mode 100644
index e0fca8a..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenArray_OneLevel.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  float x_1_1;
-  float x_1_2;
-  float x_1_3;
-  vec4 x_2_1;
-};
-
-float x_1[3] = float[3](0.0f, 0.0f, 0.0f);
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_1[0], x_1[1], x_1[2], x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenMatrix.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenMatrix.spvasm.expected.ir.glsl
deleted file mode 100644
index 9c0b7ba..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenMatrix.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_1_1;
-  vec4 x_1_2;
-  vec4 x_2_1;
-};
-
-mat2x4 x_1 = mat2x4(vec4(0.0f), vec4(0.0f));
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_1[0], x_1[1], x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenStruct_LocOnVariable.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenStruct_LocOnVariable.spvasm.expected.ir.glsl
deleted file mode 100644
index 5baf936..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_Output_FlattenStruct_LocOnVariable.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct Communicators {
-  float alice;
-  vec4 bob;
-};
-
-struct main_out {
-  float x_1_1;
-  vec4 x_1_2;
-  vec4 x_2_1;
-};
-
-Communicators x_1 = Communicators(0.0f, vec4(0.0f));
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_1.alice, x_1.bob, x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:18: 'structure' :  entry point cannot return a value
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.glsl
deleted file mode 100644
index 139d152..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 x_2_1;
-};
-
-vec4 x_2 = vec4(0.0f);
-void main_1() {
-}
-main_out main() {
-  main_1();
-  return main_out(x_2);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:10: 'structure' :  entry point cannot return a value
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/var/inferred/function.wgsl.expected.ir.glsl b/test/tint/var/inferred/function.wgsl.expected.ir.glsl
index 84ebdbd..477f56d 100644
--- a/test/tint/var/inferred/function.wgsl.expected.ir.glsl
+++ b/test/tint/var/inferred/function.wgsl.expected.ir.glsl
@@ -1,55 +1,12 @@
-SKIP: FAILED
-
 #version 310 es
-
-struct MyStruct {
-  float f1;
-};
 precision highp float;
 precision highp int;
 
 
-int ret_i32() {
-  return 1;
-}
-uint ret_u32() {
-  return 1u;
-}
-float ret_f32() {
-  return 1.0f;
-}
-MyStruct ret_MyStruct() {
-  return MyStruct(0.0f);
-}
-float[10] ret_MyArray() {
-  return float[10](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-}
-void var_decls() {
-  int v1 = 1;
-  uint v2 = 1u;
-  float v3 = 1.0f;
-  ivec3 v4 = ivec3(1);
-  uvec3 v5 = uvec3(1u);
-  vec3 v6 = vec3(1.0f);
-  mat3 v7 = mat3(v6, v6, v6);
-  MyStruct v8 = MyStruct(1.0f);
-  float v9[10] = float[10](0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
-  int v10 = ret_i32();
-  uint v11 = ret_u32();
-  float v12 = ret_f32();
-  MyStruct v13 = ret_MyStruct();
-  MyStruct v14 = ret_MyStruct();
-  float v15[10] = ret_MyArray();
-}
-vec4 main() {
+layout(location = 0) out vec4 tint_symbol_loc0_Output;
+vec4 tint_symbol_inner() {
   return vec4(0.0f);
 }
-error: Error parsing GLSL shader:
-ERROR: 0:4: 'float' : type requires declaration of default precision qualifier 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
+void main() {
+  tint_symbol_loc0_Output = tint_symbol_inner();
+}
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.ir.glsl
deleted file mode 100644
index 08efa7e..0000000
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct block0 {
-  vec4 in_color;
-};
-
-struct main_out {
-  vec4 tint_symbol;
-  vec4 frag_color_1;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 frag_color = vec4(0.0f);
-uniform block0 x_8;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = position_1;
-  frag_color = x_8.in_color;
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol, frag_color);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:20: 'main' : function cannot take any parameter(s) 
-ERROR: 0:20: 'structure' :  entry point cannot return a value
-ERROR: 0:20: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.ir.glsl
deleted file mode 100644
index ba1243a..0000000
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_graphics/0.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,38 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct block0 {
-  vec4 in_color;
-};
-
-struct main_out {
-  vec4 tint_symbol;
-  vec4 frag_color_1;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 frag_color = vec4(0.0f);
-uniform block0 x_8;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_24 = pos;
-  tint_symbol = x_24;
-  vec4 x_27 = x_8.in_color;
-  frag_color = x_27;
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol, frag_color);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:22: 'main' : function cannot take any parameter(s) 
-ERROR: 0:22: 'structure' :  entry point cannot return a value
-ERROR: 0:22: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 1d6d6b8..0000000
--- a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-  vec4 frag_color_1;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = position_1;
-  frag_color = (position_1 * 0.5f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol, frag_color);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'main' : function cannot take any parameter(s) 
-ERROR: 0:15: 'structure' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 4a81972..0000000
--- a/test/tint/vk-gl-cts/combined_operations/negintdivand/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-  vec4 frag_color_1;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_21 = pos;
-  tint_symbol = x_21;
-  vec4 x_23 = pos;
-  frag_color = (x_23 * 0.5f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol, frag_color);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function cannot take any parameter(s) 
-ERROR: 0:17: 'structure' :  entry point cannot return a value
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index b9dea0d..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,199 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_34;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  temp = obj.numbers[i];
-  int x_242 = i;
-  obj.numbers[x_242] = obj.numbers[j];
-  int x_247 = j;
-  obj.numbers[x_247] = temp;
-}
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  pivot = obj.numbers[h];
-  i_1 = (l - 1);
-  j_1 = l;
-  {
-    while(true) {
-      if ((j_1 <= (h - 1))) {
-      } else {
-        break;
-      }
-      if ((obj.numbers[j_1] <= pivot)) {
-        i_1 = (i_1 + 1);
-        param = i_1;
-        param_1 = j_1;
-        swap_i1_i1_(param, param_1);
-      }
-      {
-        j_1 = (j_1 + 1);
-      }
-      continue;
-    }
-  }
-  param_2 = (i_1 + 1);
-  param_3 = h;
-  swap_i1_i1_(param_2, param_3);
-  int x_284 = i_1;
-  return (x_284 + 1);
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_288 = (top + 1);
-  top = x_288;
-  stack[x_288] = l_1;
-  int x_292 = (top + 1);
-  top = x_292;
-  stack[x_292] = h_1;
-  {
-    while(true) {
-      if ((top >= 0)) {
-      } else {
-        break;
-      }
-      int x_302 = top;
-      top = (top - 1);
-      h_1 = stack[x_302];
-      int x_306 = top;
-      top = (top - 1);
-      l_1 = stack[x_306];
-      param_4 = l_1;
-      param_5 = h_1;
-      int x_312 = performPartition_i1_i1_(param_4, param_5);
-      p = x_312;
-      if (((p - 1) > l_1)) {
-        int x_320 = (top + 1);
-        top = x_320;
-        stack[x_320] = l_1;
-        int x_324 = (top + 1);
-        top = x_324;
-        stack[x_324] = (p - 1);
-      }
-      if (((p + 1) < h_1)) {
-        int x_335 = (top + 1);
-        top = x_335;
-        stack[x_335] = (p + 1);
-        int x_340 = (top + 1);
-        top = x_340;
-        stack[x_340] = h_1;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-void main_1() {
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  x_GLF_FragCoord = ((x_GLF_pos + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      if ((i_2 < 10)) {
-      } else {
-        break;
-      }
-      int x_100 = i_2;
-      obj.numbers[x_100] = (10 - i_2);
-      int x_104 = i_2;
-      obj.numbers[x_104] = (obj.numbers[i_2] * obj.numbers[i_2]);
-      {
-        i_2 = (i_2 + 1);
-      }
-      continue;
-    }
-  }
-  quicksort_();
-  uv = (x_GLF_FragCoord.xy / x_34.resolution);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  float v = color.x;
-  color[0u] = (v + float(obj.numbers[0]));
-  if ((uv.x > 0.25f)) {
-    float v_1 = color.x;
-    color[0u] = (v_1 + float(obj.numbers[1]));
-  }
-  if ((uv.x > 0.5f)) {
-    float v_2 = color.y;
-    color[1u] = (v_2 + float(obj.numbers[2]));
-  }
-  if ((uv.x > 0.75f)) {
-    float v_3 = color.z;
-    color[2u] = (v_3 + float(obj.numbers[3]));
-  }
-  float v_4 = color.y;
-  color[1u] = (v_4 + float(obj.numbers[4]));
-  if ((uv.y > 0.25f)) {
-    float v_5 = color.x;
-    color[0u] = (v_5 + float(obj.numbers[5]));
-  }
-  if ((uv.y > 0.5f)) {
-    float v_6 = color.y;
-    color[1u] = (v_6 + float(obj.numbers[6]));
-  }
-  if ((uv.y > 0.75f)) {
-    float v_7 = color.z;
-    color[2u] = (v_7 + float(obj.numbers[7]));
-  }
-  float v_8 = color.z;
-  color[2u] = (v_8 + float(obj.numbers[8]));
-  if ((abs((uv.x - uv.y)) < 0.25f)) {
-    float v_9 = color.x;
-    color[0u] = (v_9 + float(obj.numbers[9]));
-  }
-  vec3 x_231 = normalize(color);
-  frag_color = vec4(x_231[0u], x_231[1u], x_231[2u], 1.0f);
-  tint_symbol = x_GLF_pos;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:183: 'main' : function cannot take any parameter(s) 
-ERROR: 0:183: 'structure' :  entry point cannot return a value
-ERROR: 0:183: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 571db4b..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,270 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_34;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  int x_239 = i;
-  int x_241 = obj.numbers[x_239];
-  temp = x_241;
-  int x_242 = i;
-  int x_243 = j;
-  int x_245 = obj.numbers[x_243];
-  obj.numbers[x_242] = x_245;
-  int x_247 = j;
-  int x_248 = temp;
-  obj.numbers[x_247] = x_248;
-}
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  int x_251 = h;
-  int x_253 = obj.numbers[x_251];
-  pivot = x_253;
-  int x_254 = l;
-  i_1 = (x_254 - 1);
-  int x_256 = l;
-  j_1 = x_256;
-  {
-    while(true) {
-      int x_261 = j_1;
-      int x_262 = h;
-      if ((x_261 <= (x_262 - 1))) {
-      } else {
-        break;
-      }
-      int x_266 = j_1;
-      int x_268 = obj.numbers[x_266];
-      int x_269 = pivot;
-      if ((x_268 <= x_269)) {
-        int x_273 = i_1;
-        i_1 = (x_273 + 1);
-        int x_275 = i_1;
-        param = x_275;
-        int x_276 = j_1;
-        param_1 = x_276;
-        swap_i1_i1_(param, param_1);
-      }
-      {
-        int x_278 = j_1;
-        j_1 = (x_278 + 1);
-      }
-      continue;
-    }
-  }
-  int x_280 = i_1;
-  param_2 = (x_280 + 1);
-  int x_282 = h;
-  param_3 = x_282;
-  swap_i1_i1_(param_2, param_3);
-  int x_284 = i_1;
-  return (x_284 + 1);
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_287 = top;
-  int x_288 = (x_287 + 1);
-  top = x_288;
-  int x_289 = l_1;
-  stack[x_288] = x_289;
-  int x_291 = top;
-  int x_292 = (x_291 + 1);
-  top = x_292;
-  int x_293 = h_1;
-  stack[x_292] = x_293;
-  {
-    while(true) {
-      int x_299 = top;
-      if ((x_299 >= 0)) {
-      } else {
-        break;
-      }
-      int x_302 = top;
-      top = (x_302 - 1);
-      int x_305 = stack[x_302];
-      h_1 = x_305;
-      int x_306 = top;
-      top = (x_306 - 1);
-      int x_309 = stack[x_306];
-      l_1 = x_309;
-      int x_310 = l_1;
-      param_4 = x_310;
-      int x_311 = h_1;
-      param_5 = x_311;
-      int x_312 = performPartition_i1_i1_(param_4, param_5);
-      p = x_312;
-      int x_313 = p;
-      int x_315 = l_1;
-      if (((x_313 - 1) > x_315)) {
-        int x_319 = top;
-        int x_320 = (x_319 + 1);
-        top = x_320;
-        int x_321 = l_1;
-        stack[x_320] = x_321;
-        int x_323 = top;
-        int x_324 = (x_323 + 1);
-        top = x_324;
-        int x_325 = p;
-        stack[x_324] = (x_325 - 1);
-      }
-      int x_328 = p;
-      int x_330 = h_1;
-      if (((x_328 + 1) < x_330)) {
-        int x_334 = top;
-        int x_335 = (x_334 + 1);
-        top = x_335;
-        int x_336 = p;
-        stack[x_335] = (x_336 + 1);
-        int x_339 = top;
-        int x_340 = (x_339 + 1);
-        top = x_340;
-        int x_341 = h_1;
-        stack[x_340] = x_341;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-void main_1() {
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  vec4 x_90 = x_GLF_pos;
-  x_GLF_FragCoord = ((x_90 + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      int x_97 = i_2;
-      if ((x_97 < 10)) {
-      } else {
-        break;
-      }
-      int x_100 = i_2;
-      int x_101 = i_2;
-      obj.numbers[x_100] = (10 - x_101);
-      int x_104 = i_2;
-      int x_105 = i_2;
-      int x_107 = obj.numbers[x_105];
-      int x_108 = i_2;
-      int x_110 = obj.numbers[x_108];
-      obj.numbers[x_104] = (x_107 * x_110);
-      {
-        int x_113 = i_2;
-        i_2 = (x_113 + 1);
-      }
-      continue;
-    }
-  }
-  quicksort_();
-  vec4 x_116 = x_GLF_FragCoord;
-  vec2 x_119 = x_34.resolution;
-  uv = (vec2(x_116[0u], x_116[1u]) / x_119);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  int x_122 = obj.numbers[0];
-  float x_125 = color.x;
-  color[0u] = (x_125 + float(x_122));
-  float x_129 = uv.x;
-  if ((x_129 > 0.25f)) {
-    int x_134 = obj.numbers[1];
-    float x_137 = color.x;
-    color[0u] = (x_137 + float(x_134));
-  }
-  float x_141 = uv.x;
-  if ((x_141 > 0.5f)) {
-    int x_146 = obj.numbers[2];
-    float x_149 = color.y;
-    color[1u] = (x_149 + float(x_146));
-  }
-  float x_153 = uv.x;
-  if ((x_153 > 0.75f)) {
-    int x_158 = obj.numbers[3];
-    float x_161 = color.z;
-    color[2u] = (x_161 + float(x_158));
-  }
-  int x_165 = obj.numbers[4];
-  float x_168 = color.y;
-  color[1u] = (x_168 + float(x_165));
-  float x_172 = uv.y;
-  if ((x_172 > 0.25f)) {
-    int x_177 = obj.numbers[5];
-    float x_180 = color.x;
-    color[0u] = (x_180 + float(x_177));
-  }
-  float x_184 = uv.y;
-  if ((x_184 > 0.5f)) {
-    int x_189 = obj.numbers[6];
-    float x_192 = color.y;
-    color[1u] = (x_192 + float(x_189));
-  }
-  float x_196 = uv.y;
-  if ((x_196 > 0.75f)) {
-    int x_201 = obj.numbers[7];
-    float x_204 = color.z;
-    color[2u] = (x_204 + float(x_201));
-  }
-  int x_208 = obj.numbers[8];
-  float x_211 = color.z;
-  color[2u] = (x_211 + float(x_208));
-  float x_215 = uv.x;
-  float x_217 = uv.y;
-  if ((abs((x_215 - x_217)) < 0.25f)) {
-    int x_224 = obj.numbers[9];
-    float x_227 = color.x;
-    color[0u] = (x_227 + float(x_224));
-  }
-  vec3 x_230 = color;
-  vec3 x_231 = normalize(x_230);
-  frag_color = vec4(x_231[0u], x_231[1u], x_231[2u], 1.0f);
-  vec4 x_236 = x_GLF_pos;
-  tint_symbol = x_236;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:254: 'main' : function cannot take any parameter(s) 
-ERROR: 0:254: 'structure' :  entry point cannot return a value
-ERROR: 0:254: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 0eb1642..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,207 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 injectionSwitch;
-};
-
-struct buf1 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_33;
-uniform buf1 x_36;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  temp = obj.numbers[i];
-  int x_253 = i;
-  obj.numbers[x_253] = obj.numbers[j];
-  int x_258 = j;
-  obj.numbers[x_258] = temp;
-}
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  pivot = obj.numbers[h];
-  i_1 = (l - 1);
-  j_1 = l;
-  {
-    while(true) {
-      if ((j_1 <= (h - 1))) {
-      } else {
-        break;
-      }
-      if ((obj.numbers[j_1] <= pivot)) {
-        i_1 = (i_1 + 1);
-        param = i_1;
-        param_1 = j_1;
-        swap_i1_i1_(param, param_1);
-      }
-      {
-        j_1 = (j_1 + 1);
-      }
-      continue;
-    }
-  }
-  param_2 = (i_1 + 1);
-  param_3 = h;
-  swap_i1_i1_(param_2, param_3);
-  int x_295 = i_1;
-  return (x_295 + 1);
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_299 = (top + 1);
-  top = x_299;
-  stack[x_299] = l_1;
-  int x_303 = (top + 1);
-  top = x_303;
-  stack[x_303] = h_1;
-  {
-    while(true) {
-      if ((top >= 0)) {
-      } else {
-        break;
-      }
-      int x_313 = top;
-      top = (top - 1);
-      h_1 = stack[x_313];
-      int x_317 = top;
-      top = (top - 1);
-      l_1 = stack[x_317];
-      param_4 = l_1;
-      param_5 = h_1;
-      int x_323 = performPartition_i1_i1_(param_4, param_5);
-      p = x_323;
-      if (((p - 1) > l_1)) {
-        int x_331 = (top + 1);
-        top = x_331;
-        stack[x_331] = l_1;
-        int x_335 = (top + 1);
-        top = x_335;
-        stack[x_335] = (p - 1);
-      }
-      if (((p + 1) < h_1)) {
-        int x_346 = (top + 1);
-        top = x_346;
-        stack[x_346] = (p + 1);
-        int x_351 = (top + 1);
-        top = x_351;
-        stack[x_351] = h_1;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-void main_1() {
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  x_GLF_FragCoord = ((x_GLF_pos + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      if ((i_2 < 10)) {
-      } else {
-        break;
-      }
-      int x_104 = i_2;
-      obj.numbers[x_104] = (10 - i_2);
-      if ((x_33.injectionSwitch.x > x_33.injectionSwitch.y)) {
-        break;
-      }
-      int x_115 = i_2;
-      obj.numbers[x_115] = (obj.numbers[i_2] * obj.numbers[i_2]);
-      {
-        i_2 = (i_2 + 1);
-      }
-      continue;
-    }
-  }
-  quicksort_();
-  uv = (x_GLF_FragCoord.xy / x_36.resolution);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  float v = color.x;
-  color[0u] = (v + float(obj.numbers[0]));
-  if ((uv.x > 0.25f)) {
-    float v_1 = color.x;
-    color[0u] = (v_1 + float(obj.numbers[1]));
-  }
-  if ((uv.x > 0.5f)) {
-    float v_2 = color.y;
-    color[1u] = (v_2 + float(obj.numbers[2]));
-  }
-  if ((uv.x > 0.75f)) {
-    float v_3 = color.z;
-    color[2u] = (v_3 + float(obj.numbers[3]));
-  }
-  float v_4 = color.y;
-  color[1u] = (v_4 + float(obj.numbers[4]));
-  if ((uv.y > 0.25f)) {
-    float v_5 = color.x;
-    color[0u] = (v_5 + float(obj.numbers[5]));
-  }
-  if ((uv.y > 0.5f)) {
-    float v_6 = color.y;
-    color[1u] = (v_6 + float(obj.numbers[6]));
-  }
-  if ((uv.y > 0.75f)) {
-    float v_7 = color.z;
-    color[2u] = (v_7 + float(obj.numbers[7]));
-  }
-  float v_8 = color.z;
-  color[2u] = (v_8 + float(obj.numbers[8]));
-  if ((abs((uv.x - uv.y)) < 0.25f)) {
-    float v_9 = color.x;
-    color[0u] = (v_9 + float(obj.numbers[9]));
-  }
-  vec3 x_242 = normalize(color);
-  frag_color = vec4(x_242[0u], x_242[1u], x_242[2u], 1.0f);
-  tint_symbol = x_GLF_pos;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:191: 'main' : function cannot take any parameter(s) 
-ERROR: 0:191: 'structure' :  entry point cannot return a value
-ERROR: 0:191: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index c2e7021..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-for-loop-with-injection/2-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,280 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 injectionSwitch;
-};
-
-struct buf1 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_33;
-uniform buf1 x_36;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  int x_250 = i;
-  int x_252 = obj.numbers[x_250];
-  temp = x_252;
-  int x_253 = i;
-  int x_254 = j;
-  int x_256 = obj.numbers[x_254];
-  obj.numbers[x_253] = x_256;
-  int x_258 = j;
-  int x_259 = temp;
-  obj.numbers[x_258] = x_259;
-}
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  int x_262 = h;
-  int x_264 = obj.numbers[x_262];
-  pivot = x_264;
-  int x_265 = l;
-  i_1 = (x_265 - 1);
-  int x_267 = l;
-  j_1 = x_267;
-  {
-    while(true) {
-      int x_272 = j_1;
-      int x_273 = h;
-      if ((x_272 <= (x_273 - 1))) {
-      } else {
-        break;
-      }
-      int x_277 = j_1;
-      int x_279 = obj.numbers[x_277];
-      int x_280 = pivot;
-      if ((x_279 <= x_280)) {
-        int x_284 = i_1;
-        i_1 = (x_284 + 1);
-        int x_286 = i_1;
-        param = x_286;
-        int x_287 = j_1;
-        param_1 = x_287;
-        swap_i1_i1_(param, param_1);
-      }
-      {
-        int x_289 = j_1;
-        j_1 = (x_289 + 1);
-      }
-      continue;
-    }
-  }
-  int x_291 = i_1;
-  param_2 = (x_291 + 1);
-  int x_293 = h;
-  param_3 = x_293;
-  swap_i1_i1_(param_2, param_3);
-  int x_295 = i_1;
-  return (x_295 + 1);
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_298 = top;
-  int x_299 = (x_298 + 1);
-  top = x_299;
-  int x_300 = l_1;
-  stack[x_299] = x_300;
-  int x_302 = top;
-  int x_303 = (x_302 + 1);
-  top = x_303;
-  int x_304 = h_1;
-  stack[x_303] = x_304;
-  {
-    while(true) {
-      int x_310 = top;
-      if ((x_310 >= 0)) {
-      } else {
-        break;
-      }
-      int x_313 = top;
-      top = (x_313 - 1);
-      int x_316 = stack[x_313];
-      h_1 = x_316;
-      int x_317 = top;
-      top = (x_317 - 1);
-      int x_320 = stack[x_317];
-      l_1 = x_320;
-      int x_321 = l_1;
-      param_4 = x_321;
-      int x_322 = h_1;
-      param_5 = x_322;
-      int x_323 = performPartition_i1_i1_(param_4, param_5);
-      p = x_323;
-      int x_324 = p;
-      int x_326 = l_1;
-      if (((x_324 - 1) > x_326)) {
-        int x_330 = top;
-        int x_331 = (x_330 + 1);
-        top = x_331;
-        int x_332 = l_1;
-        stack[x_331] = x_332;
-        int x_334 = top;
-        int x_335 = (x_334 + 1);
-        top = x_335;
-        int x_336 = p;
-        stack[x_335] = (x_336 - 1);
-      }
-      int x_339 = p;
-      int x_341 = h_1;
-      if (((x_339 + 1) < x_341)) {
-        int x_345 = top;
-        int x_346 = (x_345 + 1);
-        top = x_346;
-        int x_347 = p;
-        stack[x_346] = (x_347 + 1);
-        int x_350 = top;
-        int x_351 = (x_350 + 1);
-        top = x_351;
-        int x_352 = h_1;
-        stack[x_351] = x_352;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-void main_1() {
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  vec4 x_94 = x_GLF_pos;
-  x_GLF_FragCoord = ((x_94 + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      int x_101 = i_2;
-      if ((x_101 < 10)) {
-      } else {
-        break;
-      }
-      int x_104 = i_2;
-      int x_105 = i_2;
-      obj.numbers[x_104] = (10 - x_105);
-      float x_109 = x_33.injectionSwitch.x;
-      float x_111 = x_33.injectionSwitch.y;
-      if ((x_109 > x_111)) {
-        break;
-      }
-      int x_115 = i_2;
-      int x_116 = i_2;
-      int x_118 = obj.numbers[x_116];
-      int x_119 = i_2;
-      int x_121 = obj.numbers[x_119];
-      obj.numbers[x_115] = (x_118 * x_121);
-      {
-        int x_124 = i_2;
-        i_2 = (x_124 + 1);
-      }
-      continue;
-    }
-  }
-  quicksort_();
-  vec4 x_127 = x_GLF_FragCoord;
-  vec2 x_130 = x_36.resolution;
-  uv = (vec2(x_127[0u], x_127[1u]) / x_130);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  int x_133 = obj.numbers[0];
-  float x_136 = color.x;
-  color[0u] = (x_136 + float(x_133));
-  float x_140 = uv.x;
-  if ((x_140 > 0.25f)) {
-    int x_145 = obj.numbers[1];
-    float x_148 = color.x;
-    color[0u] = (x_148 + float(x_145));
-  }
-  float x_152 = uv.x;
-  if ((x_152 > 0.5f)) {
-    int x_157 = obj.numbers[2];
-    float x_160 = color.y;
-    color[1u] = (x_160 + float(x_157));
-  }
-  float x_164 = uv.x;
-  if ((x_164 > 0.75f)) {
-    int x_169 = obj.numbers[3];
-    float x_172 = color.z;
-    color[2u] = (x_172 + float(x_169));
-  }
-  int x_176 = obj.numbers[4];
-  float x_179 = color.y;
-  color[1u] = (x_179 + float(x_176));
-  float x_183 = uv.y;
-  if ((x_183 > 0.25f)) {
-    int x_188 = obj.numbers[5];
-    float x_191 = color.x;
-    color[0u] = (x_191 + float(x_188));
-  }
-  float x_195 = uv.y;
-  if ((x_195 > 0.5f)) {
-    int x_200 = obj.numbers[6];
-    float x_203 = color.y;
-    color[1u] = (x_203 + float(x_200));
-  }
-  float x_207 = uv.y;
-  if ((x_207 > 0.75f)) {
-    int x_212 = obj.numbers[7];
-    float x_215 = color.z;
-    color[2u] = (x_215 + float(x_212));
-  }
-  int x_219 = obj.numbers[8];
-  float x_222 = color.z;
-  color[2u] = (x_222 + float(x_219));
-  float x_226 = uv.x;
-  float x_228 = uv.y;
-  if ((abs((x_226 - x_228)) < 0.25f)) {
-    int x_235 = obj.numbers[9];
-    float x_238 = color.x;
-    color[0u] = (x_238 + float(x_235));
-  }
-  vec3 x_241 = color;
-  vec3 x_242 = normalize(x_241);
-  frag_color = vec4(x_242[0u], x_242[1u], x_242[2u], 1.0f);
-  vec4 x_247 = x_GLF_pos;
-  tint_symbol = x_247;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:264: 'main' : function cannot take any parameter(s) 
-ERROR: 0:264: 'structure' :  entry point cannot return a value
-ERROR: 0:264: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.ir.glsl
deleted file mode 100644
index 672a453..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,293 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_34;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  int x_90 = 0;
-  int x_91 = 0;
-  int x_92 = 0;
-  int x_93 = 0;
-  int x_94 = 0;
-  int x_95 = 0;
-  int x_96 = 0;
-  int x_97 = 0;
-  int x_98 = 0;
-  int x_99 = 0;
-  int x_100 = 0;
-  int x_101 = 0;
-  int x_102 = 0;
-  int x_103[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int x_104 = 0;
-  int x_105 = 0;
-  int x_106 = 0;
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  x_GLF_FragCoord = ((x_GLF_pos + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      if ((i_2 < 10)) {
-      } else {
-        break;
-      }
-      int x_117 = i_2;
-      obj.numbers[x_117] = (10 - i_2);
-      int x_121 = i_2;
-      obj.numbers[x_121] = (obj.numbers[i_2] * obj.numbers[i_2]);
-      {
-        i_2 = (i_2 + 1);
-      }
-      continue;
-    }
-  }
-  x_100 = 0;
-  x_101 = 9;
-  x_102 = -1;
-  int x_133 = (x_102 + 1);
-  x_102 = x_133;
-  x_103[x_133] = x_100;
-  int x_137 = (x_102 + 1);
-  x_102 = x_137;
-  x_103[x_137] = x_101;
-  {
-    while(true) {
-      if ((x_102 >= 0)) {
-      } else {
-        break;
-      }
-      int x_147 = x_102;
-      x_102 = (x_102 - 1);
-      x_101 = x_103[x_147];
-      int x_151 = x_102;
-      x_102 = (x_102 - 1);
-      x_100 = x_103[x_151];
-      x_105 = x_100;
-      x_106 = x_101;
-      x_92 = obj.numbers[x_106];
-      x_93 = (x_105 - 1);
-      x_94 = x_105;
-      {
-        while(true) {
-          if ((x_94 <= (x_106 - 1))) {
-          } else {
-            break;
-          }
-          if ((obj.numbers[x_94] <= x_92)) {
-            x_93 = (x_93 + 1);
-            x_95 = x_93;
-            x_96 = x_94;
-            x_91 = obj.numbers[x_95];
-            int x_186 = x_95;
-            obj.numbers[x_186] = obj.numbers[x_96];
-            int x_191 = x_96;
-            obj.numbers[x_191] = x_91;
-          }
-          {
-            x_94 = (x_94 + 1);
-          }
-          continue;
-        }
-      }
-      x_97 = (x_93 + 1);
-      x_98 = x_106;
-      x_90 = obj.numbers[x_97];
-      int x_202 = x_97;
-      obj.numbers[x_202] = obj.numbers[x_98];
-      int x_207 = x_98;
-      obj.numbers[x_207] = x_90;
-      x_99 = (x_93 + 1);
-      x_104 = x_99;
-      if (((x_104 - 1) > x_100)) {
-        int x_220 = (x_102 + 1);
-        x_102 = x_220;
-        x_103[x_220] = x_100;
-        int x_224 = (x_102 + 1);
-        x_102 = x_224;
-        x_103[x_224] = (x_104 - 1);
-      }
-      if (((x_104 + 1) < x_101)) {
-        int x_235 = (x_102 + 1);
-        x_102 = x_235;
-        x_103[x_235] = (x_104 + 1);
-        int x_240 = (x_102 + 1);
-        x_102 = x_240;
-        x_103[x_240] = x_101;
-      }
-      {
-      }
-      continue;
-    }
-  }
-  uv = (x_GLF_FragCoord.xy / x_34.resolution);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  float v = color.x;
-  color[0u] = (v + float(obj.numbers[0]));
-  if ((uv.x > 0.25f)) {
-    float v_1 = color.x;
-    color[0u] = (v_1 + float(obj.numbers[1]));
-  }
-  if ((uv.x > 0.5f)) {
-    float v_2 = color.y;
-    color[1u] = (v_2 + float(obj.numbers[2]));
-  }
-  if ((uv.x > 0.75f)) {
-    float v_3 = color.z;
-    color[2u] = (v_3 + float(obj.numbers[3]));
-  }
-  float v_4 = color.y;
-  color[1u] = (v_4 + float(obj.numbers[4]));
-  if ((uv.y > 0.25f)) {
-    float v_5 = color.x;
-    color[0u] = (v_5 + float(obj.numbers[5]));
-  }
-  if ((uv.y > 0.5f)) {
-    float v_6 = color.y;
-    color[1u] = (v_6 + float(obj.numbers[6]));
-  }
-  if ((uv.y > 0.75f)) {
-    float v_7 = color.z;
-    color[2u] = (v_7 + float(obj.numbers[7]));
-  }
-  float v_8 = color.z;
-  color[2u] = (v_8 + float(obj.numbers[8]));
-  if ((abs((uv.x - uv.y)) < 0.25f)) {
-    float v_9 = color.x;
-    color[0u] = (v_9 + float(obj.numbers[9]));
-  }
-  vec3 x_358 = normalize(color);
-  frag_color = vec4(x_358[0u], x_358[1u], x_358[2u], 1.0f);
-  tint_symbol = x_GLF_pos;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  temp = obj.numbers[i];
-  int x_369 = i;
-  obj.numbers[x_369] = obj.numbers[j];
-  int x_374 = j;
-  obj.numbers[x_374] = temp;
-}
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  pivot = obj.numbers[h];
-  i_1 = (l - 1);
-  j_1 = l;
-  {
-    while(true) {
-      if ((j_1 <= (h - 1))) {
-      } else {
-        break;
-      }
-      if ((obj.numbers[j_1] <= pivot)) {
-        i_1 = (i_1 + 1);
-        param = i_1;
-        param_1 = j_1;
-        swap_i1_i1_(param, param_1);
-      }
-      {
-        j_1 = (j_1 + 1);
-      }
-      continue;
-    }
-  }
-  param_2 = (i_1 + 1);
-  param_3 = h;
-  swap_i1_i1_(param_2, param_3);
-  int x_411 = i_1;
-  return (x_411 + 1);
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_415 = (top + 1);
-  top = x_415;
-  stack[x_415] = l_1;
-  int x_419 = (top + 1);
-  top = x_419;
-  stack[x_419] = h_1;
-  {
-    while(true) {
-      if ((top >= 0)) {
-      } else {
-        break;
-      }
-      int x_429 = top;
-      top = (top - 1);
-      h_1 = stack[x_429];
-      int x_433 = top;
-      top = (top - 1);
-      l_1 = stack[x_433];
-      param_4 = l_1;
-      param_5 = h_1;
-      int x_439 = performPartition_i1_i1_(param_4, param_5);
-      p = x_439;
-      if (((p - 1) > l_1)) {
-        int x_447 = (top + 1);
-        top = x_447;
-        stack[x_447] = l_1;
-        int x_451 = (top + 1);
-        top = x_451;
-        stack[x_451] = (p - 1);
-      }
-      if (((p + 1) < h_1)) {
-        int x_462 = (top + 1);
-        top = x_462;
-        stack[x_462] = (p + 1);
-        int x_467 = (top + 1);
-        top = x_467;
-        stack[x_467] = h_1;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-error: Error parsing GLSL shader:
-ERROR: 0:179: 'main' : function cannot take any parameter(s) 
-ERROR: 0:179: 'structure' :  entry point cannot return a value
-ERROR: 0:179: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.ir.glsl
deleted file mode 100644
index eb123f7..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/0.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,412 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_34;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  int x_90 = 0;
-  int x_91 = 0;
-  int x_92 = 0;
-  int x_93 = 0;
-  int x_94 = 0;
-  int x_95 = 0;
-  int x_96 = 0;
-  int x_97 = 0;
-  int x_98 = 0;
-  int x_99 = 0;
-  int x_100 = 0;
-  int x_101 = 0;
-  int x_102 = 0;
-  int x_103[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int x_104 = 0;
-  int x_105 = 0;
-  int x_106 = 0;
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  vec4 x_107 = x_GLF_pos;
-  x_GLF_FragCoord = ((x_107 + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      int x_114 = i_2;
-      if ((x_114 < 10)) {
-      } else {
-        break;
-      }
-      int x_117 = i_2;
-      int x_118 = i_2;
-      obj.numbers[x_117] = (10 - x_118);
-      int x_121 = i_2;
-      int x_122 = i_2;
-      int x_124 = obj.numbers[x_122];
-      int x_125 = i_2;
-      int x_127 = obj.numbers[x_125];
-      obj.numbers[x_121] = (x_124 * x_127);
-      {
-        int x_130 = i_2;
-        i_2 = (x_130 + 1);
-      }
-      continue;
-    }
-  }
-  x_100 = 0;
-  x_101 = 9;
-  x_102 = -1;
-  int x_132 = x_102;
-  int x_133 = (x_132 + 1);
-  x_102 = x_133;
-  int x_134 = x_100;
-  x_103[x_133] = x_134;
-  int x_136 = x_102;
-  int x_137 = (x_136 + 1);
-  x_102 = x_137;
-  int x_138 = x_101;
-  x_103[x_137] = x_138;
-  {
-    while(true) {
-      int x_144 = x_102;
-      if ((x_144 >= 0)) {
-      } else {
-        break;
-      }
-      int x_147 = x_102;
-      x_102 = (x_147 - 1);
-      int x_150 = x_103[x_147];
-      x_101 = x_150;
-      int x_151 = x_102;
-      x_102 = (x_151 - 1);
-      int x_154 = x_103[x_151];
-      x_100 = x_154;
-      int x_155 = x_100;
-      x_105 = x_155;
-      int x_156 = x_101;
-      x_106 = x_156;
-      int x_157 = x_106;
-      int x_159 = obj.numbers[x_157];
-      x_92 = x_159;
-      int x_160 = x_105;
-      x_93 = (x_160 - 1);
-      int x_162 = x_105;
-      x_94 = x_162;
-      {
-        while(true) {
-          int x_167 = x_94;
-          int x_168 = x_106;
-          if ((x_167 <= (x_168 - 1))) {
-          } else {
-            break;
-          }
-          int x_172 = x_94;
-          int x_174 = obj.numbers[x_172];
-          int x_175 = x_92;
-          if ((x_174 <= x_175)) {
-            int x_179 = x_93;
-            x_93 = (x_179 + 1);
-            int x_181 = x_93;
-            x_95 = x_181;
-            int x_182 = x_94;
-            x_96 = x_182;
-            int x_183 = x_95;
-            int x_185 = obj.numbers[x_183];
-            x_91 = x_185;
-            int x_186 = x_95;
-            int x_187 = x_96;
-            int x_189 = obj.numbers[x_187];
-            obj.numbers[x_186] = x_189;
-            int x_191 = x_96;
-            int x_192 = x_91;
-            obj.numbers[x_191] = x_192;
-          }
-          {
-            int x_194 = x_94;
-            x_94 = (x_194 + 1);
-          }
-          continue;
-        }
-      }
-      int x_196 = x_93;
-      x_97 = (x_196 + 1);
-      int x_198 = x_106;
-      x_98 = x_198;
-      int x_199 = x_97;
-      int x_201 = obj.numbers[x_199];
-      x_90 = x_201;
-      int x_202 = x_97;
-      int x_203 = x_98;
-      int x_205 = obj.numbers[x_203];
-      obj.numbers[x_202] = x_205;
-      int x_207 = x_98;
-      int x_208 = x_90;
-      obj.numbers[x_207] = x_208;
-      int x_210 = x_93;
-      x_99 = (x_210 + 1);
-      int x_212 = x_99;
-      x_104 = x_212;
-      int x_213 = x_104;
-      int x_215 = x_100;
-      if (((x_213 - 1) > x_215)) {
-        int x_219 = x_102;
-        int x_220 = (x_219 + 1);
-        x_102 = x_220;
-        int x_221 = x_100;
-        x_103[x_220] = x_221;
-        int x_223 = x_102;
-        int x_224 = (x_223 + 1);
-        x_102 = x_224;
-        int x_225 = x_104;
-        x_103[x_224] = (x_225 - 1);
-      }
-      int x_228 = x_104;
-      int x_230 = x_101;
-      if (((x_228 + 1) < x_230)) {
-        int x_234 = x_102;
-        int x_235 = (x_234 + 1);
-        x_102 = x_235;
-        int x_236 = x_104;
-        x_103[x_235] = (x_236 + 1);
-        int x_239 = x_102;
-        int x_240 = (x_239 + 1);
-        x_102 = x_240;
-        int x_241 = x_101;
-        x_103[x_240] = x_241;
-      }
-      {
-      }
-      continue;
-    }
-  }
-  vec4 x_243 = x_GLF_FragCoord;
-  vec2 x_246 = x_34.resolution;
-  uv = (vec2(x_243[0u], x_243[1u]) / x_246);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  int x_249 = obj.numbers[0];
-  float x_252 = color.x;
-  color[0u] = (x_252 + float(x_249));
-  float x_256 = uv.x;
-  if ((x_256 > 0.25f)) {
-    int x_261 = obj.numbers[1];
-    float x_264 = color.x;
-    color[0u] = (x_264 + float(x_261));
-  }
-  float x_268 = uv.x;
-  if ((x_268 > 0.5f)) {
-    int x_273 = obj.numbers[2];
-    float x_276 = color.y;
-    color[1u] = (x_276 + float(x_273));
-  }
-  float x_280 = uv.x;
-  if ((x_280 > 0.75f)) {
-    int x_285 = obj.numbers[3];
-    float x_288 = color.z;
-    color[2u] = (x_288 + float(x_285));
-  }
-  int x_292 = obj.numbers[4];
-  float x_295 = color.y;
-  color[1u] = (x_295 + float(x_292));
-  float x_299 = uv.y;
-  if ((x_299 > 0.25f)) {
-    int x_304 = obj.numbers[5];
-    float x_307 = color.x;
-    color[0u] = (x_307 + float(x_304));
-  }
-  float x_311 = uv.y;
-  if ((x_311 > 0.5f)) {
-    int x_316 = obj.numbers[6];
-    float x_319 = color.y;
-    color[1u] = (x_319 + float(x_316));
-  }
-  float x_323 = uv.y;
-  if ((x_323 > 0.75f)) {
-    int x_328 = obj.numbers[7];
-    float x_331 = color.z;
-    color[2u] = (x_331 + float(x_328));
-  }
-  int x_335 = obj.numbers[8];
-  float x_338 = color.z;
-  color[2u] = (x_338 + float(x_335));
-  float x_342 = uv.x;
-  float x_344 = uv.y;
-  if ((abs((x_342 - x_344)) < 0.25f)) {
-    int x_351 = obj.numbers[9];
-    float x_354 = color.x;
-    color[0u] = (x_354 + float(x_351));
-  }
-  vec3 x_357 = color;
-  vec3 x_358 = normalize(x_357);
-  frag_color = vec4(x_358[0u], x_358[1u], x_358[2u], 1.0f);
-  vec4 x_363 = x_GLF_pos;
-  tint_symbol = x_363;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  int x_366 = i;
-  int x_368 = obj.numbers[x_366];
-  temp = x_368;
-  int x_369 = i;
-  int x_370 = j;
-  int x_372 = obj.numbers[x_370];
-  obj.numbers[x_369] = x_372;
-  int x_374 = j;
-  int x_375 = temp;
-  obj.numbers[x_374] = x_375;
-}
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  int x_378 = h;
-  int x_380 = obj.numbers[x_378];
-  pivot = x_380;
-  int x_381 = l;
-  i_1 = (x_381 - 1);
-  int x_383 = l;
-  j_1 = x_383;
-  {
-    while(true) {
-      int x_388 = j_1;
-      int x_389 = h;
-      if ((x_388 <= (x_389 - 1))) {
-      } else {
-        break;
-      }
-      int x_393 = j_1;
-      int x_395 = obj.numbers[x_393];
-      int x_396 = pivot;
-      if ((x_395 <= x_396)) {
-        int x_400 = i_1;
-        i_1 = (x_400 + 1);
-        int x_402 = i_1;
-        param = x_402;
-        int x_403 = j_1;
-        param_1 = x_403;
-        swap_i1_i1_(param, param_1);
-      }
-      {
-        int x_405 = j_1;
-        j_1 = (x_405 + 1);
-      }
-      continue;
-    }
-  }
-  int x_407 = i_1;
-  param_2 = (x_407 + 1);
-  int x_409 = h;
-  param_3 = x_409;
-  swap_i1_i1_(param_2, param_3);
-  int x_411 = i_1;
-  return (x_411 + 1);
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_414 = top;
-  int x_415 = (x_414 + 1);
-  top = x_415;
-  int x_416 = l_1;
-  stack[x_415] = x_416;
-  int x_418 = top;
-  int x_419 = (x_418 + 1);
-  top = x_419;
-  int x_420 = h_1;
-  stack[x_419] = x_420;
-  {
-    while(true) {
-      int x_426 = top;
-      if ((x_426 >= 0)) {
-      } else {
-        break;
-      }
-      int x_429 = top;
-      top = (x_429 - 1);
-      int x_432 = stack[x_429];
-      h_1 = x_432;
-      int x_433 = top;
-      top = (x_433 - 1);
-      int x_436 = stack[x_433];
-      l_1 = x_436;
-      int x_437 = l_1;
-      param_4 = x_437;
-      int x_438 = h_1;
-      param_5 = x_438;
-      int x_439 = performPartition_i1_i1_(param_4, param_5);
-      p = x_439;
-      int x_440 = p;
-      int x_442 = l_1;
-      if (((x_440 - 1) > x_442)) {
-        int x_446 = top;
-        int x_447 = (x_446 + 1);
-        top = x_447;
-        int x_448 = l_1;
-        stack[x_447] = x_448;
-        int x_450 = top;
-        int x_451 = (x_450 + 1);
-        top = x_451;
-        int x_452 = p;
-        stack[x_451] = (x_452 - 1);
-      }
-      int x_455 = p;
-      int x_457 = h_1;
-      if (((x_455 + 1) < x_457)) {
-        int x_461 = top;
-        int x_462 = (x_461 + 1);
-        top = x_462;
-        int x_463 = p;
-        stack[x_462] = (x_463 + 1);
-        int x_466 = top;
-        int x_467 = (x_466 + 1);
-        top = x_467;
-        int x_468 = h_1;
-        stack[x_467] = x_468;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-error: Error parsing GLSL shader:
-ERROR: 0:257: 'main' : function cannot take any parameter(s) 
-ERROR: 0:257: 'structure' :  entry point cannot return a value
-ERROR: 0:257: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.ir.glsl
deleted file mode 100644
index 03499e83..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,265 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_34;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int x_314 = 0;
-  int x_315 = 0;
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  pivot = obj.numbers[h];
-  i_1 = (l - 1);
-  j_1 = l;
-  {
-    while(true) {
-      if ((j_1 <= (h - 1))) {
-      } else {
-        break;
-      }
-      if ((obj.numbers[j_1] <= pivot)) {
-        i_1 = (i_1 + 1);
-        param = i_1;
-        param_1 = j_1;
-        x_315 = obj.numbers[param];
-        int x_345 = param;
-        obj.numbers[x_345] = obj.numbers[param_1];
-        int x_350 = param_1;
-        obj.numbers[x_350] = x_315;
-      }
-      {
-        j_1 = (j_1 + 1);
-      }
-      continue;
-    }
-  }
-  param_2 = (i_1 + 1);
-  param_3 = h;
-  x_314 = obj.numbers[param_2];
-  int x_361 = param_2;
-  obj.numbers[x_361] = obj.numbers[param_3];
-  int x_366 = param_3;
-  obj.numbers[x_366] = x_314;
-  if (false) {
-  } else {
-    int x_372 = i_1;
-    return (x_372 + 1);
-  }
-  return 0;
-}
-void main_1() {
-  int x_91 = 0;
-  int x_92 = 0;
-  int x_93 = 0;
-  int x_94[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int x_95 = 0;
-  int x_96 = 0;
-  int x_97 = 0;
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  x_GLF_FragCoord = ((x_GLF_pos + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      if ((i_2 < 10)) {
-      } else {
-        break;
-      }
-      int x_108 = i_2;
-      obj.numbers[x_108] = (10 - i_2);
-      int x_112 = i_2;
-      obj.numbers[x_112] = (obj.numbers[i_2] * obj.numbers[i_2]);
-      {
-        i_2 = (i_2 + 1);
-      }
-      continue;
-    }
-  }
-  x_91 = 0;
-  x_92 = 9;
-  x_93 = -1;
-  int x_124 = (x_93 + 1);
-  x_93 = x_124;
-  x_94[x_124] = x_91;
-  int x_128 = (x_93 + 1);
-  x_93 = x_128;
-  x_94[x_128] = x_92;
-  {
-    while(true) {
-      if ((x_93 >= 0)) {
-      } else {
-        break;
-      }
-      int x_138 = x_93;
-      x_93 = (x_93 - 1);
-      x_92 = x_94[x_138];
-      int x_142 = x_93;
-      x_93 = (x_93 - 1);
-      x_91 = x_94[x_142];
-      x_96 = x_91;
-      x_97 = x_92;
-      int x_148 = performPartition_i1_i1_(x_96, x_97);
-      x_95 = x_148;
-      if (((x_95 - 1) > x_91)) {
-        int x_156 = (x_93 + 1);
-        x_93 = x_156;
-        x_94[x_156] = x_91;
-        int x_160 = (x_93 + 1);
-        x_93 = x_160;
-        x_94[x_160] = (x_95 - 1);
-      }
-      if (((x_95 + 1) < x_92)) {
-        int x_171 = (x_93 + 1);
-        x_93 = x_171;
-        x_94[x_171] = (x_95 + 1);
-        int x_176 = (x_93 + 1);
-        x_93 = x_176;
-        x_94[x_176] = x_92;
-      }
-      {
-      }
-      continue;
-    }
-  }
-  uv = (x_GLF_FragCoord.xy / x_34.resolution);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  float v = color.x;
-  color[0u] = (v + float(obj.numbers[0]));
-  if ((uv.x > 0.25f)) {
-    float v_1 = color.x;
-    color[0u] = (v_1 + float(obj.numbers[1]));
-  }
-  if ((uv.x > 0.5f)) {
-    float v_2 = color.y;
-    color[1u] = (v_2 + float(obj.numbers[2]));
-  }
-  if ((uv.x > 0.75f)) {
-    float v_3 = color.z;
-    color[2u] = (v_3 + float(obj.numbers[3]));
-  }
-  float v_4 = color.y;
-  color[1u] = (v_4 + float(obj.numbers[4]));
-  if ((uv.y > 0.25f)) {
-    float v_5 = color.x;
-    color[0u] = (v_5 + float(obj.numbers[5]));
-  }
-  if ((uv.y > 0.5f)) {
-    float v_6 = color.y;
-    color[1u] = (v_6 + float(obj.numbers[6]));
-  }
-  if ((uv.y > 0.75f)) {
-    float v_7 = color.z;
-    color[2u] = (v_7 + float(obj.numbers[7]));
-  }
-  float v_8 = color.z;
-  color[2u] = (v_8 + float(obj.numbers[8]));
-  if ((abs((uv.x - uv.y)) < 0.25f)) {
-    float v_9 = color.x;
-    color[0u] = (v_9 + float(obj.numbers[9]));
-  }
-  vec3 x_294 = normalize(color);
-  frag_color = vec4(x_294[0u], x_294[1u], x_294[2u], 1.0f);
-  tint_symbol = x_GLF_pos;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  temp = obj.numbers[i];
-  int x_305 = i;
-  obj.numbers[x_305] = obj.numbers[j];
-  int x_310 = j;
-  obj.numbers[x_310] = temp;
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_377 = (top + 1);
-  top = x_377;
-  stack[x_377] = l_1;
-  int x_381 = (top + 1);
-  top = x_381;
-  stack[x_381] = h_1;
-  {
-    while(true) {
-      if ((top >= 0)) {
-      } else {
-        break;
-      }
-      int x_391 = top;
-      top = (top - 1);
-      h_1 = stack[x_391];
-      int x_395 = top;
-      top = (top - 1);
-      l_1 = stack[x_395];
-      param_4 = l_1;
-      param_5 = h_1;
-      int x_401 = performPartition_i1_i1_(param_4, param_5);
-      p = x_401;
-      if (((p - 1) > l_1)) {
-        int x_409 = (top + 1);
-        top = x_409;
-        stack[x_409] = l_1;
-        int x_413 = (top + 1);
-        top = x_413;
-        stack[x_413] = (p - 1);
-      }
-      if (((p + 1) < h_1)) {
-        int x_424 = (top + 1);
-        top = x_424;
-        stack[x_424] = (p + 1);
-        int x_429 = (top + 1);
-        top = x_429;
-        stack[x_429] = h_1;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-error: Error parsing GLSL shader:
-ERROR: 0:186: 'main' : function cannot take any parameter(s) 
-ERROR: 0:186: 'structure' :  entry point cannot return a value
-ERROR: 0:186: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.ir.glsl
deleted file mode 100644
index a01d664..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/stable-quicksort-if-false-else-return/2.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,367 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct QuicksortObject {
-  int numbers[10];
-};
-
-struct buf0 {
-  vec2 resolution;
-};
-
-struct main_out {
-  vec4 frag_color_1;
-  vec4 tint_symbol;
-};
-
-QuicksortObject obj = QuicksortObject(int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
-vec4 x_GLF_FragCoord = vec4(0.0f);
-vec4 x_GLF_pos = vec4(0.0f);
-uniform buf0 x_34;
-vec4 frag_color = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-int performPartition_i1_i1_(inout int l, inout int h) {
-  int x_314 = 0;
-  int x_315 = 0;
-  int pivot = 0;
-  int i_1 = 0;
-  int j_1 = 0;
-  int param = 0;
-  int param_1 = 0;
-  int param_2 = 0;
-  int param_3 = 0;
-  int x_316 = h;
-  int x_318 = obj.numbers[x_316];
-  pivot = x_318;
-  int x_319 = l;
-  i_1 = (x_319 - 1);
-  int x_321 = l;
-  j_1 = x_321;
-  {
-    while(true) {
-      int x_326 = j_1;
-      int x_327 = h;
-      if ((x_326 <= (x_327 - 1))) {
-      } else {
-        break;
-      }
-      int x_331 = j_1;
-      int x_333 = obj.numbers[x_331];
-      int x_334 = pivot;
-      if ((x_333 <= x_334)) {
-        int x_338 = i_1;
-        i_1 = (x_338 + 1);
-        int x_340 = i_1;
-        param = x_340;
-        int x_341 = j_1;
-        param_1 = x_341;
-        int x_342 = param;
-        int x_344 = obj.numbers[x_342];
-        x_315 = x_344;
-        int x_345 = param;
-        int x_346 = param_1;
-        int x_348 = obj.numbers[x_346];
-        obj.numbers[x_345] = x_348;
-        int x_350 = param_1;
-        int x_351 = x_315;
-        obj.numbers[x_350] = x_351;
-      }
-      {
-        int x_353 = j_1;
-        j_1 = (x_353 + 1);
-      }
-      continue;
-    }
-  }
-  int x_355 = i_1;
-  param_2 = (x_355 + 1);
-  int x_357 = h;
-  param_3 = x_357;
-  int x_358 = param_2;
-  int x_360 = obj.numbers[x_358];
-  x_314 = x_360;
-  int x_361 = param_2;
-  int x_362 = param_3;
-  int x_364 = obj.numbers[x_362];
-  obj.numbers[x_361] = x_364;
-  int x_366 = param_3;
-  int x_367 = x_314;
-  obj.numbers[x_366] = x_367;
-  if (false) {
-  } else {
-    int x_372 = i_1;
-    return (x_372 + 1);
-  }
-  return 0;
-}
-void main_1() {
-  int x_91 = 0;
-  int x_92 = 0;
-  int x_93 = 0;
-  int x_94[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int x_95 = 0;
-  int x_96 = 0;
-  int x_97 = 0;
-  int i_2 = 0;
-  vec2 uv = vec2(0.0f);
-  vec3 color = vec3(0.0f);
-  vec4 x_98 = x_GLF_pos;
-  x_GLF_FragCoord = ((x_98 + vec4(1.0f, 1.0f, 0.0f, 0.0f)) * vec4(128.0f, 128.0f, 1.0f, 1.0f));
-  i_2 = 0;
-  {
-    while(true) {
-      int x_105 = i_2;
-      if ((x_105 < 10)) {
-      } else {
-        break;
-      }
-      int x_108 = i_2;
-      int x_109 = i_2;
-      obj.numbers[x_108] = (10 - x_109);
-      int x_112 = i_2;
-      int x_113 = i_2;
-      int x_115 = obj.numbers[x_113];
-      int x_116 = i_2;
-      int x_118 = obj.numbers[x_116];
-      obj.numbers[x_112] = (x_115 * x_118);
-      {
-        int x_121 = i_2;
-        i_2 = (x_121 + 1);
-      }
-      continue;
-    }
-  }
-  x_91 = 0;
-  x_92 = 9;
-  x_93 = -1;
-  int x_123 = x_93;
-  int x_124 = (x_123 + 1);
-  x_93 = x_124;
-  int x_125 = x_91;
-  x_94[x_124] = x_125;
-  int x_127 = x_93;
-  int x_128 = (x_127 + 1);
-  x_93 = x_128;
-  int x_129 = x_92;
-  x_94[x_128] = x_129;
-  {
-    while(true) {
-      int x_135 = x_93;
-      if ((x_135 >= 0)) {
-      } else {
-        break;
-      }
-      int x_138 = x_93;
-      x_93 = (x_138 - 1);
-      int x_141 = x_94[x_138];
-      x_92 = x_141;
-      int x_142 = x_93;
-      x_93 = (x_142 - 1);
-      int x_145 = x_94[x_142];
-      x_91 = x_145;
-      int x_146 = x_91;
-      x_96 = x_146;
-      int x_147 = x_92;
-      x_97 = x_147;
-      int x_148 = performPartition_i1_i1_(x_96, x_97);
-      x_95 = x_148;
-      int x_149 = x_95;
-      int x_151 = x_91;
-      if (((x_149 - 1) > x_151)) {
-        int x_155 = x_93;
-        int x_156 = (x_155 + 1);
-        x_93 = x_156;
-        int x_157 = x_91;
-        x_94[x_156] = x_157;
-        int x_159 = x_93;
-        int x_160 = (x_159 + 1);
-        x_93 = x_160;
-        int x_161 = x_95;
-        x_94[x_160] = (x_161 - 1);
-      }
-      int x_164 = x_95;
-      int x_166 = x_92;
-      if (((x_164 + 1) < x_166)) {
-        int x_170 = x_93;
-        int x_171 = (x_170 + 1);
-        x_93 = x_171;
-        int x_172 = x_95;
-        x_94[x_171] = (x_172 + 1);
-        int x_175 = x_93;
-        int x_176 = (x_175 + 1);
-        x_93 = x_176;
-        int x_177 = x_92;
-        x_94[x_176] = x_177;
-      }
-      {
-      }
-      continue;
-    }
-  }
-  vec4 x_179 = x_GLF_FragCoord;
-  vec2 x_182 = x_34.resolution;
-  uv = (vec2(x_179[0u], x_179[1u]) / x_182);
-  color = vec3(1.0f, 2.0f, 3.0f);
-  int x_185 = obj.numbers[0];
-  float x_188 = color.x;
-  color[0u] = (x_188 + float(x_185));
-  float x_192 = uv.x;
-  if ((x_192 > 0.25f)) {
-    int x_197 = obj.numbers[1];
-    float x_200 = color.x;
-    color[0u] = (x_200 + float(x_197));
-  }
-  float x_204 = uv.x;
-  if ((x_204 > 0.5f)) {
-    int x_209 = obj.numbers[2];
-    float x_212 = color.y;
-    color[1u] = (x_212 + float(x_209));
-  }
-  float x_216 = uv.x;
-  if ((x_216 > 0.75f)) {
-    int x_221 = obj.numbers[3];
-    float x_224 = color.z;
-    color[2u] = (x_224 + float(x_221));
-  }
-  int x_228 = obj.numbers[4];
-  float x_231 = color.y;
-  color[1u] = (x_231 + float(x_228));
-  float x_235 = uv.y;
-  if ((x_235 > 0.25f)) {
-    int x_240 = obj.numbers[5];
-    float x_243 = color.x;
-    color[0u] = (x_243 + float(x_240));
-  }
-  float x_247 = uv.y;
-  if ((x_247 > 0.5f)) {
-    int x_252 = obj.numbers[6];
-    float x_255 = color.y;
-    color[1u] = (x_255 + float(x_252));
-  }
-  float x_259 = uv.y;
-  if ((x_259 > 0.75f)) {
-    int x_264 = obj.numbers[7];
-    float x_267 = color.z;
-    color[2u] = (x_267 + float(x_264));
-  }
-  int x_271 = obj.numbers[8];
-  float x_274 = color.z;
-  color[2u] = (x_274 + float(x_271));
-  float x_278 = uv.x;
-  float x_280 = uv.y;
-  if ((abs((x_278 - x_280)) < 0.25f)) {
-    int x_287 = obj.numbers[9];
-    float x_290 = color.x;
-    color[0u] = (x_290 + float(x_287));
-  }
-  vec3 x_293 = color;
-  vec3 x_294 = normalize(x_293);
-  frag_color = vec4(x_294[0u], x_294[1u], x_294[2u], 1.0f);
-  vec4 x_299 = x_GLF_pos;
-  tint_symbol = x_299;
-}
-main_out main(vec4 x_GLF_pos_param) {
-  x_GLF_pos = x_GLF_pos_param;
-  main_1();
-  return main_out(frag_color, tint_symbol);
-}
-void swap_i1_i1_(inout int i, inout int j) {
-  int temp = 0;
-  int x_302 = i;
-  int x_304 = obj.numbers[x_302];
-  temp = x_304;
-  int x_305 = i;
-  int x_306 = j;
-  int x_308 = obj.numbers[x_306];
-  obj.numbers[x_305] = x_308;
-  int x_310 = j;
-  int x_311 = temp;
-  obj.numbers[x_310] = x_311;
-}
-void quicksort_() {
-  int l_1 = 0;
-  int h_1 = 0;
-  int top = 0;
-  int stack[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-  int p = 0;
-  int param_4 = 0;
-  int param_5 = 0;
-  l_1 = 0;
-  h_1 = 9;
-  top = -1;
-  int x_376 = top;
-  int x_377 = (x_376 + 1);
-  top = x_377;
-  int x_378 = l_1;
-  stack[x_377] = x_378;
-  int x_380 = top;
-  int x_381 = (x_380 + 1);
-  top = x_381;
-  int x_382 = h_1;
-  stack[x_381] = x_382;
-  {
-    while(true) {
-      int x_388 = top;
-      if ((x_388 >= 0)) {
-      } else {
-        break;
-      }
-      int x_391 = top;
-      top = (x_391 - 1);
-      int x_394 = stack[x_391];
-      h_1 = x_394;
-      int x_395 = top;
-      top = (x_395 - 1);
-      int x_398 = stack[x_395];
-      l_1 = x_398;
-      int x_399 = l_1;
-      param_4 = x_399;
-      int x_400 = h_1;
-      param_5 = x_400;
-      int x_401 = performPartition_i1_i1_(param_4, param_5);
-      p = x_401;
-      int x_402 = p;
-      int x_404 = l_1;
-      if (((x_402 - 1) > x_404)) {
-        int x_408 = top;
-        int x_409 = (x_408 + 1);
-        top = x_409;
-        int x_410 = l_1;
-        stack[x_409] = x_410;
-        int x_412 = top;
-        int x_413 = (x_412 + 1);
-        top = x_413;
-        int x_414 = p;
-        stack[x_413] = (x_414 - 1);
-      }
-      int x_417 = p;
-      int x_419 = h_1;
-      if (((x_417 + 1) < x_419)) {
-        int x_423 = top;
-        int x_424 = (x_423 + 1);
-        top = x_424;
-        int x_425 = p;
-        stack[x_424] = (x_425 + 1);
-        int x_428 = top;
-        int x_429 = (x_428 + 1);
-        top = x_429;
-        int x_430 = h_1;
-        stack[x_429] = x_430;
-      }
-      {
-      }
-      continue;
-    }
-  }
-}
-error: Error parsing GLSL shader:
-ERROR: 0:262: 'main' : function cannot take any parameter(s) 
-ERROR: 0:262: 'structure' :  entry point cannot return a value
-ERROR: 0:262: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 8982bd8..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec2 x_23 = position_1.xy;
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.5f, 1.0f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index f6adef5..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_equal/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = pos;
-  vec2 x_23 = vec2(x_22[0u], x_22[1u]);
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.5f, 1.0f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 91b880a..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec2 x_23 = position_1.xy;
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.60000002384185791016f, 1.0f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index aaa1d80..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_greater/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = pos;
-  vec2 x_23 = vec2(x_22[0u], x_22[1u]);
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.60000002384185791016f, 1.0f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 519a2fb..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec2 x_23 = position_1.xy;
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.40000000596046447754f, 1.0f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index de7b3c6..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_less/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = pos;
-  vec2 x_23 = vec2(x_22[0u], x_22[1u]);
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.40000000596046447754f, 1.0f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 41e7088..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec2 x_23 = position_1.xy;
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.30000001192092895508f, 1.0f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 2416c18..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/early_fragment/depth_not_equal/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = pos;
-  vec2 x_23 = vec2(x_22[0u], x_22[1u]);
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.30000001192092895508f, 1.0f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 0d9f954..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec2 x_23 = position_1.xy;
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.69999998807907104492f, 1.0f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 5397e48..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_1/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = pos;
-  vec2 x_23 = vec2(x_22[0u], x_22[1u]);
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.69999998807907104492f, 1.0f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index f40b476..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 position_1 = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec2 x_23 = position_1.xy;
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.20000000298023223877f, 1.0f);
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index e92e80b..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/graphics/execution_mode/depthgreater_2/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec4 pos = vec4(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = pos;
-  vec2 x_23 = vec2(x_22[0u], x_22[1u]);
-  tint_symbol = vec4(x_23[0u], x_23[1u], 0.20000000298023223877f, 1.0f);
-}
-main_out main(vec4 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:14: 'main' : function cannot take any parameter(s) 
-ERROR: 0:14: 'structure' :  entry point cannot return a value
-ERROR: 0:14: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.ir.glsl
deleted file mode 100644
index c2522fd..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-  uint pos_1;
-};
-
-vec4 position_1 = vec4(0.0f);
-uint pos = 0u;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = position_1;
-  pos = 0u;
-}
-main_out main(vec4 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol, pos);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:15: 'main' : function cannot take any parameter(s) 
-ERROR: 0:15: 'structure' :  entry point cannot return a value
-ERROR: 0:15: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.ir.glsl
deleted file mode 100644
index 277f903..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/spirv1p4/hlsl_functionality1/decorate_string/0.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-  uint pos_1;
-};
-
-vec4 vert_pos = vec4(0.0f);
-uint pos = 0u;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec4 x_22 = vert_pos;
-  tint_symbol = x_22;
-  pos = 0u;
-}
-main_out main(vec4 position_param) {
-  vert_pos = position_param;
-  main_1();
-  return main_out(tint_symbol, pos);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'main' : function cannot take any parameter(s) 
-ERROR: 0:16: 'structure' :  entry point cannot return a value
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.ir.glsl
deleted file mode 100644
index 2960f1c..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  int x_4_1;
-  vec4 tint_symbol;
-};
-
-vec3 x_2 = vec3(0.0f);
-int x_3 = 0;
-int x_4 = 0;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = vec4(x_2, 1.0f);
-  x_4 = x_3;
-}
-main_out main(vec3 x_2_param, int x_3_param) {
-  x_2 = x_2_param;
-  x_3 = x_3_param;
-  main_1();
-  return main_out(x_4, tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:16: 'main' : function cannot take any parameter(s) 
-ERROR: 0:16: 'structure' :  entry point cannot return a value
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.ir.glsl
deleted file mode 100644
index 09f13aa..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  int x_4_1;
-  vec4 tint_symbol;
-};
-
-vec3 x_2 = vec3(0.0f);
-int x_3 = 0;
-int x_4 = 0;
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec3 x_22 = x_2;
-  tint_symbol = vec4(x_22, 1.0f);
-  x_4 = x_3;
-}
-main_out main(vec3 x_2_param, int x_3_param) {
-  x_2 = x_2_param;
-  x_3 = x_3_param;
-  main_1();
-  return main_out(x_4, tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:17: 'main' : function cannot take any parameter(s) 
-ERROR: 0:17: 'structure' :  entry point cannot return a value
-ERROR: 0:17: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.ir.glsl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.ir.glsl
deleted file mode 100644
index bbb2fc9..0000000
--- a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec3 position_1 = vec3(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  tint_symbol = vec4(position_1.x, position_1.y, position_1.z, 1.0f);
-}
-main_out main(vec3 position_1_param) {
-  position_1 = position_1_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:12: 'main' : function cannot take any parameter(s) 
-ERROR: 0:12: 'structure' :  entry point cannot return a value
-ERROR: 0:12: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1
diff --git a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.ir.glsl b/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.ir.glsl
deleted file mode 100644
index 174fa14..0000000
--- a/test/tint/vk-gl-cts/subgroup_uniform_control_flow/discard/subgroup_reconverge_discard00/0.wgsl.expected.ir.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-
-struct main_out {
-  vec4 tint_symbol;
-};
-
-vec3 pos = vec3(0.0f);
-vec4 tint_symbol = vec4(0.0f);
-void main_1() {
-  vec3 x_21 = pos;
-  tint_symbol = vec4(x_21[0u], x_21[1u], x_21[2u], 1.0f);
-}
-main_out main(vec3 position_param) {
-  pos = position_param;
-  main_1();
-  return main_out(tint_symbol);
-}
-error: Error parsing GLSL shader:
-ERROR: 0:13: 'main' : function cannot take any parameter(s) 
-ERROR: 0:13: 'structure' :  entry point cannot return a value
-ERROR: 0:13: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
-
-tint executable returned error: exit status 1