[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/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