GLSL: only emit default precision qualifier for frag shader.

Other shader types don't need this.
Also fix code style of member var.

Bug: tint:1360
Change-Id: Ic3600ec7c6da9b85b57655fabbf1f2e44b0ea7d3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/79640
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 3215086..1effa1b 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -181,7 +181,7 @@
 
   TextBuffer extensions;
 
-  if (requires_oes_sample_variables) {
+  if (requires_oes_sample_variables_) {
     extensions.Append("#extension GL_OES_sample_variables : require");
   }
 
@@ -192,8 +192,10 @@
     helpers_insertion_point += extensions.lines.size();
   }
 
-  current_buffer_->Insert("precision mediump float;", helpers_insertion_point++,
-                          indent);
+  if (requires_default_precision_qualifier_) {
+    current_buffer_->Insert("precision mediump float;",
+                            helpers_insertion_point++, indent);
+  }
 
   if (!helpers_.lines.empty()) {
     current_buffer_->Insert("", helpers_insertion_point++, indent);
@@ -1831,7 +1833,7 @@
   if (auto* b = ast::GetAttribute<ast::BuiltinAttribute>(decl->attributes)) {
     // Use of gl_SampleID requires the GL_OES_sample_variables extension
     if (RequiresOESSampleVariables(b->builtin)) {
-      requires_oes_sample_variables = true;
+      requires_oes_sample_variables_ = true;
     }
     // Do not emit builtin (gl_) variables.
     return true;
@@ -1906,6 +1908,10 @@
 bool GeneratorImpl::EmitEntryPointFunction(const ast::Function* func) {
   auto* func_sem = builder_.Sem().Get(func);
 
+  if (func->PipelineStage() == ast::PipelineStage::kFragment) {
+    requires_default_precision_qualifier_ = true;
+  }
+
   if (func->PipelineStage() == ast::PipelineStage::kCompute) {
     auto out = line();
     // Emit the layout(local_size) attributes.
diff --git a/src/writer/glsl/generator_impl.h b/src/writer/glsl/generator_impl.h
index 3f71501..ce51a03 100644
--- a/src/writer/glsl/generator_impl.h
+++ b/src/writer/glsl/generator_impl.h
@@ -473,7 +473,8 @@
   std::unordered_map<const sem::Struct*, std::string> structure_builders_;
   std::unordered_map<const sem::Vector*, std::string> dynamic_vector_write_;
   std::unordered_map<const sem::Vector*, std::string> int_dot_funcs_;
-  bool requires_oes_sample_variables = false;
+  bool requires_oes_sample_variables_ = false;
+  bool requires_default_precision_qualifier_ = false;
 };
 
 }  // namespace glsl
diff --git a/src/writer/glsl/generator_impl_builtin_test.cc b/src/writer/glsl/generator_impl_builtin_test.cc
index 4d3b49d..5888872 100644
--- a/src/writer/glsl/generator_impl_builtin_test.cc
+++ b/src/writer/glsl/generator_impl_builtin_test.cc
@@ -385,7 +385,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 float tint_degrees(float param_0) {
   return param_0 * 57.295779513082322865;
@@ -414,7 +413,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 vec3 tint_degrees(vec3 param_0) {
   return param_0 * 57.295779513082322865;
@@ -443,7 +441,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 float tint_radians(float param_0) {
   return param_0 * 0.017453292519943295474;
@@ -472,7 +469,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 vec3 tint_radians(vec3 param_0) {
   return param_0 * 0.017453292519943295474;
@@ -659,7 +655,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
@@ -681,7 +676,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
@@ -699,7 +693,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec3 a, ivec3 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
@@ -726,7 +719,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec3 a, uvec3 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
diff --git a/src/writer/glsl/generator_impl_function_test.cc b/src/writer/glsl/generator_impl_function_test.cc
index ffcb607..09713a1 100644
--- a/src/writer/glsl/generator_impl_function_test.cc
+++ b/src/writer/glsl/generator_impl_function_test.cc
@@ -40,7 +40,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(  #version 310 es
-  precision mediump float;
 
   void my_func() {
     return;
@@ -78,7 +77,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(  #version 310 es
-  precision mediump float;
 
   void my_func(float a, int b) {
     return;
@@ -786,7 +784,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void main() {
@@ -807,7 +804,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 layout(local_size_x = 2, local_size_y = 4, local_size_z = 6) in;
 void main() {
@@ -831,7 +827,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 const int width = int(2);
 const int height = int(3);
@@ -858,7 +853,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_7
 #define WGSL_SPEC_CONSTANT_7 int(2)
@@ -889,7 +883,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 void my_func(float a[5]) {
   return;
@@ -908,7 +901,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 float[5] my_func() {
   return float[5](0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
@@ -974,7 +966,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 struct Data {
   float d;
diff --git a/src/writer/glsl/generator_impl_member_accessor_test.cc b/src/writer/glsl/generator_impl_member_accessor_test.cc
index 362e524..5ff298e 100644
--- a/src/writer/glsl/generator_impl_member_accessor_test.cc
+++ b/src/writer/glsl/generator_impl_member_accessor_test.cc
@@ -133,7 +133,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 struct Data {
   float mem;
diff --git a/src/writer/glsl/generator_impl_test.cc b/src/writer/glsl/generator_impl_test.cc
index 899ad56..cb74fe5 100644
--- a/src/writer/glsl/generator_impl_test.cc
+++ b/src/writer/glsl/generator_impl_test.cc
@@ -29,7 +29,6 @@
 
   ASSERT_TRUE(gen.Generate()) << gen.error();
   EXPECT_EQ(gen.result(), R"(#version 310 es
-precision mediump float;
 
 void my_func() {
 }
diff --git a/test/access/let/matrix.spvasm.expected.glsl b/test/access/let/matrix.spvasm.expected.glsl
index 0d5280b..8292f89 100644
--- a/test/access/let/matrix.spvasm.expected.glsl
+++ b/test/access/let/matrix.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   float x_24 = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f))[1u].y;
diff --git a/test/access/let/matrix.wgsl.expected.glsl b/test/access/let/matrix.wgsl.expected.glsl
index 382315b..0add115 100644
--- a/test/access/let/matrix.wgsl.expected.glsl
+++ b/test/access/let/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   mat3 m = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
diff --git a/test/access/let/vector.spvasm.expected.glsl b/test/access/let/vector.spvasm.expected.glsl
index 87ed9fd..6d744cd 100644
--- a/test/access/let/vector.spvasm.expected.glsl
+++ b/test/access/let/vector.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   float x_11 = vec3(1.0f, 2.0f, 3.0f).y;
diff --git a/test/access/let/vector.wgsl.expected.glsl b/test/access/let/vector.wgsl.expected.glsl
index ea163f7..4f43d1f 100644
--- a/test/access/let/vector.wgsl.expected.glsl
+++ b/test/access/let/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   vec3 v = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/access/var/matrix.spvasm.expected.glsl b/test/access/var/matrix.spvasm.expected.glsl
index 40b5881..41a4d28 100644
--- a/test/access/var/matrix.spvasm.expected.glsl
+++ b/test/access/var/matrix.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   mat3 m = mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/access/var/matrix.wgsl.expected.glsl b/test/access/var/matrix.wgsl.expected.glsl
index 62f55ef..2c0d9cf 100644
--- a/test/access/var/matrix.wgsl.expected.glsl
+++ b/test/access/var/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   mat3 m = mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/access/var/vector.spvasm.expected.glsl b/test/access/var/vector.spvasm.expected.glsl
index 78b70c5..44c40a7 100644
--- a/test/access/var/vector.spvasm.expected.glsl
+++ b/test/access/var/vector.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   vec3 v = vec3(0.0f, 0.0f, 0.0f);
diff --git a/test/access/var/vector.wgsl.expected.glsl b/test/access/var/vector.wgsl.expected.glsl
index 1550bd9..bfb9f6b 100644
--- a/test/access/var/vector.wgsl.expected.glsl
+++ b/test/access/var/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   vec3 v = vec3(0.0f, 0.0f, 0.0f);
diff --git a/test/array/assign_to_function_var.wgsl.expected.glsl b/test/array/assign_to_function_var.wgsl.expected.glsl
index 3e5f1f2..70cfb8d 100644
--- a/test/array/assign_to_function_var.wgsl.expected.glsl
+++ b/test/array/assign_to_function_var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/array/assign_to_private_var.wgsl.expected.glsl b/test/array/assign_to_private_var.wgsl.expected.glsl
index 069c825..4911005 100644
--- a/test/array/assign_to_private_var.wgsl.expected.glsl
+++ b/test/array/assign_to_private_var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/array/assign_to_storage_var.wgsl.expected.glsl b/test/array/assign_to_storage_var.wgsl.expected.glsl
index 9452e86..60a16bb 100644
--- a/test/array/assign_to_storage_var.wgsl.expected.glsl
+++ b/test/array/assign_to_storage_var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/array/assign_to_subexpr.wgsl.expected.glsl b/test/array/assign_to_subexpr.wgsl.expected.glsl
index 7120de5..9dbb72b 100644
--- a/test/array/assign_to_subexpr.wgsl.expected.glsl
+++ b/test/array/assign_to_subexpr.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/array/assign_to_workgroup_var.wgsl.expected.glsl b/test/array/assign_to_workgroup_var.wgsl.expected.glsl
index 50e26c9..a4a0b8b 100644
--- a/test/array/assign_to_workgroup_var.wgsl.expected.glsl
+++ b/test/array/assign_to_workgroup_var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/array/function_parameter.wgsl.expected.glsl b/test/array/function_parameter.wgsl.expected.glsl
index 17ef9c5..6b9fe79 100644
--- a/test/array/function_parameter.wgsl.expected.glsl
+++ b/test/array/function_parameter.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float f1(float a[4]) {
   return a[3];
diff --git a/test/array/function_return_type.wgsl.expected.glsl b/test/array/function_return_type.wgsl.expected.glsl
index ba2caec..465ae8f 100644
--- a/test/array/function_return_type.wgsl.expected.glsl
+++ b/test/array/function_return_type.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float[4] f1() {
   float tint_symbol_1[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/array/strides.spvasm.expected.glsl b/test/array/strides.spvasm.expected.glsl
index 6e46ce7..6d3f329 100644
--- a/test/array/strides.spvasm.expected.glsl
+++ b/test/array/strides.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct strided_arr {
   float el;
diff --git a/test/array/type_constructor.wgsl.expected.glsl b/test/array/type_constructor.wgsl.expected.glsl
index 7a2e105..82b9843 100644
--- a/test/array/type_constructor.wgsl.expected.glsl
+++ b/test/array/type_constructor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   int x = 42;
diff --git a/test/benchmark/animometer.wgsl.expected.glsl b/test/benchmark/animometer.wgsl.expected.glsl
index 1852220..e0d2486 100644
--- a/test/benchmark/animometer.wgsl.expected.glsl
+++ b/test/benchmark/animometer.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec4 position_1;
 layout(location = 1) in vec4 color_1;
@@ -64,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:37: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' const float' (or there is no acceptable conversion)
-ERROR: 0:37: '' : compilation terminated 
+ERROR: 0:36: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp float' and a right operand of type ' const float' (or there is no acceptable conversion)
+ERROR: 0:36: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/benchmark/particles.wgsl.expected.glsl b/test/benchmark/particles.wgsl.expected.glsl
index 51b5e98..91c2fb5 100644
--- a/test/benchmark/particles.wgsl.expected.glsl
+++ b/test/benchmark/particles.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec3 position_1;
 layout(location = 1) in vec4 color_1;
@@ -121,7 +120,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec2 rand_seed = vec2(0.0f, 0.0f);
 float rand() {
@@ -210,14 +208,13 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'frac' : no matching overloaded function found 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'frac' : no matching overloaded function found 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
 
 #version 310 es
-precision mediump float;
 
 struct RenderParams {
   mat4 modelViewProjectionMatrix;
@@ -275,7 +272,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct RenderParams {
   mat4 modelViewProjectionMatrix;
diff --git a/test/buffer/storage/dynamic_index/read.wgsl.expected.glsl b/test/buffer/storage/dynamic_index/read.wgsl.expected.glsl
index 699ed59..c2aca77 100644
--- a/test/buffer/storage/dynamic_index/read.wgsl.expected.glsl
+++ b/test/buffer/storage/dynamic_index/read.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Inner {
   ivec3 a;
diff --git a/test/buffer/storage/dynamic_index/write.wgsl.expected.glsl b/test/buffer/storage/dynamic_index/write.wgsl.expected.glsl
index a8792c9..5d063fa 100644
--- a/test/buffer/storage/dynamic_index/write.wgsl.expected.glsl
+++ b/test/buffer/storage/dynamic_index/write.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Inner {
   ivec3 a;
diff --git a/test/buffer/storage/static_index/read.wgsl.expected.glsl b/test/buffer/storage/static_index/read.wgsl.expected.glsl
index c286530..b2e9f78 100644
--- a/test/buffer/storage/static_index/read.wgsl.expected.glsl
+++ b/test/buffer/storage/static_index/read.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Inner {
   int x;
diff --git a/test/buffer/storage/static_index/write.wgsl.expected.glsl b/test/buffer/storage/static_index/write.wgsl.expected.glsl
index 91947bf..d463db6 100644
--- a/test/buffer/storage/static_index/write.wgsl.expected.glsl
+++ b/test/buffer/storage/static_index/write.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Inner {
   int x;
diff --git a/test/buffer/storage/types/array.wgsl.expected.glsl b/test/buffer/storage/types/array.wgsl.expected.glsl
index f9af038..490065e 100644
--- a/test/buffer/storage/types/array.wgsl.expected.glsl
+++ b/test/buffer/storage/types/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   float inner[4];
diff --git a/test/buffer/storage/types/f32.wgsl.expected.glsl b/test/buffer/storage/types/f32.wgsl.expected.glsl
index 1d15ab8..8b5a1ad 100644
--- a/test/buffer/storage/types/f32.wgsl.expected.glsl
+++ b/test/buffer/storage/types/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   float inner;
diff --git a/test/buffer/storage/types/i32.wgsl.expected.glsl b/test/buffer/storage/types/i32.wgsl.expected.glsl
index 07206d4..7d4b0e8 100644
--- a/test/buffer/storage/types/i32.wgsl.expected.glsl
+++ b/test/buffer/storage/types/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   int inner;
diff --git a/test/buffer/storage/types/mat2x2.wgsl.expected.glsl b/test/buffer/storage/types/mat2x2.wgsl.expected.glsl
index 00d1c38..44e0e39 100644
--- a/test/buffer/storage/types/mat2x2.wgsl.expected.glsl
+++ b/test/buffer/storage/types/mat2x2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   mat2 inner;
diff --git a/test/buffer/storage/types/mat2x3.wgsl.expected.glsl b/test/buffer/storage/types/mat2x3.wgsl.expected.glsl
index 3b71731..81b2a71 100644
--- a/test/buffer/storage/types/mat2x3.wgsl.expected.glsl
+++ b/test/buffer/storage/types/mat2x3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   mat2x3 inner;
diff --git a/test/buffer/storage/types/mat3x2.wgsl.expected.glsl b/test/buffer/storage/types/mat3x2.wgsl.expected.glsl
index 591b0c7..d2ee221 100644
--- a/test/buffer/storage/types/mat3x2.wgsl.expected.glsl
+++ b/test/buffer/storage/types/mat3x2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   mat3x2 inner;
diff --git a/test/buffer/storage/types/mat4x4.wgsl.expected.glsl b/test/buffer/storage/types/mat4x4.wgsl.expected.glsl
index 57e5f2d..2b60247 100644
--- a/test/buffer/storage/types/mat4x4.wgsl.expected.glsl
+++ b/test/buffer/storage/types/mat4x4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   mat4 inner;
diff --git a/test/buffer/storage/types/runtime_array.wgsl.expected.glsl b/test/buffer/storage/types/runtime_array.wgsl.expected.glsl
index 8e396df..438385f 100644
--- a/test/buffer/storage/types/runtime_array.wgsl.expected.glsl
+++ b/test/buffer/storage/types/runtime_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float f;
diff --git a/test/buffer/storage/types/struct.wgsl.expected.glsl b/test/buffer/storage/types/struct.wgsl.expected.glsl
index a08d79b..e20caab 100644
--- a/test/buffer/storage/types/struct.wgsl.expected.glsl
+++ b/test/buffer/storage/types/struct.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct Inner {
   float f;
@@ -27,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:19: 'assign' :  cannot convert from 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global mediump float f} inner}' to 'layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global mediump float f} inner}'
-ERROR: 0:19: '' : compilation terminated 
+ERROR: 0:18: 'assign' :  cannot convert from 'layout( binding=0 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}' to 'layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{ global highp float f} inner}'
+ERROR: 0:18: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/buffer/storage/types/u32.wgsl.expected.glsl b/test/buffer/storage/types/u32.wgsl.expected.glsl
index 4586d69..c239e5a 100644
--- a/test/buffer/storage/types/u32.wgsl.expected.glsl
+++ b/test/buffer/storage/types/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   uint inner;
diff --git a/test/buffer/storage/types/vec2.wgsl.expected.glsl b/test/buffer/storage/types/vec2.wgsl.expected.glsl
index b9b05a8..65e25d0 100644
--- a/test/buffer/storage/types/vec2.wgsl.expected.glsl
+++ b/test/buffer/storage/types/vec2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   ivec2 inner;
diff --git a/test/buffer/storage/types/vec3.wgsl.expected.glsl b/test/buffer/storage/types/vec3.wgsl.expected.glsl
index 0a7d552..3d37255 100644
--- a/test/buffer/storage/types/vec3.wgsl.expected.glsl
+++ b/test/buffer/storage/types/vec3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   uvec3 inner;
diff --git a/test/buffer/storage/types/vec4.wgsl.expected.glsl b/test/buffer/storage/types/vec4.wgsl.expected.glsl
index c6e6168..4dc8ec5 100644
--- a/test/buffer/storage/types/vec4.wgsl.expected.glsl
+++ b/test/buffer/storage/types/vec4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct tint_symbol_block {
   vec4 inner;
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
index 9bda0ba..bc2f943 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Inner {
   ivec3 a;
diff --git a/test/buffer/uniform/static_index/read.wgsl.expected.glsl b/test/buffer/uniform/static_index/read.wgsl.expected.glsl
index 2e611d5..e43607a 100644
--- a/test/buffer/uniform/static_index/read.wgsl.expected.glsl
+++ b/test/buffer/uniform/static_index/read.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Inner {
   int x;
diff --git a/test/buffer/uniform/types/array.wgsl.expected.glsl b/test/buffer/uniform/types/array.wgsl.expected.glsl
index ac1d865..68352ce 100644
--- a/test/buffer/uniform/types/array.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   vec4 inner[4];
diff --git a/test/buffer/uniform/types/f32.wgsl.expected.glsl b/test/buffer/uniform/types/f32.wgsl.expected.glsl
index 38061a4..4c45bc3 100644
--- a/test/buffer/uniform/types/f32.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   float inner;
diff --git a/test/buffer/uniform/types/i32.wgsl.expected.glsl b/test/buffer/uniform/types/i32.wgsl.expected.glsl
index 4e70136..7d07279 100644
--- a/test/buffer/uniform/types/i32.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   int inner;
diff --git a/test/buffer/uniform/types/mat2x2.wgsl.expected.glsl b/test/buffer/uniform/types/mat2x2.wgsl.expected.glsl
index b5fc57d..2e7ee4f 100644
--- a/test/buffer/uniform/types/mat2x2.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/mat2x2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   mat2 inner;
diff --git a/test/buffer/uniform/types/mat2x3.wgsl.expected.glsl b/test/buffer/uniform/types/mat2x3.wgsl.expected.glsl
index 8eab604..a47210b 100644
--- a/test/buffer/uniform/types/mat2x3.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/mat2x3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   mat2x3 inner;
diff --git a/test/buffer/uniform/types/mat3x2.wgsl.expected.glsl b/test/buffer/uniform/types/mat3x2.wgsl.expected.glsl
index bf87092..2915d77 100644
--- a/test/buffer/uniform/types/mat3x2.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/mat3x2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   mat3x2 inner;
diff --git a/test/buffer/uniform/types/mat4x4.wgsl.expected.glsl b/test/buffer/uniform/types/mat4x4.wgsl.expected.glsl
index ce20163..5fb106f 100644
--- a/test/buffer/uniform/types/mat4x4.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/mat4x4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   mat4 inner;
diff --git a/test/buffer/uniform/types/struct.wgsl.expected.glsl b/test/buffer/uniform/types/struct.wgsl.expected.glsl
index dd29c0e..e844ec6 100644
--- a/test/buffer/uniform/types/struct.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/struct.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct Inner {
   float f;
@@ -25,8 +24,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:17: '=' :  cannot convert from 'layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform structure{ global mediump float f} inner}' to ' temp structure{ global structure{ global mediump float f} inner}'
-ERROR: 0:17: '' : compilation terminated 
+ERROR: 0:16: '=' :  cannot convert from 'layout( binding=0 column_major shared) uniform block{layout( column_major shared) uniform structure{ global highp float f} inner}' to ' temp structure{ global structure{ global highp float f} inner}'
+ERROR: 0:16: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/buffer/uniform/types/u32.wgsl.expected.glsl b/test/buffer/uniform/types/u32.wgsl.expected.glsl
index 402bd68..c3369ca 100644
--- a/test/buffer/uniform/types/u32.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   uint inner;
diff --git a/test/buffer/uniform/types/vec2.wgsl.expected.glsl b/test/buffer/uniform/types/vec2.wgsl.expected.glsl
index 6b281b4..208277d 100644
--- a/test/buffer/uniform/types/vec2.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/vec2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   ivec2 inner;
diff --git a/test/buffer/uniform/types/vec3.wgsl.expected.glsl b/test/buffer/uniform/types/vec3.wgsl.expected.glsl
index 2d6b854..05975ff 100644
--- a/test/buffer/uniform/types/vec3.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/vec3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   uvec3 inner;
diff --git a/test/buffer/uniform/types/vec4.wgsl.expected.glsl b/test/buffer/uniform/types/vec4.wgsl.expected.glsl
index e3d8b5f..93a224e 100644
--- a/test/buffer/uniform/types/vec4.wgsl.expected.glsl
+++ b/test/buffer/uniform/types/vec4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct u_block {
   vec4 inner;
diff --git a/test/bug/chromium/1221120.wgsl.expected.glsl b/test/bug/chromium/1221120.wgsl.expected.glsl
index 288694c..5274814 100644
--- a/test/bug/chromium/1221120.wgsl.expected.glsl
+++ b/test/bug/chromium/1221120.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/chromium/1236161.wgsl.expected.glsl b/test/bug/chromium/1236161.wgsl.expected.glsl
index d1ad034..471e408 100644
--- a/test/bug/chromium/1236161.wgsl.expected.glsl
+++ b/test/bug/chromium/1236161.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct modf_result {
   float fract;
@@ -25,8 +24,8 @@
 }
 
 Error parsing GLSL shader:
-ERROR: 0:12: '{ } style initializers' : not supported with this profile: es
-ERROR: 0:12: '' : compilation terminated 
+ERROR: 0:11: '{ } style initializers' : not supported with this profile: es
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/bug/chromium/1251009.wgsl.expected.glsl b/test/bug/chromium/1251009.wgsl.expected.glsl
index 990aab1..defd7cb 100644
--- a/test/bug/chromium/1251009.wgsl.expected.glsl
+++ b/test/bug/chromium/1251009.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in int loc0_1;
 layout(location = 1) in uint loc1_1;
diff --git a/test/bug/chromium/1273230.wgsl.expected.glsl b/test/bug/chromium/1273230.wgsl.expected.glsl
index 2f8ed43..dfd6196 100644
--- a/test/bug/chromium/1273230.wgsl.expected.glsl
+++ b/test/bug/chromium/1273230.wgsl.expected.glsl
@@ -19,7 +19,6 @@
         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint numTriangles;
diff --git a/test/bug/chromium/1273451.wgsl.expected.glsl b/test/bug/chromium/1273451.wgsl.expected.glsl
index 1922ee6..08daff2 100644
--- a/test/bug/chromium/1273451.wgsl.expected.glsl
+++ b/test/bug/chromium/1273451.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/chromium/1290107.wgsl.expected.glsl b/test/bug/chromium/1290107.wgsl.expected.glsl
index c60fe6c..4073388 100644
--- a/test/bug/chromium/1290107.wgsl.expected.glsl
+++ b/test/bug/chromium/1290107.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float f;
diff --git a/test/bug/dawn/947.wgsl.expected.glsl b/test/bug/dawn/947.wgsl.expected.glsl
index 18ec58d..f3e2440 100644
--- a/test/bug/dawn/947.wgsl.expected.glsl
+++ b/test/bug/dawn/947.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) out vec2 texcoords_1;
 struct Uniforms {
diff --git a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
index f285c50..c1318a7 100644
--- a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
index 0ff8f67..f0795b3 100644
--- a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
index 13a067e..549058c 100644
--- a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
index 2ef95c3..641aa10 100644
--- a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   ivec4 data[4];
diff --git a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
index f6a0259..6f0710e 100644
--- a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
index 4d79f32..a2b99f2 100644
--- a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
index 90509ae..a2dd311 100644
--- a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
index 30ce5d2..23f401b 100644
--- a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
index ed3c5dc..3044061 100644
--- a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
index dffa923..306a76e 100644
--- a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
index dfdf81a..5571c82 100644
--- a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
+++ b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct UBO {
   int dynamic_idx;
diff --git a/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl b/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl
index cd5b829..dcce86f 100644
--- a/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl
+++ b/test/bug/fxc/indexed_assign_to_array_in_struct/1206.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Simulation {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl
index 7decbe8..efc5916 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_x.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl
index 9939fe9..3c4ef9e 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_xy.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl
index a9e2933..e2f093e 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_scalar_y.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl
index 049b481..8e13a9f 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/local_assign_vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl
index 8765d83..127b0a1 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_x.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl
index b33ca04..e301809 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_xy.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl
index a9e2933..e2f093e 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_scalar_y.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl
index 6c55fcc..59c7f97 100644
--- a/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl
+++ b/test/bug/fxc/matrix_assignment_dynamic_index/module_assign_vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.glsl b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.glsl
index 76c960a..d438b65 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.glsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_loop.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec2 v2f = vec2(0.0f, 0.0f);
 ivec3 v3i = ivec3(0, 0, 0);
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.glsl b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.glsl
index dcec4ef..18ae5ee 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.glsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_call_with_no_loop.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec2 v2f = vec2(0.0f, 0.0f);
 ivec3 v3i = ivec3(0, 0, 0);
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.glsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.glsl
index cb4d65f..2a4793c 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.glsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_all.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   vec2 v2f = vec2(0.0f, 0.0f);
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.glsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.glsl
index 0ded303..a66b282 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.glsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_repeated.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   vec2 v2f = vec2(0.0f, 0.0f);
diff --git a/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.glsl b/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.glsl
index dc948de..10ebcf8 100644
--- a/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.glsl
+++ b/test/bug/fxc/vector_assignment_in_loop/loop_types_some.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   vec2 v2f = vec2(0.0f, 0.0f);
diff --git a/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.glsl b/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.glsl
index 6e316d9..62ba4e5 100644
--- a/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.glsl
+++ b/test/bug/fxc/vector_assignment_in_loop/no_loop.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   vec2 v2f = vec2(0.0f, 0.0f);
diff --git a/test/bug/tint/1083.wgsl.expected.glsl b/test/bug/tint/1083.wgsl.expected.glsl
index 2d273c7..b8445d6 100644
--- a/test/bug/tint/1083.wgsl.expected.glsl
+++ b/test/bug/tint/1083.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int c = (1 / 0);
diff --git a/test/bug/tint/1088.spvasm.expected.glsl b/test/bug/tint/1088.spvasm.expected.glsl
index dea6c16..62e1938 100644
--- a/test/bug/tint/1088.spvasm.expected.glsl
+++ b/test/bug/tint/1088.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec3 position_param_1;
 layout(location = 2) in vec2 uv_param_1;
diff --git a/test/bug/tint/1113.wgsl.expected.glsl b/test/bug/tint/1113.wgsl.expected.glsl
index 1c55add..9a70816 100644
--- a/test/bug/tint/1113.wgsl.expected.glsl
+++ b/test/bug/tint/1113.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint numTriangles;
@@ -121,7 +120,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint numTriangles;
@@ -212,7 +210,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint numTriangles;
diff --git a/test/bug/tint/1121.wgsl.expected.glsl b/test/bug/tint/1121.wgsl.expected.glsl
index 1a96e80..da9bf0f 100644
--- a/test/bug/tint/1121.wgsl.expected.glsl
+++ b/test/bug/tint/1121.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct LightData {
   vec4 position;
diff --git a/test/bug/tint/1136.wgsl.expected.glsl b/test/bug/tint/1136.wgsl.expected.glsl
index 342a0c8..38b94ee 100644
--- a/test/bug/tint/1136.wgsl.expected.glsl
+++ b/test/bug/tint/1136.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/1385.wgsl.expected.glsl b/test/bug/tint/1385.wgsl.expected.glsl
index 51423ee..caa63868 100644
--- a/test/bug/tint/1385.wgsl.expected.glsl
+++ b/test/bug/tint/1385.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer data_block_1 {
   int inner[];
diff --git a/test/bug/tint/219.spvasm.expected.glsl b/test/bug/tint/219.spvasm.expected.glsl
index b407ed8..07e4b03 100644
--- a/test/bug/tint/219.spvasm.expected.glsl
+++ b/test/bug/tint/219.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float x_200(inout vec2 x_201) {
   float x_212 = x_201.x;
diff --git a/test/bug/tint/221.wgsl.expected.glsl b/test/bug/tint/221.wgsl.expected.glsl
index 2ea0d24..eddc747 100644
--- a/test/bug/tint/221.wgsl.expected.glsl
+++ b/test/bug/tint/221.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Buf {
   uint count;
diff --git a/test/bug/tint/292.wgsl.expected.glsl b/test/bug/tint/292.wgsl.expected.glsl
index 26706ef..edf626d 100644
--- a/test/bug/tint/292.wgsl.expected.glsl
+++ b/test/bug/tint/292.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol() {
   vec3 light = vec3(1.200000048f, 1.0f, 2.0f);
diff --git a/test/bug/tint/294.wgsl.expected.glsl b/test/bug/tint/294.wgsl.expected.glsl
index 88fba9c..023a180 100644
--- a/test/bug/tint/294.wgsl.expected.glsl
+++ b/test/bug/tint/294.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/369.wgsl.expected.glsl b/test/bug/tint/369.wgsl.expected.glsl
index 4aa0146..8e6f8e6 100644
--- a/test/bug/tint/369.wgsl.expected.glsl
+++ b/test/bug/tint/369.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/403.wgsl.expected.glsl b/test/bug/tint/403.wgsl.expected.glsl
index 9950809..6d1a6a0 100644
--- a/test/bug/tint/403.wgsl.expected.glsl
+++ b/test/bug/tint/403.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct vertexUniformBuffer1 {
   mat2 transform1;
diff --git a/test/bug/tint/413.spvasm.expected.glsl b/test/bug/tint/413.spvasm.expected.glsl
index 65c6e04..2853804 100644
--- a/test/bug/tint/413.spvasm.expected.glsl
+++ b/test/bug/tint/413.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2D Dst;
 uniform highp usampler2D Src_1;
diff --git a/test/bug/tint/453.wgsl.expected.glsl b/test/bug/tint/453.wgsl.expected.glsl
index ceaa1f7..c400cdf 100644
--- a/test/bug/tint/453.wgsl.expected.glsl
+++ b/test/bug/tint/453.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2D Dst;
 uniform highp usampler2D Src_1;
diff --git a/test/bug/tint/492.wgsl.expected.glsl b/test/bug/tint/492.wgsl.expected.glsl
index b702400..74c958e 100644
--- a/test/bug/tint/492.wgsl.expected.glsl
+++ b/test/bug/tint/492.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int a;
diff --git a/test/bug/tint/534.wgsl.expected.glsl b/test/bug/tint/534.wgsl.expected.glsl
index e7751d7..15635c2 100644
--- a/test/bug/tint/534.wgsl.expected.glsl
+++ b/test/bug/tint/534.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint dstTextureFlipY;
diff --git a/test/bug/tint/744.wgsl.expected.glsl b/test/bug/tint/744.wgsl.expected.glsl
index 52221d1..b6c9722 100644
--- a/test/bug/tint/744.wgsl.expected.glsl
+++ b/test/bug/tint/744.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uvec2 aShape;
diff --git a/test/bug/tint/757.wgsl.expected.glsl b/test/bug/tint/757.wgsl.expected.glsl
index ea6d4be..ef8ff63 100644
--- a/test/bug/tint/757.wgsl.expected.glsl
+++ b/test/bug/tint/757.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Constants {
   int level;
diff --git a/test/bug/tint/764.wgsl.expected.glsl b/test/bug/tint/764.wgsl.expected.glsl
index 521fb36..c104ce3 100644
--- a/test/bug/tint/764.wgsl.expected.glsl
+++ b/test/bug/tint/764.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/782.wgsl.expected.glsl b/test/bug/tint/782.wgsl.expected.glsl
index a4f1e64..799cb66 100644
--- a/test/bug/tint/782.wgsl.expected.glsl
+++ b/test/bug/tint/782.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/824.wgsl.expected.glsl b/test/bug/tint/824.wgsl.expected.glsl
index e53dfa3..b067db4 100644
--- a/test/bug/tint/824.wgsl.expected.glsl
+++ b/test/bug/tint/824.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) out vec4 color_1;
 struct Output {
diff --git a/test/bug/tint/825.wgsl.expected.glsl b/test/bug/tint/825.wgsl.expected.glsl
index a3f1fac..9c9c067 100644
--- a/test/bug/tint/825.wgsl.expected.glsl
+++ b/test/bug/tint/825.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/827.wgsl.expected.glsl b/test/bug/tint/827.wgsl.expected.glsl
index e530859..482c7d3 100644
--- a/test/bug/tint/827.wgsl.expected.glsl
+++ b/test/bug/tint/827.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 const uint width = 128u;
 layout(binding = 1, std430) buffer Result_1 {
diff --git a/test/bug/tint/913.wgsl.expected.glsl b/test/bug/tint/913.wgsl.expected.glsl
index 0559e2d..93fb38b 100644
--- a/test/bug/tint/913.wgsl.expected.glsl
+++ b/test/bug/tint/913.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint dstTextureFlipY;
diff --git a/test/bug/tint/914.wgsl.expected.glsl b/test/bug/tint/914.wgsl.expected.glsl
index 268b480..0ec1794 100644
--- a/test/bug/tint/914.wgsl.expected.glsl
+++ b/test/bug/tint/914.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint dimAOuter;
diff --git a/test/bug/tint/922.wgsl.expected.glsl b/test/bug/tint/922.wgsl.expected.glsl
index bacfe36..a34bf26 100644
--- a/test/bug/tint/922.wgsl.expected.glsl
+++ b/test/bug/tint/922.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec3 a_Position_1;
 layout(location = 1) in vec2 a_UV_1;
diff --git a/test/bug/tint/926.wgsl.expected.glsl b/test/bug/tint/926.wgsl.expected.glsl
index 4ed6ac3..7e80241 100644
--- a/test/bug/tint/926.wgsl.expected.glsl
+++ b/test/bug/tint/926.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct DrawIndirectArgs {
   uint vertexCount;
diff --git a/test/bug/tint/942.wgsl.expected.glsl b/test/bug/tint/942.wgsl.expected.glsl
index b3dc10a..bd112c5 100644
--- a/test/bug/tint/942.wgsl.expected.glsl
+++ b/test/bug/tint/942.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Params {
   uint filterDim;
diff --git a/test/bug/tint/943.spvasm.expected.glsl b/test/bug/tint/943.spvasm.expected.glsl
index b334203..60a4a56 100644
--- a/test/bug/tint/943.spvasm.expected.glsl
+++ b/test/bug/tint/943.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   float NAN;
@@ -399,8 +398,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:13: '' : array size required 
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:12: '' : array size required 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/bug/tint/951.spvasm.expected.glsl b/test/bug/tint/951.spvasm.expected.glsl
index a62e485..3455fb0 100644
--- a/test/bug/tint/951.spvasm.expected.glsl
+++ b/test/bug/tint/951.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct ssbOut {
   float result[];
@@ -89,8 +88,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/bug/tint/977.spvasm.expected.glsl b/test/bug/tint/977.spvasm.expected.glsl
index 96d697f..88839a0 100644
--- a/test/bug/tint/977.spvasm.expected.glsl
+++ b/test/bug/tint/977.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct ResultMatrix {
   float numbers[];
@@ -72,8 +71,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/bug/tint/980.wgsl.expected.glsl b/test/bug/tint/980.wgsl.expected.glsl
index 6a1e700..423ba35 100644
--- a/test/bug/tint/980.wgsl.expected.glsl
+++ b/test/bug/tint/980.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec3 Bad(uint index, vec3 rd) {
   vec3 normal = vec3(0.0f);
diff --git a/test/bug/tint/990.wgsl.expected.glsl b/test/bug/tint/990.wgsl.expected.glsl
index b3ba8e0..efaab3d 100644
--- a/test/bug/tint/990.wgsl.expected.glsl
+++ b/test/bug/tint/990.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/bug/tint/993.wgsl.expected.glsl b/test/bug/tint/993.wgsl.expected.glsl
index b0b1868..fc8f672 100644
--- a/test/bug/tint/993.wgsl.expected.glsl
+++ b/test/bug/tint/993.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Constants {
   uint zero;
diff --git a/test/bug/tint/998.wgsl.expected.glsl b/test/bug/tint/998.wgsl.expected.glsl
index 688e74a..226cf72 100644
--- a/test/bug/tint/998.wgsl.expected.glsl
+++ b/test/bug/tint/998.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Constants {
   uint zero;
diff --git a/test/builtins/arrayLength/complex_via_let.wgsl.expected.glsl b/test/builtins/arrayLength/complex_via_let.wgsl.expected.glsl
index e2d85d0..7d17e02 100644
--- a/test/builtins/arrayLength/complex_via_let.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/complex_via_let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int a[];
diff --git a/test/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl b/test/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl
index f962064..c7ac2b7 100644
--- a/test/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/complex_via_let_no_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer G_block_1 {
   int inner[];
diff --git a/test/builtins/arrayLength/deprecated.wgsl.expected.glsl b/test/builtins/arrayLength/deprecated.wgsl.expected.glsl
index c45f59b..b6e9fe6 100644
--- a/test/builtins/arrayLength/deprecated.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/deprecated.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int a[];
diff --git a/test/builtins/arrayLength/simple.wgsl.expected.glsl b/test/builtins/arrayLength/simple.wgsl.expected.glsl
index e2d85d0..7d17e02 100644
--- a/test/builtins/arrayLength/simple.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/simple.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int a[];
diff --git a/test/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl b/test/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl
index f962064..c7ac2b7 100644
--- a/test/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/simple_no_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer G_block_1 {
   int inner[];
diff --git a/test/builtins/arrayLength/via_let.wgsl.expected.glsl b/test/builtins/arrayLength/via_let.wgsl.expected.glsl
index e2d85d0..7d17e02 100644
--- a/test/builtins/arrayLength/via_let.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/via_let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int a[];
diff --git a/test/builtins/arrayLength/via_let_complex.wgsl.expected.glsl b/test/builtins/arrayLength/via_let_complex.wgsl.expected.glsl
index e2d85d0..7d17e02 100644
--- a/test/builtins/arrayLength/via_let_complex.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/via_let_complex.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int a[];
diff --git a/test/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl b/test/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl
index f962064..c7ac2b7 100644
--- a/test/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/via_let_complex_no_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer G_block_1 {
   int inner[];
diff --git a/test/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl b/test/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl
index f962064..c7ac2b7 100644
--- a/test/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl
+++ b/test/builtins/arrayLength/via_let_no_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer G_block_1 {
   int inner[];
diff --git a/test/builtins/degrees.spvasm.expected.glsl b/test/builtins/degrees.spvasm.expected.glsl
index f73c198..858230b 100644
--- a/test/builtins/degrees.spvasm.expected.glsl
+++ b/test/builtins/degrees.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float tint_degrees(float param_0) {
   return param_0 * 57.295779513082322865;
diff --git a/test/builtins/frexp.wgsl.expected.glsl b/test/builtins/frexp.wgsl.expected.glsl
index 7cbc601..58191f0 100644
--- a/test/builtins/frexp.wgsl.expected.glsl
+++ b/test/builtins/frexp.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result {
   float sig;
@@ -28,8 +27,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found 
-ERROR: 0:11: '' : compilation terminated 
+ERROR: 0:10: 'frexp' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/abs/002533.wgsl.expected.glsl b/test/builtins/gen/abs/002533.wgsl.expected.glsl
index 0e26161..806bd2d 100644
--- a/test/builtins/gen/abs/002533.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/002533.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_002533() {
   vec4 res = abs(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_002533() {
   vec4 res = abs(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/abs/005174.wgsl.expected.glsl b/test/builtins/gen/abs/005174.wgsl.expected.glsl
index dfd8b54..0af5ccb 100644
--- a/test/builtins/gen/abs/005174.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/005174.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_005174() {
   vec3 res = abs(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_005174() {
   vec3 res = abs(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/abs/1ce782.wgsl.expected.glsl b/test/builtins/gen/abs/1ce782.wgsl.expected.glsl
index 7cfa4b0..1360342 100644
--- a/test/builtins/gen/abs/1ce782.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/1ce782.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void abs_1ce782() {
   uvec4 res = abs(uvec4(0u, 0u, 0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void abs_1ce782() {
   uvec4 res = abs(uvec4(0u, 0u, 0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/abs/1e9d53.wgsl.expected.glsl b/test/builtins/gen/abs/1e9d53.wgsl.expected.glsl
index cc54c23..9cbe88f 100644
--- a/test/builtins/gen/abs/1e9d53.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/1e9d53.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_1e9d53() {
   vec2 res = abs(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_1e9d53() {
   vec2 res = abs(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/abs/467cd1.wgsl.expected.glsl b/test/builtins/gen/abs/467cd1.wgsl.expected.glsl
index f929fe2..7e6bf0f 100644
--- a/test/builtins/gen/abs/467cd1.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/467cd1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void abs_467cd1() {
   uint res = abs(1u);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void abs_467cd1() {
   uint res = abs(1u);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/abs/4ad288.wgsl.expected.glsl b/test/builtins/gen/abs/4ad288.wgsl.expected.glsl
index eaadad8..1c16bc2 100644
--- a/test/builtins/gen/abs/4ad288.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/4ad288.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_4ad288() {
   int res = abs(1);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_4ad288() {
   int res = abs(1);
diff --git a/test/builtins/gen/abs/5ad50a.wgsl.expected.glsl b/test/builtins/gen/abs/5ad50a.wgsl.expected.glsl
index 709618d..c7647bf 100644
--- a/test/builtins/gen/abs/5ad50a.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/5ad50a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_5ad50a() {
   ivec3 res = abs(ivec3(0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_5ad50a() {
   ivec3 res = abs(ivec3(0, 0, 0));
diff --git a/test/builtins/gen/abs/7326de.wgsl.expected.glsl b/test/builtins/gen/abs/7326de.wgsl.expected.glsl
index 7b5c7dd..f7d2dd3 100644
--- a/test/builtins/gen/abs/7326de.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/7326de.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void abs_7326de() {
   uvec3 res = abs(uvec3(0u, 0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void abs_7326de() {
   uvec3 res = abs(uvec3(0u, 0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/abs/7f28e6.wgsl.expected.glsl b/test/builtins/gen/abs/7f28e6.wgsl.expected.glsl
index 1b1f376..88eec14 100644
--- a/test/builtins/gen/abs/7f28e6.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/7f28e6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void abs_7f28e6() {
   uvec2 res = abs(uvec2(0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void abs_7f28e6() {
   uvec2 res = abs(uvec2(0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'abs' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'abs' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/abs/7faa9e.wgsl.expected.glsl b/test/builtins/gen/abs/7faa9e.wgsl.expected.glsl
index 3a4930f..ba065c2 100644
--- a/test/builtins/gen/abs/7faa9e.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/7faa9e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_7faa9e() {
   ivec2 res = abs(ivec2(0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_7faa9e() {
   ivec2 res = abs(ivec2(0, 0));
diff --git a/test/builtins/gen/abs/9c80a6.wgsl.expected.glsl b/test/builtins/gen/abs/9c80a6.wgsl.expected.glsl
index ef48036..c90afce 100644
--- a/test/builtins/gen/abs/9c80a6.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/9c80a6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_9c80a6() {
   ivec4 res = abs(ivec4(0, 0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_9c80a6() {
   ivec4 res = abs(ivec4(0, 0, 0, 0));
diff --git a/test/builtins/gen/abs/b96037.wgsl.expected.glsl b/test/builtins/gen/abs/b96037.wgsl.expected.glsl
index 61e09f2..b124182 100644
--- a/test/builtins/gen/abs/b96037.wgsl.expected.glsl
+++ b/test/builtins/gen/abs/b96037.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void abs_b96037() {
   float res = abs(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void abs_b96037() {
   float res = abs(1.0f);
diff --git a/test/builtins/gen/acos/489247.wgsl.expected.glsl b/test/builtins/gen/acos/489247.wgsl.expected.glsl
index cdaf0f4..4263eed 100644
--- a/test/builtins/gen/acos/489247.wgsl.expected.glsl
+++ b/test/builtins/gen/acos/489247.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void acos_489247() {
   float res = acos(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void acos_489247() {
   float res = acos(1.0f);
diff --git a/test/builtins/gen/acos/8e2acf.wgsl.expected.glsl b/test/builtins/gen/acos/8e2acf.wgsl.expected.glsl
index 30c87b8..2cfd0af 100644
--- a/test/builtins/gen/acos/8e2acf.wgsl.expected.glsl
+++ b/test/builtins/gen/acos/8e2acf.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void acos_8e2acf() {
   vec4 res = acos(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void acos_8e2acf() {
   vec4 res = acos(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/acos/a610c4.wgsl.expected.glsl b/test/builtins/gen/acos/a610c4.wgsl.expected.glsl
index b913253..d89f1d5 100644
--- a/test/builtins/gen/acos/a610c4.wgsl.expected.glsl
+++ b/test/builtins/gen/acos/a610c4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void acos_a610c4() {
   vec3 res = acos(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void acos_a610c4() {
   vec3 res = acos(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/acos/dfc915.wgsl.expected.glsl b/test/builtins/gen/acos/dfc915.wgsl.expected.glsl
index bed9877..e43c819 100644
--- a/test/builtins/gen/acos/dfc915.wgsl.expected.glsl
+++ b/test/builtins/gen/acos/dfc915.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void acos_dfc915() {
   vec2 res = acos(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void acos_dfc915() {
   vec2 res = acos(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/all/353d6a.wgsl.expected.glsl b/test/builtins/gen/all/353d6a.wgsl.expected.glsl
index 2f202ff..1208198 100644
--- a/test/builtins/gen/all/353d6a.wgsl.expected.glsl
+++ b/test/builtins/gen/all/353d6a.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void all_353d6a() {
   bool res = all(false);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'all' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'all' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void all_353d6a() {
   bool res = all(false);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'all' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'all' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/all/986c7b.wgsl.expected.glsl b/test/builtins/gen/all/986c7b.wgsl.expected.glsl
index b4083b8..8050f80 100644
--- a/test/builtins/gen/all/986c7b.wgsl.expected.glsl
+++ b/test/builtins/gen/all/986c7b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void all_986c7b() {
   bool res = all(bvec4(false, false, false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void all_986c7b() {
   bool res = all(bvec4(false, false, false, false));
diff --git a/test/builtins/gen/all/bd2dba.wgsl.expected.glsl b/test/builtins/gen/all/bd2dba.wgsl.expected.glsl
index 65cdde6..949aad1 100644
--- a/test/builtins/gen/all/bd2dba.wgsl.expected.glsl
+++ b/test/builtins/gen/all/bd2dba.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void all_bd2dba() {
   bool res = all(bvec3(false, false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void all_bd2dba() {
   bool res = all(bvec3(false, false, false));
diff --git a/test/builtins/gen/all/f46790.wgsl.expected.glsl b/test/builtins/gen/all/f46790.wgsl.expected.glsl
index e664e39..4b5d43b 100644
--- a/test/builtins/gen/all/f46790.wgsl.expected.glsl
+++ b/test/builtins/gen/all/f46790.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void all_f46790() {
   bool res = all(bvec2(false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void all_f46790() {
   bool res = all(bvec2(false, false));
diff --git a/test/builtins/gen/any/083428.wgsl.expected.glsl b/test/builtins/gen/any/083428.wgsl.expected.glsl
index 3cbe6b3..1fdfb19 100644
--- a/test/builtins/gen/any/083428.wgsl.expected.glsl
+++ b/test/builtins/gen/any/083428.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void any_083428() {
   bool res = any(bvec4(false, false, false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void any_083428() {
   bool res = any(bvec4(false, false, false, false));
diff --git a/test/builtins/gen/any/0e3e58.wgsl.expected.glsl b/test/builtins/gen/any/0e3e58.wgsl.expected.glsl
index 8d2b299..90f8f69 100644
--- a/test/builtins/gen/any/0e3e58.wgsl.expected.glsl
+++ b/test/builtins/gen/any/0e3e58.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void any_0e3e58() {
   bool res = any(bvec2(false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void any_0e3e58() {
   bool res = any(bvec2(false, false));
diff --git a/test/builtins/gen/any/2ab91a.wgsl.expected.glsl b/test/builtins/gen/any/2ab91a.wgsl.expected.glsl
index 8fe07e6..eef474e 100644
--- a/test/builtins/gen/any/2ab91a.wgsl.expected.glsl
+++ b/test/builtins/gen/any/2ab91a.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void any_2ab91a() {
   bool res = any(false);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'any' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'any' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void any_2ab91a() {
   bool res = any(false);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'any' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'any' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/any/e755c1.wgsl.expected.glsl b/test/builtins/gen/any/e755c1.wgsl.expected.glsl
index 1f443e4..b5db335 100644
--- a/test/builtins/gen/any/e755c1.wgsl.expected.glsl
+++ b/test/builtins/gen/any/e755c1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void any_e755c1() {
   bool res = any(bvec3(false, false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void any_e755c1() {
   bool res = any(bvec3(false, false, false));
diff --git a/test/builtins/gen/arrayLength/1588cd.wgsl.expected.glsl b/test/builtins/gen/arrayLength/1588cd.wgsl.expected.glsl
index 6c55ac3..8c0fe17 100644
--- a/test/builtins/gen/arrayLength/1588cd.wgsl.expected.glsl
+++ b/test/builtins/gen/arrayLength/1588cd.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer SB_RO_1 {
   int arg_0[];
@@ -39,7 +38,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer SB_RO_1 {
   int arg_0[];
diff --git a/test/builtins/gen/arrayLength/61b1c7.wgsl.expected.glsl b/test/builtins/gen/arrayLength/61b1c7.wgsl.expected.glsl
index a5d0229..ad1be03 100644
--- a/test/builtins/gen/arrayLength/61b1c7.wgsl.expected.glsl
+++ b/test/builtins/gen/arrayLength/61b1c7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer SB_RW_1 {
   int arg_0[];
@@ -39,7 +38,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer SB_RW_1 {
   int arg_0[];
diff --git a/test/builtins/gen/arrayLength/a0f5ca.wgsl.expected.glsl b/test/builtins/gen/arrayLength/a0f5ca.wgsl.expected.glsl
index d0bf4a5..6e4fa86 100644
--- a/test/builtins/gen/arrayLength/a0f5ca.wgsl.expected.glsl
+++ b/test/builtins/gen/arrayLength/a0f5ca.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer SB_RO_1 {
   float arg_0[];
@@ -39,7 +38,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer SB_RO_1 {
   float arg_0[];
diff --git a/test/builtins/gen/arrayLength/cdd123.wgsl.expected.glsl b/test/builtins/gen/arrayLength/cdd123.wgsl.expected.glsl
index 92e73df..a20b9f5 100644
--- a/test/builtins/gen/arrayLength/cdd123.wgsl.expected.glsl
+++ b/test/builtins/gen/arrayLength/cdd123.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer SB_RW_1 {
   float arg_0[];
@@ -39,7 +38,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer SB_RW_1 {
   float arg_0[];
diff --git a/test/builtins/gen/arrayLength/cfca0a.wgsl.expected.glsl b/test/builtins/gen/arrayLength/cfca0a.wgsl.expected.glsl
index 99cab31..d7522aa 100644
--- a/test/builtins/gen/arrayLength/cfca0a.wgsl.expected.glsl
+++ b/test/builtins/gen/arrayLength/cfca0a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer SB_RO_1 {
   uint arg_0[];
@@ -39,7 +38,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(binding = 1, std430) buffer SB_RO_1 {
   uint arg_0[];
diff --git a/test/builtins/gen/arrayLength/eb510f.wgsl.expected.glsl b/test/builtins/gen/arrayLength/eb510f.wgsl.expected.glsl
index 52cd14e..765e645 100644
--- a/test/builtins/gen/arrayLength/eb510f.wgsl.expected.glsl
+++ b/test/builtins/gen/arrayLength/eb510f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer SB_RW_1 {
   uint arg_0[];
@@ -39,7 +38,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer SB_RW_1 {
   uint arg_0[];
diff --git a/test/builtins/gen/asin/064953.wgsl.expected.glsl b/test/builtins/gen/asin/064953.wgsl.expected.glsl
index c4e492a..ccb4a56 100644
--- a/test/builtins/gen/asin/064953.wgsl.expected.glsl
+++ b/test/builtins/gen/asin/064953.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void asin_064953() {
   vec4 res = asin(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void asin_064953() {
   vec4 res = asin(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/asin/7b6a44.wgsl.expected.glsl b/test/builtins/gen/asin/7b6a44.wgsl.expected.glsl
index a92e9b0..7f959c0 100644
--- a/test/builtins/gen/asin/7b6a44.wgsl.expected.glsl
+++ b/test/builtins/gen/asin/7b6a44.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void asin_7b6a44() {
   vec2 res = asin(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void asin_7b6a44() {
   vec2 res = asin(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/asin/8cd9c9.wgsl.expected.glsl b/test/builtins/gen/asin/8cd9c9.wgsl.expected.glsl
index a53d17c..a394773 100644
--- a/test/builtins/gen/asin/8cd9c9.wgsl.expected.glsl
+++ b/test/builtins/gen/asin/8cd9c9.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void asin_8cd9c9() {
   vec3 res = asin(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void asin_8cd9c9() {
   vec3 res = asin(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/asin/c0c272.wgsl.expected.glsl b/test/builtins/gen/asin/c0c272.wgsl.expected.glsl
index 1b61048..e11008a 100644
--- a/test/builtins/gen/asin/c0c272.wgsl.expected.glsl
+++ b/test/builtins/gen/asin/c0c272.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void asin_c0c272() {
   float res = asin(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void asin_c0c272() {
   float res = asin(1.0f);
diff --git a/test/builtins/gen/atan/02979a.wgsl.expected.glsl b/test/builtins/gen/atan/02979a.wgsl.expected.glsl
index 350248a..56f8c99 100644
--- a/test/builtins/gen/atan/02979a.wgsl.expected.glsl
+++ b/test/builtins/gen/atan/02979a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan_02979a() {
   float res = atan(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan_02979a() {
   float res = atan(1.0f);
diff --git a/test/builtins/gen/atan/331e6d.wgsl.expected.glsl b/test/builtins/gen/atan/331e6d.wgsl.expected.glsl
index 6aae2b6..202896e 100644
--- a/test/builtins/gen/atan/331e6d.wgsl.expected.glsl
+++ b/test/builtins/gen/atan/331e6d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan_331e6d() {
   vec3 res = atan(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan_331e6d() {
   vec3 res = atan(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/atan/a8b696.wgsl.expected.glsl b/test/builtins/gen/atan/a8b696.wgsl.expected.glsl
index 6cadae4..f3be369 100644
--- a/test/builtins/gen/atan/a8b696.wgsl.expected.glsl
+++ b/test/builtins/gen/atan/a8b696.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan_a8b696() {
   vec4 res = atan(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan_a8b696() {
   vec4 res = atan(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/atan/ad96e4.wgsl.expected.glsl b/test/builtins/gen/atan/ad96e4.wgsl.expected.glsl
index f4a5686..c1bd895 100644
--- a/test/builtins/gen/atan/ad96e4.wgsl.expected.glsl
+++ b/test/builtins/gen/atan/ad96e4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan_ad96e4() {
   vec2 res = atan(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan_ad96e4() {
   vec2 res = atan(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/atan2/57fb13.wgsl.expected.glsl b/test/builtins/gen/atan2/57fb13.wgsl.expected.glsl
index 5846e6f..3b86f39 100644
--- a/test/builtins/gen/atan2/57fb13.wgsl.expected.glsl
+++ b/test/builtins/gen/atan2/57fb13.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan2_57fb13() {
   vec2 res = atan(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan2_57fb13() {
   vec2 res = atan(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/atan2/96057c.wgsl.expected.glsl b/test/builtins/gen/atan2/96057c.wgsl.expected.glsl
index 0bfac0c..c0c4d40 100644
--- a/test/builtins/gen/atan2/96057c.wgsl.expected.glsl
+++ b/test/builtins/gen/atan2/96057c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan2_96057c() {
   float res = atan(1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan2_96057c() {
   float res = atan(1.0f, 1.0f);
diff --git a/test/builtins/gen/atan2/a70d0d.wgsl.expected.glsl b/test/builtins/gen/atan2/a70d0d.wgsl.expected.glsl
index 6a9fa45..195cf45 100644
--- a/test/builtins/gen/atan2/a70d0d.wgsl.expected.glsl
+++ b/test/builtins/gen/atan2/a70d0d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan2_a70d0d() {
   vec3 res = atan(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan2_a70d0d() {
   vec3 res = atan(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/atan2/ae713e.wgsl.expected.glsl b/test/builtins/gen/atan2/ae713e.wgsl.expected.glsl
index 1f50d8b..38e3578 100644
--- a/test/builtins/gen/atan2/ae713e.wgsl.expected.glsl
+++ b/test/builtins/gen/atan2/ae713e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void atan2_ae713e() {
   vec4 res = atan(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void atan2_ae713e() {
   vec4 res = atan(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/atomicAdd/794055.wgsl.expected.glsl b/test/builtins/gen/atomicAdd/794055.wgsl.expected.glsl
index bb7797f..9aa5fd0 100644
--- a/test/builtins/gen/atomicAdd/794055.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAdd/794055.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicAdd_794055() {
diff --git a/test/builtins/gen/atomicAdd/8a199a.wgsl.expected.glsl b/test/builtins/gen/atomicAdd/8a199a.wgsl.expected.glsl
index 7cfbf78..c2e7cdb 100644
--- a/test/builtins/gen/atomicAdd/8a199a.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAdd/8a199a.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicAdd/d32fe4.wgsl.expected.glsl b/test/builtins/gen/atomicAdd/d32fe4.wgsl.expected.glsl
index 1e1c730..a9a2c73 100644
--- a/test/builtins/gen/atomicAdd/d32fe4.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAdd/d32fe4.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicAdd/d5db1d.wgsl.expected.glsl b/test/builtins/gen/atomicAdd/d5db1d.wgsl.expected.glsl
index 2bc498d..58c0191 100644
--- a/test/builtins/gen/atomicAdd/d5db1d.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAdd/d5db1d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicAdd_d5db1d() {
diff --git a/test/builtins/gen/atomicAnd/152966.wgsl.expected.glsl b/test/builtins/gen/atomicAnd/152966.wgsl.expected.glsl
index 9f34abb..0815478 100644
--- a/test/builtins/gen/atomicAnd/152966.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAnd/152966.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicAnd/34edd3.wgsl.expected.glsl b/test/builtins/gen/atomicAnd/34edd3.wgsl.expected.glsl
index 39cca89..3052d85 100644
--- a/test/builtins/gen/atomicAnd/34edd3.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAnd/34edd3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicAnd_34edd3() {
diff --git a/test/builtins/gen/atomicAnd/45a819.wgsl.expected.glsl b/test/builtins/gen/atomicAnd/45a819.wgsl.expected.glsl
index 4acc0f3..1d8d880 100644
--- a/test/builtins/gen/atomicAnd/45a819.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAnd/45a819.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicAnd_45a819() {
diff --git a/test/builtins/gen/atomicAnd/85a8d9.wgsl.expected.glsl b/test/builtins/gen/atomicAnd/85a8d9.wgsl.expected.glsl
index fd1e8e9..3363b8b 100644
--- a/test/builtins/gen/atomicAnd/85a8d9.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicAnd/85a8d9.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl b/test/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl
index fe25e03..22d032e 100644
--- a/test/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.glsl
@@ -29,7 +29,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 ivec2 tint_atomicCompareExchangeWeak(inout int param_0, int param_1, int param_2) {
   ivec2 result;
diff --git a/test/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl b/test/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl
index c7fbeab..abfdbf5 100644
--- a/test/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.glsl
@@ -29,7 +29,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uvec2 tint_atomicCompareExchangeWeak(inout uint param_0, uint param_1, uint param_2) {
   uvec2 result;
diff --git a/test/builtins/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.glsl b/test/builtins/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.glsl
index 7794290..7cc71a3 100644
--- a/test/builtins/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicCompareExchangeWeak/89ea3b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 ivec2 tint_atomicCompareExchangeWeak(inout int param_0, int param_1, int param_2) {
   ivec2 result;
diff --git a/test/builtins/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.glsl b/test/builtins/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.glsl
index 8eee628..56826d4 100644
--- a/test/builtins/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicCompareExchangeWeak/b2ab2c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uvec2 tint_atomicCompareExchangeWeak(inout uint param_0, uint param_1, uint param_2) {
   uvec2 result;
diff --git a/test/builtins/gen/atomicExchange/0a5dca.wgsl.expected.glsl b/test/builtins/gen/atomicExchange/0a5dca.wgsl.expected.glsl
index 3547265..9bbbe05 100644
--- a/test/builtins/gen/atomicExchange/0a5dca.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicExchange/0a5dca.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicExchange_0a5dca() {
diff --git a/test/builtins/gen/atomicExchange/d59712.wgsl.expected.glsl b/test/builtins/gen/atomicExchange/d59712.wgsl.expected.glsl
index 081d2a5..03b9891 100644
--- a/test/builtins/gen/atomicExchange/d59712.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicExchange/d59712.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicExchange/e114ba.wgsl.expected.glsl b/test/builtins/gen/atomicExchange/e114ba.wgsl.expected.glsl
index 5a98189..29b214e 100644
--- a/test/builtins/gen/atomicExchange/e114ba.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicExchange/e114ba.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicExchange_e114ba() {
diff --git a/test/builtins/gen/atomicExchange/f2e22f.wgsl.expected.glsl b/test/builtins/gen/atomicExchange/f2e22f.wgsl.expected.glsl
index 270c305..d1f33c7 100644
--- a/test/builtins/gen/atomicExchange/f2e22f.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicExchange/f2e22f.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicLoad/0806ad.wgsl.expected.glsl b/test/builtins/gen/atomicLoad/0806ad.wgsl.expected.glsl
index 0306ab2..38a8c92 100644
--- a/test/builtins/gen/atomicLoad/0806ad.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicLoad/0806ad.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicLoad/361bf1.wgsl.expected.glsl b/test/builtins/gen/atomicLoad/361bf1.wgsl.expected.glsl
index 3a11a14..f56f5a7 100644
--- a/test/builtins/gen/atomicLoad/361bf1.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicLoad/361bf1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicLoad_361bf1() {
diff --git a/test/builtins/gen/atomicLoad/afcc03.wgsl.expected.glsl b/test/builtins/gen/atomicLoad/afcc03.wgsl.expected.glsl
index 7bd9bb4..a290c99 100644
--- a/test/builtins/gen/atomicLoad/afcc03.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicLoad/afcc03.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicLoad_afcc03() {
diff --git a/test/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.glsl b/test/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.glsl
index 07ac3ee..b4bd0d8 100644
--- a/test/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicLoad/fe6cc3.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicMax/51b9be.wgsl.expected.glsl b/test/builtins/gen/atomicMax/51b9be.wgsl.expected.glsl
index f726e34..98f34a9 100644
--- a/test/builtins/gen/atomicMax/51b9be.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMax/51b9be.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicMax/92aa72.wgsl.expected.glsl b/test/builtins/gen/atomicMax/92aa72.wgsl.expected.glsl
index 1ffdba3..9f6d085 100644
--- a/test/builtins/gen/atomicMax/92aa72.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMax/92aa72.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicMax/a89cc3.wgsl.expected.glsl b/test/builtins/gen/atomicMax/a89cc3.wgsl.expected.glsl
index 215658c..51e9eac 100644
--- a/test/builtins/gen/atomicMax/a89cc3.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMax/a89cc3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicMax_a89cc3() {
diff --git a/test/builtins/gen/atomicMax/beccfc.wgsl.expected.glsl b/test/builtins/gen/atomicMax/beccfc.wgsl.expected.glsl
index 6725271..c307f41 100644
--- a/test/builtins/gen/atomicMax/beccfc.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMax/beccfc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicMax_beccfc() {
diff --git a/test/builtins/gen/atomicMin/278235.wgsl.expected.glsl b/test/builtins/gen/atomicMin/278235.wgsl.expected.glsl
index b162c5a..e899058 100644
--- a/test/builtins/gen/atomicMin/278235.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMin/278235.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicMin_278235() {
diff --git a/test/builtins/gen/atomicMin/69d383.wgsl.expected.glsl b/test/builtins/gen/atomicMin/69d383.wgsl.expected.glsl
index ae3960b..bdb3b62 100644
--- a/test/builtins/gen/atomicMin/69d383.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMin/69d383.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicMin_69d383() {
diff --git a/test/builtins/gen/atomicMin/8e38dc.wgsl.expected.glsl b/test/builtins/gen/atomicMin/8e38dc.wgsl.expected.glsl
index d408681..e2d3c72 100644
--- a/test/builtins/gen/atomicMin/8e38dc.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMin/8e38dc.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicMin/c67a74.wgsl.expected.glsl b/test/builtins/gen/atomicMin/c67a74.wgsl.expected.glsl
index 4def8e7..6e3098e 100644
--- a/test/builtins/gen/atomicMin/c67a74.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicMin/c67a74.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicOr/5e3d61.wgsl.expected.glsl b/test/builtins/gen/atomicOr/5e3d61.wgsl.expected.glsl
index 57d9728..aa4f061 100644
--- a/test/builtins/gen/atomicOr/5e3d61.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicOr/5e3d61.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicOr_5e3d61() {
diff --git a/test/builtins/gen/atomicOr/5e95d4.wgsl.expected.glsl b/test/builtins/gen/atomicOr/5e95d4.wgsl.expected.glsl
index 01985c1..4ee4dea 100644
--- a/test/builtins/gen/atomicOr/5e95d4.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicOr/5e95d4.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicOr/8d96a0.wgsl.expected.glsl b/test/builtins/gen/atomicOr/8d96a0.wgsl.expected.glsl
index 3838592..d5d42c4 100644
--- a/test/builtins/gen/atomicOr/8d96a0.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicOr/8d96a0.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicOr/d09248.wgsl.expected.glsl b/test/builtins/gen/atomicOr/d09248.wgsl.expected.glsl
index 79171ef..bb03f7c 100644
--- a/test/builtins/gen/atomicOr/d09248.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicOr/d09248.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicOr_d09248() {
diff --git a/test/builtins/gen/atomicStore/726882.wgsl.expected.glsl b/test/builtins/gen/atomicStore/726882.wgsl.expected.glsl
index 3d30417..9519ceb 100644
--- a/test/builtins/gen/atomicStore/726882.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicStore/726882.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicStore_726882() {
diff --git a/test/builtins/gen/atomicStore/8bea94.wgsl.expected.glsl b/test/builtins/gen/atomicStore/8bea94.wgsl.expected.glsl
index d152765..b46dbfc 100644
--- a/test/builtins/gen/atomicStore/8bea94.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicStore/8bea94.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicStore_8bea94() {
diff --git a/test/builtins/gen/atomicStore/cdc29e.wgsl.expected.glsl b/test/builtins/gen/atomicStore/cdc29e.wgsl.expected.glsl
index 970c11b..7d8d0f5 100644
--- a/test/builtins/gen/atomicStore/cdc29e.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicStore/cdc29e.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicStore/d1e9a6.wgsl.expected.glsl b/test/builtins/gen/atomicStore/d1e9a6.wgsl.expected.glsl
index a5d2959..1281880 100644
--- a/test/builtins/gen/atomicStore/d1e9a6.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicStore/d1e9a6.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicSub/051100.wgsl.expected.glsl b/test/builtins/gen/atomicSub/051100.wgsl.expected.glsl
index 62a7e3a..07573d2 100644
--- a/test/builtins/gen/atomicSub/051100.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicSub/051100.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicSub/0d26c2.wgsl.expected.glsl b/test/builtins/gen/atomicSub/0d26c2.wgsl.expected.glsl
index e2f878a..b03de77 100644
--- a/test/builtins/gen/atomicSub/0d26c2.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicSub/0d26c2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicSub_0d26c2() {
diff --git a/test/builtins/gen/atomicSub/15bfc9.wgsl.expected.glsl b/test/builtins/gen/atomicSub/15bfc9.wgsl.expected.glsl
index 739d9c9..24aa578 100644
--- a/test/builtins/gen/atomicSub/15bfc9.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicSub/15bfc9.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicSub/77883a.wgsl.expected.glsl b/test/builtins/gen/atomicSub/77883a.wgsl.expected.glsl
index f47901f..27910ac 100644
--- a/test/builtins/gen/atomicSub/77883a.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicSub/77883a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicSub_77883a() {
diff --git a/test/builtins/gen/atomicXor/54510e.wgsl.expected.glsl b/test/builtins/gen/atomicXor/54510e.wgsl.expected.glsl
index 5427999..e04552e 100644
--- a/test/builtins/gen/atomicXor/54510e.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicXor/54510e.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   uint arg_0;
diff --git a/test/builtins/gen/atomicXor/75dc95.wgsl.expected.glsl b/test/builtins/gen/atomicXor/75dc95.wgsl.expected.glsl
index f39ea9e..5c4e204 100644
--- a/test/builtins/gen/atomicXor/75dc95.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicXor/75dc95.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int arg_0;
 void atomicXor_75dc95() {
diff --git a/test/builtins/gen/atomicXor/c1b78c.wgsl.expected.glsl b/test/builtins/gen/atomicXor/c1b78c.wgsl.expected.glsl
index 8e45daa..0ebd9e7 100644
--- a/test/builtins/gen/atomicXor/c1b78c.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicXor/c1b78c.wgsl.expected.glsl
@@ -21,7 +21,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct SB_RW {
   int arg_0;
diff --git a/test/builtins/gen/atomicXor/c8e6be.wgsl.expected.glsl b/test/builtins/gen/atomicXor/c8e6be.wgsl.expected.glsl
index ef63814..dd44734 100644
--- a/test/builtins/gen/atomicXor/c8e6be.wgsl.expected.glsl
+++ b/test/builtins/gen/atomicXor/c8e6be.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared uint arg_0;
 void atomicXor_c8e6be() {
diff --git a/test/builtins/gen/ceil/34064b.wgsl.expected.glsl b/test/builtins/gen/ceil/34064b.wgsl.expected.glsl
index 4e1806e..6b43925 100644
--- a/test/builtins/gen/ceil/34064b.wgsl.expected.glsl
+++ b/test/builtins/gen/ceil/34064b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ceil_34064b() {
   vec3 res = ceil(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ceil_34064b() {
   vec3 res = ceil(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/ceil/678655.wgsl.expected.glsl b/test/builtins/gen/ceil/678655.wgsl.expected.glsl
index e66c6ea..77257fc 100644
--- a/test/builtins/gen/ceil/678655.wgsl.expected.glsl
+++ b/test/builtins/gen/ceil/678655.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ceil_678655() {
   float res = ceil(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ceil_678655() {
   float res = ceil(1.0f);
diff --git a/test/builtins/gen/ceil/96f597.wgsl.expected.glsl b/test/builtins/gen/ceil/96f597.wgsl.expected.glsl
index 5ca7044..2436713 100644
--- a/test/builtins/gen/ceil/96f597.wgsl.expected.glsl
+++ b/test/builtins/gen/ceil/96f597.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ceil_96f597() {
   vec2 res = ceil(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ceil_96f597() {
   vec2 res = ceil(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/ceil/b74c16.wgsl.expected.glsl b/test/builtins/gen/ceil/b74c16.wgsl.expected.glsl
index b020c55..03155fe 100644
--- a/test/builtins/gen/ceil/b74c16.wgsl.expected.glsl
+++ b/test/builtins/gen/ceil/b74c16.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ceil_b74c16() {
   vec4 res = ceil(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ceil_b74c16() {
   vec4 res = ceil(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/clamp/0acf8f.wgsl.expected.glsl b/test/builtins/gen/clamp/0acf8f.wgsl.expected.glsl
index 8c38d2a..b7e9129 100644
--- a/test/builtins/gen/clamp/0acf8f.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/0acf8f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_0acf8f() {
   vec2 res = clamp(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_0acf8f() {
   vec2 res = clamp(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/clamp/1a32e3.wgsl.expected.glsl b/test/builtins/gen/clamp/1a32e3.wgsl.expected.glsl
index 5f87b77..e85508d 100644
--- a/test/builtins/gen/clamp/1a32e3.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/1a32e3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_1a32e3() {
   ivec4 res = clamp(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_1a32e3() {
   ivec4 res = clamp(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/builtins/gen/clamp/2bd567.wgsl.expected.glsl b/test/builtins/gen/clamp/2bd567.wgsl.expected.glsl
index 59947a6..f53caf7 100644
--- a/test/builtins/gen/clamp/2bd567.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/2bd567.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_2bd567() {
   float res = clamp(1.0f, 1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_2bd567() {
   float res = clamp(1.0f, 1.0f, 1.0f);
diff --git a/test/builtins/gen/clamp/2bde41.wgsl.expected.glsl b/test/builtins/gen/clamp/2bde41.wgsl.expected.glsl
index 2739432..6aaf023 100644
--- a/test/builtins/gen/clamp/2bde41.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/2bde41.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_2bde41() {
   vec4 res = clamp(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_2bde41() {
   vec4 res = clamp(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/clamp/548fc7.wgsl.expected.glsl b/test/builtins/gen/clamp/548fc7.wgsl.expected.glsl
index 4986e45..b088b18 100644
--- a/test/builtins/gen/clamp/548fc7.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/548fc7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_548fc7() {
   uvec3 res = clamp(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_548fc7() {
   uvec3 res = clamp(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u));
diff --git a/test/builtins/gen/clamp/5f0819.wgsl.expected.glsl b/test/builtins/gen/clamp/5f0819.wgsl.expected.glsl
index 1068aeb..d3ac5ba 100644
--- a/test/builtins/gen/clamp/5f0819.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/5f0819.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_5f0819() {
   ivec3 res = clamp(ivec3(0, 0, 0), ivec3(0, 0, 0), ivec3(0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_5f0819() {
   ivec3 res = clamp(ivec3(0, 0, 0), ivec3(0, 0, 0), ivec3(0, 0, 0));
diff --git a/test/builtins/gen/clamp/6c1749.wgsl.expected.glsl b/test/builtins/gen/clamp/6c1749.wgsl.expected.glsl
index 2f4bb90..bd1c35c 100644
--- a/test/builtins/gen/clamp/6c1749.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/6c1749.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_6c1749() {
   ivec2 res = clamp(ivec2(0, 0), ivec2(0, 0), ivec2(0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_6c1749() {
   ivec2 res = clamp(ivec2(0, 0), ivec2(0, 0), ivec2(0, 0));
diff --git a/test/builtins/gen/clamp/7706d7.wgsl.expected.glsl b/test/builtins/gen/clamp/7706d7.wgsl.expected.glsl
index 1786de2..65b4af4 100644
--- a/test/builtins/gen/clamp/7706d7.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/7706d7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_7706d7() {
   uvec2 res = clamp(uvec2(0u, 0u), uvec2(0u, 0u), uvec2(0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_7706d7() {
   uvec2 res = clamp(uvec2(0u, 0u), uvec2(0u, 0u), uvec2(0u, 0u));
diff --git a/test/builtins/gen/clamp/867397.wgsl.expected.glsl b/test/builtins/gen/clamp/867397.wgsl.expected.glsl
index 722a50b..f7cf62a 100644
--- a/test/builtins/gen/clamp/867397.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/867397.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_867397() {
   vec3 res = clamp(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_867397() {
   vec3 res = clamp(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/clamp/a2de25.wgsl.expected.glsl b/test/builtins/gen/clamp/a2de25.wgsl.expected.glsl
index 8a62404..77a7a34 100644
--- a/test/builtins/gen/clamp/a2de25.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/a2de25.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_a2de25() {
   uint res = clamp(1u, 1u, 1u);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_a2de25() {
   uint res = clamp(1u, 1u, 1u);
diff --git a/test/builtins/gen/clamp/b07c65.wgsl.expected.glsl b/test/builtins/gen/clamp/b07c65.wgsl.expected.glsl
index ece23a6..c71e535 100644
--- a/test/builtins/gen/clamp/b07c65.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/b07c65.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_b07c65() {
   int res = clamp(1, 1, 1);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_b07c65() {
   int res = clamp(1, 1, 1);
diff --git a/test/builtins/gen/clamp/bd43ce.wgsl.expected.glsl b/test/builtins/gen/clamp/bd43ce.wgsl.expected.glsl
index 5206a82..196409e 100644
--- a/test/builtins/gen/clamp/bd43ce.wgsl.expected.glsl
+++ b/test/builtins/gen/clamp/bd43ce.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void clamp_bd43ce() {
   uvec4 res = clamp(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void clamp_bd43ce() {
   uvec4 res = clamp(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/builtins/gen/cos/16dc15.wgsl.expected.glsl b/test/builtins/gen/cos/16dc15.wgsl.expected.glsl
index 9f3d3d9..e165379 100644
--- a/test/builtins/gen/cos/16dc15.wgsl.expected.glsl
+++ b/test/builtins/gen/cos/16dc15.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cos_16dc15() {
   vec3 res = cos(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cos_16dc15() {
   vec3 res = cos(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/cos/29d66d.wgsl.expected.glsl b/test/builtins/gen/cos/29d66d.wgsl.expected.glsl
index 6a2cdd0..3145690 100644
--- a/test/builtins/gen/cos/29d66d.wgsl.expected.glsl
+++ b/test/builtins/gen/cos/29d66d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cos_29d66d() {
   vec4 res = cos(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cos_29d66d() {
   vec4 res = cos(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/cos/c3b486.wgsl.expected.glsl b/test/builtins/gen/cos/c3b486.wgsl.expected.glsl
index b1c05c5..e307b9e 100644
--- a/test/builtins/gen/cos/c3b486.wgsl.expected.glsl
+++ b/test/builtins/gen/cos/c3b486.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cos_c3b486() {
   vec2 res = cos(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cos_c3b486() {
   vec2 res = cos(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/cos/c5c28e.wgsl.expected.glsl b/test/builtins/gen/cos/c5c28e.wgsl.expected.glsl
index 5a3dc87..e9ca290 100644
--- a/test/builtins/gen/cos/c5c28e.wgsl.expected.glsl
+++ b/test/builtins/gen/cos/c5c28e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cos_c5c28e() {
   float res = cos(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cos_c5c28e() {
   float res = cos(1.0f);
diff --git a/test/builtins/gen/cosh/377652.wgsl.expected.glsl b/test/builtins/gen/cosh/377652.wgsl.expected.glsl
index 37e79fb..53d2571 100644
--- a/test/builtins/gen/cosh/377652.wgsl.expected.glsl
+++ b/test/builtins/gen/cosh/377652.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cosh_377652() {
   vec3 res = cosh(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cosh_377652() {
   vec3 res = cosh(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/cosh/c13756.wgsl.expected.glsl b/test/builtins/gen/cosh/c13756.wgsl.expected.glsl
index e142266..3fdd98f 100644
--- a/test/builtins/gen/cosh/c13756.wgsl.expected.glsl
+++ b/test/builtins/gen/cosh/c13756.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cosh_c13756() {
   vec2 res = cosh(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cosh_c13756() {
   vec2 res = cosh(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/cosh/da92dd.wgsl.expected.glsl b/test/builtins/gen/cosh/da92dd.wgsl.expected.glsl
index 0e4ce95..1b25909 100644
--- a/test/builtins/gen/cosh/da92dd.wgsl.expected.glsl
+++ b/test/builtins/gen/cosh/da92dd.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cosh_da92dd() {
   float res = cosh(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cosh_da92dd() {
   float res = cosh(1.0f);
diff --git a/test/builtins/gen/cosh/e0c1de.wgsl.expected.glsl b/test/builtins/gen/cosh/e0c1de.wgsl.expected.glsl
index 9b4cf6c..48a7c0a 100644
--- a/test/builtins/gen/cosh/e0c1de.wgsl.expected.glsl
+++ b/test/builtins/gen/cosh/e0c1de.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cosh_e0c1de() {
   vec4 res = cosh(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cosh_e0c1de() {
   vec4 res = cosh(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/countOneBits/0d0e46.wgsl.expected.glsl b/test/builtins/gen/countOneBits/0d0e46.wgsl.expected.glsl
index f799d3c..bf9a227 100644
--- a/test/builtins/gen/countOneBits/0d0e46.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/0d0e46.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_0d0e46() {
   uvec4 res = countbits(uvec4(0u, 0u, 0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_0d0e46() {
   uvec4 res = countbits(uvec4(0u, 0u, 0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/0f7980.wgsl.expected.glsl b/test/builtins/gen/countOneBits/0f7980.wgsl.expected.glsl
index 09551c3..d4e690c 100644
--- a/test/builtins/gen/countOneBits/0f7980.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/0f7980.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_0f7980() {
   ivec4 res = countbits(ivec4(0, 0, 0, 0));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_0f7980() {
   ivec4 res = countbits(ivec4(0, 0, 0, 0));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/65d2ae.wgsl.expected.glsl b/test/builtins/gen/countOneBits/65d2ae.wgsl.expected.glsl
index 038da22..2f4d946 100644
--- a/test/builtins/gen/countOneBits/65d2ae.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/65d2ae.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_65d2ae() {
   ivec3 res = countbits(ivec3(0, 0, 0));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_65d2ae() {
   ivec3 res = countbits(ivec3(0, 0, 0));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/690cfc.wgsl.expected.glsl b/test/builtins/gen/countOneBits/690cfc.wgsl.expected.glsl
index 268f4a8..80fbd03 100644
--- a/test/builtins/gen/countOneBits/690cfc.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/690cfc.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_690cfc() {
   uvec3 res = countbits(uvec3(0u, 0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_690cfc() {
   uvec3 res = countbits(uvec3(0u, 0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/94fd81.wgsl.expected.glsl b/test/builtins/gen/countOneBits/94fd81.wgsl.expected.glsl
index 631db9a..f4d3c55 100644
--- a/test/builtins/gen/countOneBits/94fd81.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/94fd81.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_94fd81() {
   uvec2 res = countbits(uvec2(0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_94fd81() {
   uvec2 res = countbits(uvec2(0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/ae44f9.wgsl.expected.glsl b/test/builtins/gen/countOneBits/ae44f9.wgsl.expected.glsl
index 9286553..6d26ecd 100644
--- a/test/builtins/gen/countOneBits/ae44f9.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/ae44f9.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_ae44f9() {
   uint res = countbits(1u);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_ae44f9() {
   uint res = countbits(1u);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/af90e2.wgsl.expected.glsl b/test/builtins/gen/countOneBits/af90e2.wgsl.expected.glsl
index d1907d4..13673ed 100644
--- a/test/builtins/gen/countOneBits/af90e2.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/af90e2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_af90e2() {
   ivec2 res = countbits(ivec2(0, 0));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_af90e2() {
   ivec2 res = countbits(ivec2(0, 0));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/countOneBits/fd88b2.wgsl.expected.glsl b/test/builtins/gen/countOneBits/fd88b2.wgsl.expected.glsl
index b2342c0..22f32fc 100644
--- a/test/builtins/gen/countOneBits/fd88b2.wgsl.expected.glsl
+++ b/test/builtins/gen/countOneBits/fd88b2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_fd88b2() {
   int res = countbits(1);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void countOneBits_fd88b2() {
   int res = countbits(1);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'countbits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'countbits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/cross/041cb0.wgsl.expected.glsl b/test/builtins/gen/cross/041cb0.wgsl.expected.glsl
index cf3ac75..51e5992 100644
--- a/test/builtins/gen/cross/041cb0.wgsl.expected.glsl
+++ b/test/builtins/gen/cross/041cb0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void cross_041cb0() {
   vec3 res = cross(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void cross_041cb0() {
   vec3 res = cross(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/degrees/0d170c.wgsl.expected.glsl b/test/builtins/gen/degrees/0d170c.wgsl.expected.glsl
index 2f88843..95c40fe 100644
--- a/test/builtins/gen/degrees/0d170c.wgsl.expected.glsl
+++ b/test/builtins/gen/degrees/0d170c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_degrees(vec4 param_0) {
   return param_0 * 57.295779513082322865;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec4 tint_degrees(vec4 param_0) {
   return param_0 * 57.295779513082322865;
diff --git a/test/builtins/gen/degrees/1ad5df.wgsl.expected.glsl b/test/builtins/gen/degrees/1ad5df.wgsl.expected.glsl
index 6e29dfc..dbb9fc0 100644
--- a/test/builtins/gen/degrees/1ad5df.wgsl.expected.glsl
+++ b/test/builtins/gen/degrees/1ad5df.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec2 tint_degrees(vec2 param_0) {
   return param_0 * 57.295779513082322865;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec2 tint_degrees(vec2 param_0) {
   return param_0 * 57.295779513082322865;
diff --git a/test/builtins/gen/degrees/2af623.wgsl.expected.glsl b/test/builtins/gen/degrees/2af623.wgsl.expected.glsl
index 2658861..69f79b1 100644
--- a/test/builtins/gen/degrees/2af623.wgsl.expected.glsl
+++ b/test/builtins/gen/degrees/2af623.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec3 tint_degrees(vec3 param_0) {
   return param_0 * 57.295779513082322865;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec3 tint_degrees(vec3 param_0) {
   return param_0 * 57.295779513082322865;
diff --git a/test/builtins/gen/degrees/51f705.wgsl.expected.glsl b/test/builtins/gen/degrees/51f705.wgsl.expected.glsl
index 373fffb..177129a 100644
--- a/test/builtins/gen/degrees/51f705.wgsl.expected.glsl
+++ b/test/builtins/gen/degrees/51f705.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float tint_degrees(float param_0) {
   return param_0 * 57.295779513082322865;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 float tint_degrees(float param_0) {
   return param_0 * 57.295779513082322865;
diff --git a/test/builtins/gen/determinant/2b62ba.wgsl.expected.glsl b/test/builtins/gen/determinant/2b62ba.wgsl.expected.glsl
index 4d8147a..eb19607 100644
--- a/test/builtins/gen/determinant/2b62ba.wgsl.expected.glsl
+++ b/test/builtins/gen/determinant/2b62ba.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void determinant_2b62ba() {
   float res = determinant(mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void determinant_2b62ba() {
   float res = determinant(mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/determinant/a0a87c.wgsl.expected.glsl b/test/builtins/gen/determinant/a0a87c.wgsl.expected.glsl
index f2a5f4e..8d76e1f 100644
--- a/test/builtins/gen/determinant/a0a87c.wgsl.expected.glsl
+++ b/test/builtins/gen/determinant/a0a87c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void determinant_a0a87c() {
   float res = determinant(mat4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void determinant_a0a87c() {
   float res = determinant(mat4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/determinant/e19305.wgsl.expected.glsl b/test/builtins/gen/determinant/e19305.wgsl.expected.glsl
index 474b179..969352f 100644
--- a/test/builtins/gen/determinant/e19305.wgsl.expected.glsl
+++ b/test/builtins/gen/determinant/e19305.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void determinant_e19305() {
   float res = determinant(mat2(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void determinant_e19305() {
   float res = determinant(mat2(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/distance/0657d4.wgsl.expected.glsl b/test/builtins/gen/distance/0657d4.wgsl.expected.glsl
index d0d4773..387f58e 100644
--- a/test/builtins/gen/distance/0657d4.wgsl.expected.glsl
+++ b/test/builtins/gen/distance/0657d4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void distance_0657d4() {
   float res = distance(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void distance_0657d4() {
   float res = distance(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/distance/9646ea.wgsl.expected.glsl b/test/builtins/gen/distance/9646ea.wgsl.expected.glsl
index 2b4b8d4..6c4cad2 100644
--- a/test/builtins/gen/distance/9646ea.wgsl.expected.glsl
+++ b/test/builtins/gen/distance/9646ea.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void distance_9646ea() {
   float res = distance(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void distance_9646ea() {
   float res = distance(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/distance/aa4055.wgsl.expected.glsl b/test/builtins/gen/distance/aa4055.wgsl.expected.glsl
index a49d96f..6161f45 100644
--- a/test/builtins/gen/distance/aa4055.wgsl.expected.glsl
+++ b/test/builtins/gen/distance/aa4055.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void distance_aa4055() {
   float res = distance(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void distance_aa4055() {
   float res = distance(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/distance/cfed73.wgsl.expected.glsl b/test/builtins/gen/distance/cfed73.wgsl.expected.glsl
index b6471a6..0e208c5 100644
--- a/test/builtins/gen/distance/cfed73.wgsl.expected.glsl
+++ b/test/builtins/gen/distance/cfed73.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void distance_cfed73() {
   float res = distance(1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void distance_cfed73() {
   float res = distance(1.0f, 1.0f);
diff --git a/test/builtins/gen/dot/0c577b.wgsl.expected.glsl b/test/builtins/gen/dot/0c577b.wgsl.expected.glsl
index 13a2f4e..134cd5b 100644
--- a/test/builtins/gen/dot/0c577b.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/0c577b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void dot_0c577b() {
   float res = dot(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void dot_0c577b() {
   float res = dot(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/dot/7548a0.wgsl.expected.glsl b/test/builtins/gen/dot/7548a0.wgsl.expected.glsl
index 3c22476..37584d2 100644
--- a/test/builtins/gen/dot/7548a0.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/7548a0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec3 a, uvec3 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
@@ -41,7 +40,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec3 a, uvec3 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
diff --git a/test/builtins/gen/dot/883f0e.wgsl.expected.glsl b/test/builtins/gen/dot/883f0e.wgsl.expected.glsl
index 32578f4..83effaa 100644
--- a/test/builtins/gen/dot/883f0e.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/883f0e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void dot_883f0e() {
   float res = dot(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void dot_883f0e() {
   float res = dot(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/dot/97c7ee.wgsl.expected.glsl b/test/builtins/gen/dot/97c7ee.wgsl.expected.glsl
index 92ff745..7e2136d 100644
--- a/test/builtins/gen/dot/97c7ee.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/97c7ee.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec2 a, uvec2 b) {
   return a[0]*b[0] + a[1]*b[1];
@@ -41,7 +40,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec2 a, uvec2 b) {
   return a[0]*b[0] + a[1]*b[1];
diff --git a/test/builtins/gen/dot/ba4246.wgsl.expected.glsl b/test/builtins/gen/dot/ba4246.wgsl.expected.glsl
index 0c6c025..760bde1 100644
--- a/test/builtins/gen/dot/ba4246.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/ba4246.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void dot_ba4246() {
   float res = dot(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void dot_ba4246() {
   float res = dot(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/dot/e994c7.wgsl.expected.glsl b/test/builtins/gen/dot/e994c7.wgsl.expected.glsl
index 5916d1a..5257a55 100644
--- a/test/builtins/gen/dot/e994c7.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/e994c7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec4 a, uvec4 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
@@ -41,7 +40,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uint tint_int_dot(uvec4 a, uvec4 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
diff --git a/test/builtins/gen/dot/ef6b1d.wgsl.expected.glsl b/test/builtins/gen/dot/ef6b1d.wgsl.expected.glsl
index 34d8bf5..7c4b246 100644
--- a/test/builtins/gen/dot/ef6b1d.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/ef6b1d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec4 a, ivec4 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
@@ -41,7 +40,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec4 a, ivec4 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];
diff --git a/test/builtins/gen/dot/f1312c.wgsl.expected.glsl b/test/builtins/gen/dot/f1312c.wgsl.expected.glsl
index f217684..218f3c3 100644
--- a/test/builtins/gen/dot/f1312c.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/f1312c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec3 a, ivec3 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
@@ -41,7 +40,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec3 a, ivec3 b) {
   return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
diff --git a/test/builtins/gen/dot/fc5f7c.wgsl.expected.glsl b/test/builtins/gen/dot/fc5f7c.wgsl.expected.glsl
index 5ad787d..7b1023f 100644
--- a/test/builtins/gen/dot/fc5f7c.wgsl.expected.glsl
+++ b/test/builtins/gen/dot/fc5f7c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec2 a, ivec2 b) {
   return a[0]*b[0] + a[1]*b[1];
@@ -41,7 +40,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 int tint_int_dot(ivec2 a, ivec2 b) {
   return a[0]*b[0] + a[1]*b[1];
diff --git a/test/builtins/gen/exp/0f70eb.wgsl.expected.glsl b/test/builtins/gen/exp/0f70eb.wgsl.expected.glsl
index feae4f5..98a8a0f 100644
--- a/test/builtins/gen/exp/0f70eb.wgsl.expected.glsl
+++ b/test/builtins/gen/exp/0f70eb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp_0f70eb() {
   vec4 res = exp(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp_0f70eb() {
   vec4 res = exp(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/exp/1951e7.wgsl.expected.glsl b/test/builtins/gen/exp/1951e7.wgsl.expected.glsl
index d2e216a..b2a049d 100644
--- a/test/builtins/gen/exp/1951e7.wgsl.expected.glsl
+++ b/test/builtins/gen/exp/1951e7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp_1951e7() {
   vec2 res = exp(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp_1951e7() {
   vec2 res = exp(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/exp/771fd2.wgsl.expected.glsl b/test/builtins/gen/exp/771fd2.wgsl.expected.glsl
index d5b5e73..6cd3240 100644
--- a/test/builtins/gen/exp/771fd2.wgsl.expected.glsl
+++ b/test/builtins/gen/exp/771fd2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp_771fd2() {
   float res = exp(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp_771fd2() {
   float res = exp(1.0f);
diff --git a/test/builtins/gen/exp/d98450.wgsl.expected.glsl b/test/builtins/gen/exp/d98450.wgsl.expected.glsl
index 52d707b..952a65a 100644
--- a/test/builtins/gen/exp/d98450.wgsl.expected.glsl
+++ b/test/builtins/gen/exp/d98450.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp_d98450() {
   vec3 res = exp(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp_d98450() {
   vec3 res = exp(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/exp2/1f8680.wgsl.expected.glsl b/test/builtins/gen/exp2/1f8680.wgsl.expected.glsl
index b9556d1..136569a 100644
--- a/test/builtins/gen/exp2/1f8680.wgsl.expected.glsl
+++ b/test/builtins/gen/exp2/1f8680.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp2_1f8680() {
   vec3 res = exp2(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp2_1f8680() {
   vec3 res = exp2(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/exp2/a9d0a7.wgsl.expected.glsl b/test/builtins/gen/exp2/a9d0a7.wgsl.expected.glsl
index 52ec604..57e1e9a 100644
--- a/test/builtins/gen/exp2/a9d0a7.wgsl.expected.glsl
+++ b/test/builtins/gen/exp2/a9d0a7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp2_a9d0a7() {
   vec4 res = exp2(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp2_a9d0a7() {
   vec4 res = exp2(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/exp2/d6777c.wgsl.expected.glsl b/test/builtins/gen/exp2/d6777c.wgsl.expected.glsl
index f6f2d25..fb9da03 100644
--- a/test/builtins/gen/exp2/d6777c.wgsl.expected.glsl
+++ b/test/builtins/gen/exp2/d6777c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp2_d6777c() {
   vec2 res = exp2(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp2_d6777c() {
   vec2 res = exp2(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/exp2/dea523.wgsl.expected.glsl b/test/builtins/gen/exp2/dea523.wgsl.expected.glsl
index 5b667d2..21705b6 100644
--- a/test/builtins/gen/exp2/dea523.wgsl.expected.glsl
+++ b/test/builtins/gen/exp2/dea523.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void exp2_dea523() {
   float res = exp2(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void exp2_dea523() {
   float res = exp2(1.0f);
diff --git a/test/builtins/gen/faceForward/5afbd5.wgsl.expected.glsl b/test/builtins/gen/faceForward/5afbd5.wgsl.expected.glsl
index 2e59bb7..6cd6704 100644
--- a/test/builtins/gen/faceForward/5afbd5.wgsl.expected.glsl
+++ b/test/builtins/gen/faceForward/5afbd5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void faceForward_5afbd5() {
   vec3 res = faceforward(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void faceForward_5afbd5() {
   vec3 res = faceforward(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/faceForward/b316e5.wgsl.expected.glsl b/test/builtins/gen/faceForward/b316e5.wgsl.expected.glsl
index 412620d..9839b50 100644
--- a/test/builtins/gen/faceForward/b316e5.wgsl.expected.glsl
+++ b/test/builtins/gen/faceForward/b316e5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void faceForward_b316e5() {
   vec4 res = faceforward(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void faceForward_b316e5() {
   vec4 res = faceforward(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/faceForward/e6908b.wgsl.expected.glsl b/test/builtins/gen/faceForward/e6908b.wgsl.expected.glsl
index bb60c46..513dc58 100644
--- a/test/builtins/gen/faceForward/e6908b.wgsl.expected.glsl
+++ b/test/builtins/gen/faceForward/e6908b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void faceForward_e6908b() {
   vec2 res = faceforward(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void faceForward_e6908b() {
   vec2 res = faceforward(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/floor/3bccc4.wgsl.expected.glsl b/test/builtins/gen/floor/3bccc4.wgsl.expected.glsl
index e13ffb3..21a9a88 100644
--- a/test/builtins/gen/floor/3bccc4.wgsl.expected.glsl
+++ b/test/builtins/gen/floor/3bccc4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void floor_3bccc4() {
   vec4 res = floor(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void floor_3bccc4() {
   vec4 res = floor(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/floor/5fc9ac.wgsl.expected.glsl b/test/builtins/gen/floor/5fc9ac.wgsl.expected.glsl
index 2bdf291..19b75e2 100644
--- a/test/builtins/gen/floor/5fc9ac.wgsl.expected.glsl
+++ b/test/builtins/gen/floor/5fc9ac.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void floor_5fc9ac() {
   vec2 res = floor(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void floor_5fc9ac() {
   vec2 res = floor(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/floor/60d7ea.wgsl.expected.glsl b/test/builtins/gen/floor/60d7ea.wgsl.expected.glsl
index 2261630..d13f72e 100644
--- a/test/builtins/gen/floor/60d7ea.wgsl.expected.glsl
+++ b/test/builtins/gen/floor/60d7ea.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void floor_60d7ea() {
   vec3 res = floor(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void floor_60d7ea() {
   vec3 res = floor(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/floor/66f154.wgsl.expected.glsl b/test/builtins/gen/floor/66f154.wgsl.expected.glsl
index bbc4dc1..a575161 100644
--- a/test/builtins/gen/floor/66f154.wgsl.expected.glsl
+++ b/test/builtins/gen/floor/66f154.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void floor_66f154() {
   float res = floor(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void floor_66f154() {
   float res = floor(1.0f);
diff --git a/test/builtins/gen/fma/26a7a9.wgsl.expected.glsl b/test/builtins/gen/fma/26a7a9.wgsl.expected.glsl
index 99f7db0..c8caa57 100644
--- a/test/builtins/gen/fma/26a7a9.wgsl.expected.glsl
+++ b/test/builtins/gen/fma/26a7a9.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fma_26a7a9() {
   vec2 res = mad(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fma_26a7a9() {
   vec2 res = mad(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fma/6a3283.wgsl.expected.glsl b/test/builtins/gen/fma/6a3283.wgsl.expected.glsl
index 3d1103f..c0e8480 100644
--- a/test/builtins/gen/fma/6a3283.wgsl.expected.glsl
+++ b/test/builtins/gen/fma/6a3283.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fma_6a3283() {
   vec4 res = mad(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fma_6a3283() {
   vec4 res = mad(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fma/c10ba3.wgsl.expected.glsl b/test/builtins/gen/fma/c10ba3.wgsl.expected.glsl
index cb9db2d..c97533c 100644
--- a/test/builtins/gen/fma/c10ba3.wgsl.expected.glsl
+++ b/test/builtins/gen/fma/c10ba3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fma_c10ba3() {
   float res = mad(1.0f, 1.0f, 1.0f);
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fma_c10ba3() {
   float res = mad(1.0f, 1.0f, 1.0f);
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fma/e17c5c.wgsl.expected.glsl b/test/builtins/gen/fma/e17c5c.wgsl.expected.glsl
index cfe2ccd..ab68403 100644
--- a/test/builtins/gen/fma/e17c5c.wgsl.expected.glsl
+++ b/test/builtins/gen/fma/e17c5c.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fma_e17c5c() {
   vec3 res = mad(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fma_e17c5c() {
   vec3 res = mad(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'mad' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'mad' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fract/8bc1e9.wgsl.expected.glsl b/test/builtins/gen/fract/8bc1e9.wgsl.expected.glsl
index fc0b2aa..2d5f17d 100644
--- a/test/builtins/gen/fract/8bc1e9.wgsl.expected.glsl
+++ b/test/builtins/gen/fract/8bc1e9.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fract_8bc1e9() {
   vec4 res = frac(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fract_8bc1e9() {
   vec4 res = frac(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fract/943cb1.wgsl.expected.glsl b/test/builtins/gen/fract/943cb1.wgsl.expected.glsl
index 0e98131..7b55b0c 100644
--- a/test/builtins/gen/fract/943cb1.wgsl.expected.glsl
+++ b/test/builtins/gen/fract/943cb1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fract_943cb1() {
   vec2 res = frac(vec2(0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fract_943cb1() {
   vec2 res = frac(vec2(0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fract/a49758.wgsl.expected.glsl b/test/builtins/gen/fract/a49758.wgsl.expected.glsl
index b69fb8f..29e64b8 100644
--- a/test/builtins/gen/fract/a49758.wgsl.expected.glsl
+++ b/test/builtins/gen/fract/a49758.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fract_a49758() {
   vec3 res = frac(vec3(0.0f, 0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fract_a49758() {
   vec3 res = frac(vec3(0.0f, 0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/fract/fa5c71.wgsl.expected.glsl b/test/builtins/gen/fract/fa5c71.wgsl.expected.glsl
index 7811e56..36c061c 100644
--- a/test/builtins/gen/fract/fa5c71.wgsl.expected.glsl
+++ b/test/builtins/gen/fract/fa5c71.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void fract_fa5c71() {
   float res = frac(1.0f);
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void fract_fa5c71() {
   float res = frac(1.0f);
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'frac' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'frac' : no matching overloaded function found 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/frexp/368997.wgsl.expected.glsl b/test/builtins/gen/frexp/368997.wgsl.expected.glsl
index 47ed17d..93b9879 100644
--- a/test/builtins/gen/frexp/368997.wgsl.expected.glsl
+++ b/test/builtins/gen/frexp/368997.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result_vec3 {
   vec3 sig;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float3' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float3' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result_vec3 {
   vec3 sig;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float3' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float3' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/frexp/3c4f48.wgsl.expected.glsl b/test/builtins/gen/frexp/3c4f48.wgsl.expected.glsl
index aa6d873..d17806d 100644
--- a/test/builtins/gen/frexp/3c4f48.wgsl.expected.glsl
+++ b/test/builtins/gen/frexp/3c4f48.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result_vec4 {
   vec4 sig;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float4' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float4' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result_vec4 {
   vec4 sig;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float4' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float4' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/frexp/4bdfc7.wgsl.expected.glsl b/test/builtins/gen/frexp/4bdfc7.wgsl.expected.glsl
index 05a976e..f336b48 100644
--- a/test/builtins/gen/frexp/4bdfc7.wgsl.expected.glsl
+++ b/test/builtins/gen/frexp/4bdfc7.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result_vec2 {
   vec2 sig;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float2' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float2' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result_vec2 {
   vec2 sig;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float2' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float2' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/frexp/eabd40.wgsl.expected.glsl b/test/builtins/gen/frexp/eabd40.wgsl.expected.glsl
index 0efc2db..e5f44f6 100644
--- a/test/builtins/gen/frexp/eabd40.wgsl.expected.glsl
+++ b/test/builtins/gen/frexp/eabd40.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result {
   float sig;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found 
-ERROR: 0:11: '' : compilation terminated 
+ERROR: 0:10: 'frexp' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct frexp_result {
   float sig;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:11: 'frexp' : no matching overloaded function found 
-ERROR: 0:11: '' : compilation terminated 
+ERROR: 0:10: 'frexp' : no matching overloaded function found 
+ERROR: 0:10: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl b/test/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl
index a06ac8a..715b0c6 100644
--- a/test/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl
+++ b/test/builtins/gen/inverseSqrt/84407e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_84407e() {
   float res = rsqrt(1.0f);
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_84407e() {
   float res = rsqrt(1.0f);
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl b/test/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl
index a192269..19105a8 100644
--- a/test/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl
+++ b/test/builtins/gen/inverseSqrt/8f2bd2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_8f2bd2() {
   vec2 res = rsqrt(vec2(0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_8f2bd2() {
   vec2 res = rsqrt(vec2(0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl b/test/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl
index e5e100e..6c04051 100644
--- a/test/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl
+++ b/test/builtins/gen/inverseSqrt/b197b1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_b197b1() {
   vec3 res = rsqrt(vec3(0.0f, 0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_b197b1() {
   vec3 res = rsqrt(vec3(0.0f, 0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl b/test/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl
index 109f222..8248943 100644
--- a/test/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl
+++ b/test/builtins/gen/inverseSqrt/c22347.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_c22347() {
   vec4 res = rsqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void inverseSqrt_c22347() {
   vec4 res = rsqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isFinite/34d32b.wgsl.expected.glsl b/test/builtins/gen/isFinite/34d32b.wgsl.expected.glsl
index 28d6f70..68b02e8 100644
--- a/test/builtins/gen/isFinite/34d32b.wgsl.expected.glsl
+++ b/test/builtins/gen/isFinite/34d32b.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isFinite_34d32b() {
   bvec2 res = isfinite(vec2(0.0f, 0.0f));
@@ -24,9 +23,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp 2-component vector of bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp 2-component vector of bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void isFinite_34d32b() {
   bvec2 res = isfinite(vec2(0.0f, 0.0f));
@@ -71,9 +69,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp 2-component vector of bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp 2-component vector of bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isFinite/426f9f.wgsl.expected.glsl b/test/builtins/gen/isFinite/426f9f.wgsl.expected.glsl
index e097925..057f0c1 100644
--- a/test/builtins/gen/isFinite/426f9f.wgsl.expected.glsl
+++ b/test/builtins/gen/isFinite/426f9f.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                   ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isFinite_426f9f() {
   bool res = isfinite(1.0f);
@@ -24,9 +23,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void isFinite_426f9f() {
   bool res = isfinite(1.0f);
@@ -71,9 +69,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isFinite/8a23ad.wgsl.expected.glsl b/test/builtins/gen/isFinite/8a23ad.wgsl.expected.glsl
index 2493776..fe60f01 100644
--- a/test/builtins/gen/isFinite/8a23ad.wgsl.expected.glsl
+++ b/test/builtins/gen/isFinite/8a23ad.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isFinite_8a23ad() {
   bvec3 res = isfinite(vec3(0.0f, 0.0f, 0.0f));
@@ -24,9 +23,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp 3-component vector of bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp 3-component vector of bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void isFinite_8a23ad() {
   bvec3 res = isfinite(vec3(0.0f, 0.0f, 0.0f));
@@ -71,9 +69,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp 3-component vector of bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp 3-component vector of bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isFinite/f31987.wgsl.expected.glsl b/test/builtins/gen/isFinite/f31987.wgsl.expected.glsl
index 445fb96..e001b01 100644
--- a/test/builtins/gen/isFinite/f31987.wgsl.expected.glsl
+++ b/test/builtins/gen/isFinite/f31987.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isFinite_f31987() {
   bvec4 res = isfinite(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -24,9 +23,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp 4-component vector of bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp 4-component vector of bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void isFinite_f31987() {
   bvec4 res = isfinite(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -71,9 +69,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'isfinite' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp 4-component vector of bool'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'isfinite' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp 4-component vector of bool'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isInf/666f2a.wgsl.expected.glsl b/test/builtins/gen/isInf/666f2a.wgsl.expected.glsl
index e0830f8..04e24af 100644
--- a/test/builtins/gen/isInf/666f2a.wgsl.expected.glsl
+++ b/test/builtins/gen/isInf/666f2a.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                         ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isInf_666f2a() {
   bvec3 res = isinf(vec3(0.0f, 0.0f, 0.0f));
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isInf_666f2a() {
   bvec3 res = isinf(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/isInf/7bd98f.wgsl.expected.glsl b/test/builtins/gen/isInf/7bd98f.wgsl.expected.glsl
index 09b1082..a62e073 100644
--- a/test/builtins/gen/isInf/7bd98f.wgsl.expected.glsl
+++ b/test/builtins/gen/isInf/7bd98f.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                   ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isInf_7bd98f() {
   bool res = isinf(1.0f);
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isInf_7bd98f() {
   bool res = isinf(1.0f);
diff --git a/test/builtins/gen/isInf/7e81b5.wgsl.expected.glsl b/test/builtins/gen/isInf/7e81b5.wgsl.expected.glsl
index b2e3c87..69b56a7 100644
--- a/test/builtins/gen/isInf/7e81b5.wgsl.expected.glsl
+++ b/test/builtins/gen/isInf/7e81b5.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                         ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isInf_7e81b5() {
   bvec4 res = isinf(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isInf_7e81b5() {
   bvec4 res = isinf(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/isInf/a46d6f.wgsl.expected.glsl b/test/builtins/gen/isInf/a46d6f.wgsl.expected.glsl
index d106427..5a9b1bd 100644
--- a/test/builtins/gen/isInf/a46d6f.wgsl.expected.glsl
+++ b/test/builtins/gen/isInf/a46d6f.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                         ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isInf_a46d6f() {
   bvec2 res = isinf(vec2(0.0f, 0.0f));
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isInf_a46d6f() {
   bvec2 res = isinf(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/isNan/1280ab.wgsl.expected.glsl b/test/builtins/gen/isNan/1280ab.wgsl.expected.glsl
index 4336d68..36acf98 100644
--- a/test/builtins/gen/isNan/1280ab.wgsl.expected.glsl
+++ b/test/builtins/gen/isNan/1280ab.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                         ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isNan_1280ab() {
   bvec3 res = isnan(vec3(0.0f, 0.0f, 0.0f));
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isNan_1280ab() {
   bvec3 res = isnan(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/isNan/4d280d.wgsl.expected.glsl b/test/builtins/gen/isNan/4d280d.wgsl.expected.glsl
index ee19e9d..eeb1337 100644
--- a/test/builtins/gen/isNan/4d280d.wgsl.expected.glsl
+++ b/test/builtins/gen/isNan/4d280d.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                         ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isNan_4d280d() {
   bvec4 res = isnan(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isNan_4d280d() {
   bvec4 res = isnan(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/isNan/67ecd3.wgsl.expected.glsl b/test/builtins/gen/isNan/67ecd3.wgsl.expected.glsl
index d2b833b..f02018d 100644
--- a/test/builtins/gen/isNan/67ecd3.wgsl.expected.glsl
+++ b/test/builtins/gen/isNan/67ecd3.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                         ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isNan_67ecd3() {
   bvec2 res = isnan(vec2(0.0f, 0.0f));
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isNan_67ecd3() {
   bvec2 res = isnan(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/isNan/e4978e.wgsl.expected.glsl b/test/builtins/gen/isNan/e4978e.wgsl.expected.glsl
index a7f4ead..4d1bfb8 100644
--- a/test/builtins/gen/isNan/e4978e.wgsl.expected.glsl
+++ b/test/builtins/gen/isNan/e4978e.wgsl.expected.glsl
@@ -3,7 +3,6 @@
                   ^^^^^
 
 #version 310 es
-precision mediump float;
 
 void isNan_e4978e() {
   bool res = isnan(1.0f);
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void isNan_e4978e() {
   bool res = isnan(1.0f);
diff --git a/test/builtins/gen/isNormal/863dcd.wgsl.expected.glsl b/test/builtins/gen/isNormal/863dcd.wgsl.expected.glsl
index 4d7f3fe..43d272c 100644
--- a/test/builtins/gen/isNormal/863dcd.wgsl.expected.glsl
+++ b/test/builtins/gen/isNormal/863dcd.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 bvec4 tint_isNormal(vec4 param_0) {
   uint4 exponent = asuint(param_0) & 0x7f80000;
@@ -31,8 +30,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -67,7 +66,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 bvec4 tint_isNormal(vec4 param_0) {
   uint4 exponent = asuint(param_0) & 0x7f80000;
@@ -90,8 +88,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isNormal/b00ab1.wgsl.expected.glsl b/test/builtins/gen/isNormal/b00ab1.wgsl.expected.glsl
index 0084bec..1642490 100644
--- a/test/builtins/gen/isNormal/b00ab1.wgsl.expected.glsl
+++ b/test/builtins/gen/isNormal/b00ab1.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 bvec2 tint_isNormal(vec2 param_0) {
   uint2 exponent = asuint(param_0) & 0x7f80000;
@@ -31,8 +30,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -67,7 +66,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 bvec2 tint_isNormal(vec2 param_0) {
   uint2 exponent = asuint(param_0) & 0x7f80000;
@@ -90,8 +88,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isNormal/c286b7.wgsl.expected.glsl b/test/builtins/gen/isNormal/c286b7.wgsl.expected.glsl
index cf69d33..29e3684 100644
--- a/test/builtins/gen/isNormal/c286b7.wgsl.expected.glsl
+++ b/test/builtins/gen/isNormal/c286b7.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 bvec3 tint_isNormal(vec3 param_0) {
   uint3 exponent = asuint(param_0) & 0x7f80000;
@@ -31,8 +30,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint3' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint3' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -67,7 +66,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 bvec3 tint_isNormal(vec3 param_0) {
   uint3 exponent = asuint(param_0) & 0x7f80000;
@@ -90,8 +88,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint3' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint3' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/isNormal/c6e880.wgsl.expected.glsl b/test/builtins/gen/isNormal/c6e880.wgsl.expected.glsl
index 5974f96..34dc812 100644
--- a/test/builtins/gen/isNormal/c6e880.wgsl.expected.glsl
+++ b/test/builtins/gen/isNormal/c6e880.wgsl.expected.glsl
@@ -5,7 +5,6 @@
                   ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 bool tint_isNormal(float param_0) {
   uint exponent = asuint(param_0) & 0x7f80000;
@@ -31,9 +30,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'asuint' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'asuint' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -69,7 +68,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 bool tint_isNormal(float param_0) {
   uint exponent = asuint(param_0) & 0x7f80000;
@@ -92,9 +90,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'asuint' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'asuint' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/ldexp/a31cdc.wgsl.expected.glsl b/test/builtins/gen/ldexp/a31cdc.wgsl.expected.glsl
index f1a8f19..2f36476 100644
--- a/test/builtins/gen/ldexp/a31cdc.wgsl.expected.glsl
+++ b/test/builtins/gen/ldexp/a31cdc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ldexp_a31cdc() {
   vec3 res = ldexp(vec3(0.0f, 0.0f, 0.0f), ivec3(0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ldexp_a31cdc() {
   vec3 res = ldexp(vec3(0.0f, 0.0f, 0.0f), ivec3(0, 0, 0));
diff --git a/test/builtins/gen/ldexp/abd718.wgsl.expected.glsl b/test/builtins/gen/ldexp/abd718.wgsl.expected.glsl
index c72b266..08e3943 100644
--- a/test/builtins/gen/ldexp/abd718.wgsl.expected.glsl
+++ b/test/builtins/gen/ldexp/abd718.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ldexp_abd718() {
   vec2 res = ldexp(vec2(0.0f, 0.0f), ivec2(0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ldexp_abd718() {
   vec2 res = ldexp(vec2(0.0f, 0.0f), ivec2(0, 0));
diff --git a/test/builtins/gen/ldexp/cc9cde.wgsl.expected.glsl b/test/builtins/gen/ldexp/cc9cde.wgsl.expected.glsl
index 0b56095..cec49db 100644
--- a/test/builtins/gen/ldexp/cc9cde.wgsl.expected.glsl
+++ b/test/builtins/gen/ldexp/cc9cde.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ldexp_cc9cde() {
   vec4 res = ldexp(vec4(0.0f, 0.0f, 0.0f, 0.0f), ivec4(0, 0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ldexp_cc9cde() {
   vec4 res = ldexp(vec4(0.0f, 0.0f, 0.0f, 0.0f), ivec4(0, 0, 0, 0));
diff --git a/test/builtins/gen/ldexp/db8b49.wgsl.expected.glsl b/test/builtins/gen/ldexp/db8b49.wgsl.expected.glsl
index d29b019..6cee42f 100644
--- a/test/builtins/gen/ldexp/db8b49.wgsl.expected.glsl
+++ b/test/builtins/gen/ldexp/db8b49.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ldexp_db8b49() {
   float res = ldexp(1.0f, 1);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void ldexp_db8b49() {
   float res = ldexp(1.0f, 1);
diff --git a/test/builtins/gen/length/056071.wgsl.expected.glsl b/test/builtins/gen/length/056071.wgsl.expected.glsl
index 259f040..d2081a3 100644
--- a/test/builtins/gen/length/056071.wgsl.expected.glsl
+++ b/test/builtins/gen/length/056071.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void length_056071() {
   float res = length(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void length_056071() {
   float res = length(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/length/602a17.wgsl.expected.glsl b/test/builtins/gen/length/602a17.wgsl.expected.glsl
index 4a04172..3d7572e 100644
--- a/test/builtins/gen/length/602a17.wgsl.expected.glsl
+++ b/test/builtins/gen/length/602a17.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void length_602a17() {
   float res = length(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void length_602a17() {
   float res = length(1.0f);
diff --git a/test/builtins/gen/length/afde8b.wgsl.expected.glsl b/test/builtins/gen/length/afde8b.wgsl.expected.glsl
index e58341f..165ba8e 100644
--- a/test/builtins/gen/length/afde8b.wgsl.expected.glsl
+++ b/test/builtins/gen/length/afde8b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void length_afde8b() {
   float res = length(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void length_afde8b() {
   float res = length(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/length/becebf.wgsl.expected.glsl b/test/builtins/gen/length/becebf.wgsl.expected.glsl
index 3ec5f75..26aa9f6 100644
--- a/test/builtins/gen/length/becebf.wgsl.expected.glsl
+++ b/test/builtins/gen/length/becebf.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void length_becebf() {
   float res = length(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void length_becebf() {
   float res = length(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/log/3da25a.wgsl.expected.glsl b/test/builtins/gen/log/3da25a.wgsl.expected.glsl
index 1b40c41..d3496ad 100644
--- a/test/builtins/gen/log/3da25a.wgsl.expected.glsl
+++ b/test/builtins/gen/log/3da25a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log_3da25a() {
   vec4 res = log(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log_3da25a() {
   vec4 res = log(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/log/7114a6.wgsl.expected.glsl b/test/builtins/gen/log/7114a6.wgsl.expected.glsl
index 9b5e63e..deec7a6 100644
--- a/test/builtins/gen/log/7114a6.wgsl.expected.glsl
+++ b/test/builtins/gen/log/7114a6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log_7114a6() {
   float res = log(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log_7114a6() {
   float res = log(1.0f);
diff --git a/test/builtins/gen/log/b2ce28.wgsl.expected.glsl b/test/builtins/gen/log/b2ce28.wgsl.expected.glsl
index 46653ad..b3299a9 100644
--- a/test/builtins/gen/log/b2ce28.wgsl.expected.glsl
+++ b/test/builtins/gen/log/b2ce28.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log_b2ce28() {
   vec2 res = log(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log_b2ce28() {
   vec2 res = log(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/log/f4c570.wgsl.expected.glsl b/test/builtins/gen/log/f4c570.wgsl.expected.glsl
index 4986e79..76d8555 100644
--- a/test/builtins/gen/log/f4c570.wgsl.expected.glsl
+++ b/test/builtins/gen/log/f4c570.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log_f4c570() {
   vec3 res = log(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log_f4c570() {
   vec3 res = log(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/log2/4036ed.wgsl.expected.glsl b/test/builtins/gen/log2/4036ed.wgsl.expected.glsl
index ef4bb19..7bd50ce 100644
--- a/test/builtins/gen/log2/4036ed.wgsl.expected.glsl
+++ b/test/builtins/gen/log2/4036ed.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log2_4036ed() {
   float res = log2(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log2_4036ed() {
   float res = log2(1.0f);
diff --git a/test/builtins/gen/log2/902988.wgsl.expected.glsl b/test/builtins/gen/log2/902988.wgsl.expected.glsl
index a263dea..630b57e 100644
--- a/test/builtins/gen/log2/902988.wgsl.expected.glsl
+++ b/test/builtins/gen/log2/902988.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log2_902988() {
   vec4 res = log2(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log2_902988() {
   vec4 res = log2(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/log2/adb233.wgsl.expected.glsl b/test/builtins/gen/log2/adb233.wgsl.expected.glsl
index b79c82b..7f25fab 100644
--- a/test/builtins/gen/log2/adb233.wgsl.expected.glsl
+++ b/test/builtins/gen/log2/adb233.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log2_adb233() {
   vec3 res = log2(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log2_adb233() {
   vec3 res = log2(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/log2/aea659.wgsl.expected.glsl b/test/builtins/gen/log2/aea659.wgsl.expected.glsl
index c1161a7..49e732e 100644
--- a/test/builtins/gen/log2/aea659.wgsl.expected.glsl
+++ b/test/builtins/gen/log2/aea659.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void log2_aea659() {
   vec2 res = log2(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void log2_aea659() {
   vec2 res = log2(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/max/0c0aae.wgsl.expected.glsl b/test/builtins/gen/max/0c0aae.wgsl.expected.glsl
index c0f35091..4d4445d 100644
--- a/test/builtins/gen/max/0c0aae.wgsl.expected.glsl
+++ b/test/builtins/gen/max/0c0aae.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_0c0aae() {
   uint res = max(1u, 1u);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_0c0aae() {
   uint res = max(1u, 1u);
diff --git a/test/builtins/gen/max/25eafe.wgsl.expected.glsl b/test/builtins/gen/max/25eafe.wgsl.expected.glsl
index 03e055f..14d1d16 100644
--- a/test/builtins/gen/max/25eafe.wgsl.expected.glsl
+++ b/test/builtins/gen/max/25eafe.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_25eafe() {
   ivec3 res = max(ivec3(0, 0, 0), ivec3(0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_25eafe() {
   ivec3 res = max(ivec3(0, 0, 0), ivec3(0, 0, 0));
diff --git a/test/builtins/gen/max/320815.wgsl.expected.glsl b/test/builtins/gen/max/320815.wgsl.expected.glsl
index c849500..bb50c1e 100644
--- a/test/builtins/gen/max/320815.wgsl.expected.glsl
+++ b/test/builtins/gen/max/320815.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_320815() {
   uvec2 res = max(uvec2(0u, 0u), uvec2(0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_320815() {
   uvec2 res = max(uvec2(0u, 0u), uvec2(0u, 0u));
diff --git a/test/builtins/gen/max/44a39d.wgsl.expected.glsl b/test/builtins/gen/max/44a39d.wgsl.expected.glsl
index bf3a813..3ab47ee 100644
--- a/test/builtins/gen/max/44a39d.wgsl.expected.glsl
+++ b/test/builtins/gen/max/44a39d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_44a39d() {
   float res = max(1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_44a39d() {
   float res = max(1.0f, 1.0f);
diff --git a/test/builtins/gen/max/453e04.wgsl.expected.glsl b/test/builtins/gen/max/453e04.wgsl.expected.glsl
index a23013a..68553b1 100644
--- a/test/builtins/gen/max/453e04.wgsl.expected.glsl
+++ b/test/builtins/gen/max/453e04.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_453e04() {
   uvec4 res = max(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_453e04() {
   uvec4 res = max(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/builtins/gen/max/462050.wgsl.expected.glsl b/test/builtins/gen/max/462050.wgsl.expected.glsl
index 4242207..7f96940 100644
--- a/test/builtins/gen/max/462050.wgsl.expected.glsl
+++ b/test/builtins/gen/max/462050.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_462050() {
   vec2 res = max(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_462050() {
   vec2 res = max(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/max/4883ac.wgsl.expected.glsl b/test/builtins/gen/max/4883ac.wgsl.expected.glsl
index f82b20e..9fe4c9e 100644
--- a/test/builtins/gen/max/4883ac.wgsl.expected.glsl
+++ b/test/builtins/gen/max/4883ac.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_4883ac() {
   vec3 res = max(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_4883ac() {
   vec3 res = max(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/max/85e6bc.wgsl.expected.glsl b/test/builtins/gen/max/85e6bc.wgsl.expected.glsl
index cf6e036..f4f392c 100644
--- a/test/builtins/gen/max/85e6bc.wgsl.expected.glsl
+++ b/test/builtins/gen/max/85e6bc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_85e6bc() {
   ivec4 res = max(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_85e6bc() {
   ivec4 res = max(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/builtins/gen/max/a93419.wgsl.expected.glsl b/test/builtins/gen/max/a93419.wgsl.expected.glsl
index 5daddd7..fdb20ad 100644
--- a/test/builtins/gen/max/a93419.wgsl.expected.glsl
+++ b/test/builtins/gen/max/a93419.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_a93419() {
   vec4 res = max(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_a93419() {
   vec4 res = max(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/max/b1b73a.wgsl.expected.glsl b/test/builtins/gen/max/b1b73a.wgsl.expected.glsl
index f53eb96..157a422 100644
--- a/test/builtins/gen/max/b1b73a.wgsl.expected.glsl
+++ b/test/builtins/gen/max/b1b73a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_b1b73a() {
   uvec3 res = max(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_b1b73a() {
   uvec3 res = max(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u));
diff --git a/test/builtins/gen/max/ce7c30.wgsl.expected.glsl b/test/builtins/gen/max/ce7c30.wgsl.expected.glsl
index 470b30c..a17e0bc 100644
--- a/test/builtins/gen/max/ce7c30.wgsl.expected.glsl
+++ b/test/builtins/gen/max/ce7c30.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_ce7c30() {
   int res = max(1, 1);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_ce7c30() {
   int res = max(1, 1);
diff --git a/test/builtins/gen/max/e8192f.wgsl.expected.glsl b/test/builtins/gen/max/e8192f.wgsl.expected.glsl
index bf322b9..5a98868 100644
--- a/test/builtins/gen/max/e8192f.wgsl.expected.glsl
+++ b/test/builtins/gen/max/e8192f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void max_e8192f() {
   ivec2 res = max(ivec2(0, 0), ivec2(0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void max_e8192f() {
   ivec2 res = max(ivec2(0, 0), ivec2(0, 0));
diff --git a/test/builtins/gen/min/03c7e3.wgsl.expected.glsl b/test/builtins/gen/min/03c7e3.wgsl.expected.glsl
index e5d154f..6957c38 100644
--- a/test/builtins/gen/min/03c7e3.wgsl.expected.glsl
+++ b/test/builtins/gen/min/03c7e3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_03c7e3() {
   ivec2 res = min(ivec2(0, 0), ivec2(0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_03c7e3() {
   ivec2 res = min(ivec2(0, 0), ivec2(0, 0));
diff --git a/test/builtins/gen/min/0dc614.wgsl.expected.glsl b/test/builtins/gen/min/0dc614.wgsl.expected.glsl
index 0f8cb32..bf9f982 100644
--- a/test/builtins/gen/min/0dc614.wgsl.expected.glsl
+++ b/test/builtins/gen/min/0dc614.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_0dc614() {
   uvec4 res = min(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_0dc614() {
   uvec4 res = min(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u));
diff --git a/test/builtins/gen/min/3941e1.wgsl.expected.glsl b/test/builtins/gen/min/3941e1.wgsl.expected.glsl
index 9ada220..dc3a809 100644
--- a/test/builtins/gen/min/3941e1.wgsl.expected.glsl
+++ b/test/builtins/gen/min/3941e1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_3941e1() {
   ivec4 res = min(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_3941e1() {
   ivec4 res = min(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
diff --git a/test/builtins/gen/min/46c5d3.wgsl.expected.glsl b/test/builtins/gen/min/46c5d3.wgsl.expected.glsl
index fc70ab2..3e6980d 100644
--- a/test/builtins/gen/min/46c5d3.wgsl.expected.glsl
+++ b/test/builtins/gen/min/46c5d3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_46c5d3() {
   uint res = min(1u, 1u);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_46c5d3() {
   uint res = min(1u, 1u);
diff --git a/test/builtins/gen/min/82b28f.wgsl.expected.glsl b/test/builtins/gen/min/82b28f.wgsl.expected.glsl
index 79b76c1..443539d 100644
--- a/test/builtins/gen/min/82b28f.wgsl.expected.glsl
+++ b/test/builtins/gen/min/82b28f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_82b28f() {
   uvec2 res = min(uvec2(0u, 0u), uvec2(0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_82b28f() {
   uvec2 res = min(uvec2(0u, 0u), uvec2(0u, 0u));
diff --git a/test/builtins/gen/min/93cfc4.wgsl.expected.glsl b/test/builtins/gen/min/93cfc4.wgsl.expected.glsl
index f1b7daa..10a28da 100644
--- a/test/builtins/gen/min/93cfc4.wgsl.expected.glsl
+++ b/test/builtins/gen/min/93cfc4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_93cfc4() {
   vec3 res = min(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_93cfc4() {
   vec3 res = min(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/min/a45171.wgsl.expected.glsl b/test/builtins/gen/min/a45171.wgsl.expected.glsl
index ee3ce20..fa52fc4 100644
--- a/test/builtins/gen/min/a45171.wgsl.expected.glsl
+++ b/test/builtins/gen/min/a45171.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_a45171() {
   ivec3 res = min(ivec3(0, 0, 0), ivec3(0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_a45171() {
   ivec3 res = min(ivec3(0, 0, 0), ivec3(0, 0, 0));
diff --git a/test/builtins/gen/min/aa28ad.wgsl.expected.glsl b/test/builtins/gen/min/aa28ad.wgsl.expected.glsl
index 9833c79..4e89f3e 100644
--- a/test/builtins/gen/min/aa28ad.wgsl.expected.glsl
+++ b/test/builtins/gen/min/aa28ad.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_aa28ad() {
   vec2 res = min(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_aa28ad() {
   vec2 res = min(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/min/af326d.wgsl.expected.glsl b/test/builtins/gen/min/af326d.wgsl.expected.glsl
index aa066a9..d44ae03 100644
--- a/test/builtins/gen/min/af326d.wgsl.expected.glsl
+++ b/test/builtins/gen/min/af326d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_af326d() {
   float res = min(1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_af326d() {
   float res = min(1.0f, 1.0f);
diff --git a/test/builtins/gen/min/c70bb7.wgsl.expected.glsl b/test/builtins/gen/min/c70bb7.wgsl.expected.glsl
index 84a8276..8c3ef08 100644
--- a/test/builtins/gen/min/c70bb7.wgsl.expected.glsl
+++ b/test/builtins/gen/min/c70bb7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_c70bb7() {
   uvec3 res = min(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_c70bb7() {
   uvec3 res = min(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u));
diff --git a/test/builtins/gen/min/c73147.wgsl.expected.glsl b/test/builtins/gen/min/c73147.wgsl.expected.glsl
index dc5d0a0..eed7a64 100644
--- a/test/builtins/gen/min/c73147.wgsl.expected.glsl
+++ b/test/builtins/gen/min/c73147.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_c73147() {
   int res = min(1, 1);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_c73147() {
   int res = min(1, 1);
diff --git a/test/builtins/gen/min/c76fa6.wgsl.expected.glsl b/test/builtins/gen/min/c76fa6.wgsl.expected.glsl
index 5ac7d78..420193d 100644
--- a/test/builtins/gen/min/c76fa6.wgsl.expected.glsl
+++ b/test/builtins/gen/min/c76fa6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void min_c76fa6() {
   vec4 res = min(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void min_c76fa6() {
   vec4 res = min(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/mix/0c8c33.wgsl.expected.glsl b/test/builtins/gen/mix/0c8c33.wgsl.expected.glsl
index 9aa4a99..c3d0c30 100644
--- a/test/builtins/gen/mix/0c8c33.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/0c8c33.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_0c8c33() {
   vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_0c8c33() {
   vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/mix/1faeb1.wgsl.expected.glsl b/test/builtins/gen/mix/1faeb1.wgsl.expected.glsl
index 029fe15..7025293 100644
--- a/test/builtins/gen/mix/1faeb1.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/1faeb1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_1faeb1() {
   vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_1faeb1() {
   vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), 1.0f);
diff --git a/test/builtins/gen/mix/2fadab.wgsl.expected.glsl b/test/builtins/gen/mix/2fadab.wgsl.expected.glsl
index 99c8c80..6118a46 100644
--- a/test/builtins/gen/mix/2fadab.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/2fadab.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_2fadab() {
   vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_2fadab() {
   vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), 1.0f);
diff --git a/test/builtins/gen/mix/315264.wgsl.expected.glsl b/test/builtins/gen/mix/315264.wgsl.expected.glsl
index 1b17454..b04c989 100644
--- a/test/builtins/gen/mix/315264.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/315264.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_315264() {
   vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_315264() {
   vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), 1.0f);
diff --git a/test/builtins/gen/mix/4f0b5e.wgsl.expected.glsl b/test/builtins/gen/mix/4f0b5e.wgsl.expected.glsl
index 076f4dc..a398812 100644
--- a/test/builtins/gen/mix/4f0b5e.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/4f0b5e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_4f0b5e() {
   float res = mix(1.0f, 1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_4f0b5e() {
   float res = mix(1.0f, 1.0f, 1.0f);
diff --git a/test/builtins/gen/mix/6f8adc.wgsl.expected.glsl b/test/builtins/gen/mix/6f8adc.wgsl.expected.glsl
index b42cd3a..10fbb5b 100644
--- a/test/builtins/gen/mix/6f8adc.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/6f8adc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_6f8adc() {
   vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_6f8adc() {
   vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/mix/c37ede.wgsl.expected.glsl b/test/builtins/gen/mix/c37ede.wgsl.expected.glsl
index 9b42c94..6b46b25 100644
--- a/test/builtins/gen/mix/c37ede.wgsl.expected.glsl
+++ b/test/builtins/gen/mix/c37ede.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void mix_c37ede() {
   vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void mix_c37ede() {
   vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/modf/180fed.wgsl.expected.glsl b/test/builtins/gen/modf/180fed.wgsl.expected.glsl
index aa46a23..e99661d 100644
--- a/test/builtins/gen/modf/180fed.wgsl.expected.glsl
+++ b/test/builtins/gen/modf/180fed.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct modf_result {
   float fract;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:12: '{ } style initializers' : not supported with this profile: es
-ERROR: 0:12: '' : compilation terminated 
+ERROR: 0:11: '{ } style initializers' : not supported with this profile: es
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct modf_result {
   float fract;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:12: '{ } style initializers' : not supported with this profile: es
-ERROR: 0:12: '' : compilation terminated 
+ERROR: 0:11: '{ } style initializers' : not supported with this profile: es
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/modf/9b75f7.wgsl.expected.glsl b/test/builtins/gen/modf/9b75f7.wgsl.expected.glsl
index 236dd37..9280f97 100644
--- a/test/builtins/gen/modf/9b75f7.wgsl.expected.glsl
+++ b/test/builtins/gen/modf/9b75f7.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct modf_result_vec3 {
   vec3 fract;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float3' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float3' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct modf_result_vec3 {
   vec3 fract;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float3' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float3' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/modf/ec2dbc.wgsl.expected.glsl b/test/builtins/gen/modf/ec2dbc.wgsl.expected.glsl
index d4a28d0..eda1680 100644
--- a/test/builtins/gen/modf/ec2dbc.wgsl.expected.glsl
+++ b/test/builtins/gen/modf/ec2dbc.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct modf_result_vec4 {
   vec4 fract;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float4' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float4' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct modf_result_vec4 {
   vec4 fract;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float4' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float4' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/modf/f5f20d.wgsl.expected.glsl b/test/builtins/gen/modf/f5f20d.wgsl.expected.glsl
index 5911f45..0e7f161 100644
--- a/test/builtins/gen/modf/f5f20d.wgsl.expected.glsl
+++ b/test/builtins/gen/modf/f5f20d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct modf_result_vec2 {
   vec2 fract;
@@ -33,8 +32,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float2' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float2' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -75,7 +74,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 struct modf_result_vec2 {
   vec2 fract;
@@ -104,8 +102,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:10: 'float2' : undeclared identifier 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:9: 'float2' : undeclared identifier 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/normalize/64d8c0.wgsl.expected.glsl b/test/builtins/gen/normalize/64d8c0.wgsl.expected.glsl
index 80a6702..3077ff8 100644
--- a/test/builtins/gen/normalize/64d8c0.wgsl.expected.glsl
+++ b/test/builtins/gen/normalize/64d8c0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void normalize_64d8c0() {
   vec3 res = normalize(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void normalize_64d8c0() {
   vec3 res = normalize(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/normalize/9a0aab.wgsl.expected.glsl b/test/builtins/gen/normalize/9a0aab.wgsl.expected.glsl
index 4b415e0..75e0551 100644
--- a/test/builtins/gen/normalize/9a0aab.wgsl.expected.glsl
+++ b/test/builtins/gen/normalize/9a0aab.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void normalize_9a0aab() {
   vec4 res = normalize(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void normalize_9a0aab() {
   vec4 res = normalize(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/normalize/fc2ef1.wgsl.expected.glsl b/test/builtins/gen/normalize/fc2ef1.wgsl.expected.glsl
index 572d2b3..12813ab 100644
--- a/test/builtins/gen/normalize/fc2ef1.wgsl.expected.glsl
+++ b/test/builtins/gen/normalize/fc2ef1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void normalize_fc2ef1() {
   vec2 res = normalize(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void normalize_fc2ef1() {
   vec2 res = normalize(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/pack2x16float/0e97b3.wgsl.expected.glsl b/test/builtins/gen/pack2x16float/0e97b3.wgsl.expected.glsl
index e4afbe9..11af2ae 100644
--- a/test/builtins/gen/pack2x16float/0e97b3.wgsl.expected.glsl
+++ b/test/builtins/gen/pack2x16float/0e97b3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16float(vec2 param_0) {
   uint2 i = f32tof16(param_0);
@@ -26,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -61,7 +60,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16float(vec2 param_0) {
   uint2 i = f32tof16(param_0);
@@ -83,8 +81,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/pack2x16snorm/6c169b.wgsl.expected.glsl b/test/builtins/gen/pack2x16snorm/6c169b.wgsl.expected.glsl
index d96b685..e15e362 100644
--- a/test/builtins/gen/pack2x16snorm/6c169b.wgsl.expected.glsl
+++ b/test/builtins/gen/pack2x16snorm/6c169b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16snorm(vec2 param_0) {
   int2 i = int2(round(clamp(param_0, -1.0, 1.0) * 32767.0)) & 0xffff;
@@ -26,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'int2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'int2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -61,7 +60,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16snorm(vec2 param_0) {
   int2 i = int2(round(clamp(param_0, -1.0, 1.0) * 32767.0)) & 0xffff;
@@ -83,8 +81,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'int2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'int2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/pack2x16unorm/0f08e4.wgsl.expected.glsl b/test/builtins/gen/pack2x16unorm/0f08e4.wgsl.expected.glsl
index 0d07a9d..8f028de 100644
--- a/test/builtins/gen/pack2x16unorm/0f08e4.wgsl.expected.glsl
+++ b/test/builtins/gen/pack2x16unorm/0f08e4.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16unorm(vec2 param_0) {
   uint2 i = uint2(round(clamp(param_0, 0.0, 1.0) * 65535.0));
@@ -26,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -61,7 +60,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16unorm(vec2 param_0) {
   uint2 i = uint2(round(clamp(param_0, 0.0, 1.0) * 65535.0));
@@ -83,8 +81,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/pack4x8snorm/4d22e7.wgsl.expected.glsl b/test/builtins/gen/pack4x8snorm/4d22e7.wgsl.expected.glsl
index 45a85c9..680b2c6 100644
--- a/test/builtins/gen/pack4x8snorm/4d22e7.wgsl.expected.glsl
+++ b/test/builtins/gen/pack4x8snorm/4d22e7.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack4x8snorm(vec4 param_0) {
   int4 i = int4(round(clamp(param_0, -1.0, 1.0) * 127.0)) & 0xff;
@@ -26,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'int4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'int4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -61,7 +60,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack4x8snorm(vec4 param_0) {
   int4 i = int4(round(clamp(param_0, -1.0, 1.0) * 127.0)) & 0xff;
@@ -83,8 +81,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'int4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'int4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/pack4x8unorm/95c456.wgsl.expected.glsl b/test/builtins/gen/pack4x8unorm/95c456.wgsl.expected.glsl
index f624f5c..0cd9a8a 100644
--- a/test/builtins/gen/pack4x8unorm/95c456.wgsl.expected.glsl
+++ b/test/builtins/gen/pack4x8unorm/95c456.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack4x8unorm(vec4 param_0) {
   uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
@@ -26,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -61,7 +60,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack4x8unorm(vec4 param_0) {
   uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
@@ -83,8 +81,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/pow/04a908.wgsl.expected.glsl b/test/builtins/gen/pow/04a908.wgsl.expected.glsl
index 10dfe85..e0e9f31 100644
--- a/test/builtins/gen/pow/04a908.wgsl.expected.glsl
+++ b/test/builtins/gen/pow/04a908.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void pow_04a908() {
   vec4 res = pow(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void pow_04a908() {
   vec4 res = pow(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/pow/46e029.wgsl.expected.glsl b/test/builtins/gen/pow/46e029.wgsl.expected.glsl
index 9597554..cf440e4 100644
--- a/test/builtins/gen/pow/46e029.wgsl.expected.glsl
+++ b/test/builtins/gen/pow/46e029.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void pow_46e029() {
   float res = pow(1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void pow_46e029() {
   float res = pow(1.0f, 1.0f);
diff --git a/test/builtins/gen/pow/4a46c9.wgsl.expected.glsl b/test/builtins/gen/pow/4a46c9.wgsl.expected.glsl
index 78d361b..014164e 100644
--- a/test/builtins/gen/pow/4a46c9.wgsl.expected.glsl
+++ b/test/builtins/gen/pow/4a46c9.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void pow_4a46c9() {
   vec3 res = pow(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void pow_4a46c9() {
   vec3 res = pow(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/pow/e60ea5.wgsl.expected.glsl b/test/builtins/gen/pow/e60ea5.wgsl.expected.glsl
index d578be9..04d0a27 100644
--- a/test/builtins/gen/pow/e60ea5.wgsl.expected.glsl
+++ b/test/builtins/gen/pow/e60ea5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void pow_e60ea5() {
   vec2 res = pow(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void pow_e60ea5() {
   vec2 res = pow(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/radians/09b7fc.wgsl.expected.glsl b/test/builtins/gen/radians/09b7fc.wgsl.expected.glsl
index d2467bf..8cf9511 100644
--- a/test/builtins/gen/radians/09b7fc.wgsl.expected.glsl
+++ b/test/builtins/gen/radians/09b7fc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_radians(vec4 param_0) {
   return param_0 * 0.017453292519943295474;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec4 tint_radians(vec4 param_0) {
   return param_0 * 0.017453292519943295474;
diff --git a/test/builtins/gen/radians/61687a.wgsl.expected.glsl b/test/builtins/gen/radians/61687a.wgsl.expected.glsl
index 0894f0a..e3ecd21 100644
--- a/test/builtins/gen/radians/61687a.wgsl.expected.glsl
+++ b/test/builtins/gen/radians/61687a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec2 tint_radians(vec2 param_0) {
   return param_0 * 0.017453292519943295474;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec2 tint_radians(vec2 param_0) {
   return param_0 * 0.017453292519943295474;
diff --git a/test/builtins/gen/radians/6b0ff2.wgsl.expected.glsl b/test/builtins/gen/radians/6b0ff2.wgsl.expected.glsl
index a5b5bb6..34cf707 100644
--- a/test/builtins/gen/radians/6b0ff2.wgsl.expected.glsl
+++ b/test/builtins/gen/radians/6b0ff2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float tint_radians(float param_0) {
   return param_0 * 0.017453292519943295474;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 float tint_radians(float param_0) {
   return param_0 * 0.017453292519943295474;
diff --git a/test/builtins/gen/radians/f96258.wgsl.expected.glsl b/test/builtins/gen/radians/f96258.wgsl.expected.glsl
index 729c8b5..6eec3f0 100644
--- a/test/builtins/gen/radians/f96258.wgsl.expected.glsl
+++ b/test/builtins/gen/radians/f96258.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec3 tint_radians(vec3 param_0) {
   return param_0 * 0.017453292519943295474;
@@ -43,7 +42,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 vec3 tint_radians(vec3 param_0) {
   return param_0 * 0.017453292519943295474;
diff --git a/test/builtins/gen/reflect/05357e.wgsl.expected.glsl b/test/builtins/gen/reflect/05357e.wgsl.expected.glsl
index 14f04b1..363f38f 100644
--- a/test/builtins/gen/reflect/05357e.wgsl.expected.glsl
+++ b/test/builtins/gen/reflect/05357e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void reflect_05357e() {
   vec4 res = reflect(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void reflect_05357e() {
   vec4 res = reflect(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/reflect/b61e10.wgsl.expected.glsl b/test/builtins/gen/reflect/b61e10.wgsl.expected.glsl
index 8aa0402..a63a549 100644
--- a/test/builtins/gen/reflect/b61e10.wgsl.expected.glsl
+++ b/test/builtins/gen/reflect/b61e10.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void reflect_b61e10() {
   vec2 res = reflect(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void reflect_b61e10() {
   vec2 res = reflect(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/reflect/f47fdb.wgsl.expected.glsl b/test/builtins/gen/reflect/f47fdb.wgsl.expected.glsl
index 71cc9ec..23c4fef 100644
--- a/test/builtins/gen/reflect/f47fdb.wgsl.expected.glsl
+++ b/test/builtins/gen/reflect/f47fdb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void reflect_f47fdb() {
   vec3 res = reflect(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void reflect_f47fdb() {
   vec3 res = reflect(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/refract/7e02e6.wgsl.expected.glsl b/test/builtins/gen/refract/7e02e6.wgsl.expected.glsl
index 8e4be77..6f1f8b5 100644
--- a/test/builtins/gen/refract/7e02e6.wgsl.expected.glsl
+++ b/test/builtins/gen/refract/7e02e6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void refract_7e02e6() {
   vec4 res = refract(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void refract_7e02e6() {
   vec4 res = refract(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), 1.0f);
diff --git a/test/builtins/gen/refract/cbc1d2.wgsl.expected.glsl b/test/builtins/gen/refract/cbc1d2.wgsl.expected.glsl
index 37a29b5..53df9fe 100644
--- a/test/builtins/gen/refract/cbc1d2.wgsl.expected.glsl
+++ b/test/builtins/gen/refract/cbc1d2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void refract_cbc1d2() {
   vec3 res = refract(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void refract_cbc1d2() {
   vec3 res = refract(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), 1.0f);
diff --git a/test/builtins/gen/refract/cd905f.wgsl.expected.glsl b/test/builtins/gen/refract/cd905f.wgsl.expected.glsl
index 5742084..25223ff 100644
--- a/test/builtins/gen/refract/cd905f.wgsl.expected.glsl
+++ b/test/builtins/gen/refract/cd905f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void refract_cd905f() {
   vec2 res = refract(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void refract_cd905f() {
   vec2 res = refract(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), 1.0f);
diff --git a/test/builtins/gen/reverseBits/222177.wgsl.expected.glsl b/test/builtins/gen/reverseBits/222177.wgsl.expected.glsl
index 997a045..38d027f 100644
--- a/test/builtins/gen/reverseBits/222177.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/222177.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_222177() {
   ivec2 res = reversebits(ivec2(0, 0));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_222177() {
   ivec2 res = reversebits(ivec2(0, 0));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/35fea9.wgsl.expected.glsl b/test/builtins/gen/reverseBits/35fea9.wgsl.expected.glsl
index 1a6b1aa..dba2f0b 100644
--- a/test/builtins/gen/reverseBits/35fea9.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/35fea9.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_35fea9() {
   uvec4 res = reversebits(uvec4(0u, 0u, 0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_35fea9() {
   uvec4 res = reversebits(uvec4(0u, 0u, 0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/4dbd6f.wgsl.expected.glsl b/test/builtins/gen/reverseBits/4dbd6f.wgsl.expected.glsl
index 1bb351a..0bd7700 100644
--- a/test/builtins/gen/reverseBits/4dbd6f.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/4dbd6f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_4dbd6f() {
   ivec4 res = reversebits(ivec4(0, 0, 0, 0));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_4dbd6f() {
   ivec4 res = reversebits(ivec4(0, 0, 0, 0));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/7c4269.wgsl.expected.glsl b/test/builtins/gen/reverseBits/7c4269.wgsl.expected.glsl
index dc56224..be1c701 100644
--- a/test/builtins/gen/reverseBits/7c4269.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/7c4269.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_7c4269() {
   int res = reversebits(1);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_7c4269() {
   int res = reversebits(1);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/a6ccd4.wgsl.expected.glsl b/test/builtins/gen/reverseBits/a6ccd4.wgsl.expected.glsl
index 355b5fa..0458f71 100644
--- a/test/builtins/gen/reverseBits/a6ccd4.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/a6ccd4.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_a6ccd4() {
   uvec3 res = reversebits(uvec3(0u, 0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_a6ccd4() {
   uvec3 res = reversebits(uvec3(0u, 0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/c21bc1.wgsl.expected.glsl b/test/builtins/gen/reverseBits/c21bc1.wgsl.expected.glsl
index 2132f70..a595a34 100644
--- a/test/builtins/gen/reverseBits/c21bc1.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/c21bc1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_c21bc1() {
   ivec3 res = reversebits(ivec3(0, 0, 0));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_c21bc1() {
   ivec3 res = reversebits(ivec3(0, 0, 0));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/e1f4c1.wgsl.expected.glsl b/test/builtins/gen/reverseBits/e1f4c1.wgsl.expected.glsl
index 77c6c6a..b9e7aa6 100644
--- a/test/builtins/gen/reverseBits/e1f4c1.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/e1f4c1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_e1f4c1() {
   uvec2 res = reversebits(uvec2(0u, 0u));
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_e1f4c1() {
   uvec2 res = reversebits(uvec2(0u, 0u));
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/reverseBits/e31adf.wgsl.expected.glsl b/test/builtins/gen/reverseBits/e31adf.wgsl.expected.glsl
index a30d33d..9e0c292 100644
--- a/test/builtins/gen/reverseBits/e31adf.wgsl.expected.glsl
+++ b/test/builtins/gen/reverseBits/e31adf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_e31adf() {
   uint res = reversebits(1u);
@@ -20,9 +19,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void reverseBits_e31adf() {
   uint res = reversebits(1u);
@@ -67,9 +65,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'reversebits' : no matching overloaded function found 
-ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'reversebits' : no matching overloaded function found 
+ERROR: 0:4: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/round/106c0b.wgsl.expected.glsl b/test/builtins/gen/round/106c0b.wgsl.expected.glsl
index e970e88..af7bbae 100644
--- a/test/builtins/gen/round/106c0b.wgsl.expected.glsl
+++ b/test/builtins/gen/round/106c0b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void round_106c0b() {
   vec4 res = round(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void round_106c0b() {
   vec4 res = round(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/round/1c7897.wgsl.expected.glsl b/test/builtins/gen/round/1c7897.wgsl.expected.glsl
index c506bac..78ef1c7 100644
--- a/test/builtins/gen/round/1c7897.wgsl.expected.glsl
+++ b/test/builtins/gen/round/1c7897.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void round_1c7897() {
   vec3 res = round(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void round_1c7897() {
   vec3 res = round(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/round/52c84d.wgsl.expected.glsl b/test/builtins/gen/round/52c84d.wgsl.expected.glsl
index 94b648b..82254c0 100644
--- a/test/builtins/gen/round/52c84d.wgsl.expected.glsl
+++ b/test/builtins/gen/round/52c84d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void round_52c84d() {
   vec2 res = round(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void round_52c84d() {
   vec2 res = round(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/round/9edc38.wgsl.expected.glsl b/test/builtins/gen/round/9edc38.wgsl.expected.glsl
index e76ae77..ea0c194 100644
--- a/test/builtins/gen/round/9edc38.wgsl.expected.glsl
+++ b/test/builtins/gen/round/9edc38.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void round_9edc38() {
   float res = round(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void round_9edc38() {
   float res = round(1.0f);
diff --git a/test/builtins/gen/select/00b848.wgsl.expected.glsl b/test/builtins/gen/select/00b848.wgsl.expected.glsl
index 7b6954a..5e70f86 100644
--- a/test/builtins/gen/select/00b848.wgsl.expected.glsl
+++ b/test/builtins/gen/select/00b848.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_00b848() {
   ivec2 res = (bvec2(false, false) ? ivec2(0, 0) : ivec2(0, 0));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_00b848() {
   ivec2 res = (bvec2(false, false) ? ivec2(0, 0) : ivec2(0, 0));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/01e2cd.wgsl.expected.glsl b/test/builtins/gen/select/01e2cd.wgsl.expected.glsl
index 477c925..3fcc3c7 100644
--- a/test/builtins/gen/select/01e2cd.wgsl.expected.glsl
+++ b/test/builtins/gen/select/01e2cd.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_01e2cd() {
   ivec3 res = (bvec3(false, false, false) ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_01e2cd() {
   ivec3 res = (bvec3(false, false, false) ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/087ea4.wgsl.expected.glsl b/test/builtins/gen/select/087ea4.wgsl.expected.glsl
index 037a6a4..20a9426 100644
--- a/test/builtins/gen/select/087ea4.wgsl.expected.glsl
+++ b/test/builtins/gen/select/087ea4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_087ea4() {
   uvec4 res = (false ? uvec4(0u, 0u, 0u, 0u) : uvec4(0u, 0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_087ea4() {
   uvec4 res = (false ? uvec4(0u, 0u, 0u, 0u) : uvec4(0u, 0u, 0u, 0u));
diff --git a/test/builtins/gen/select/1e960b.wgsl.expected.glsl b/test/builtins/gen/select/1e960b.wgsl.expected.glsl
index 0a06c7e..3046b79 100644
--- a/test/builtins/gen/select/1e960b.wgsl.expected.glsl
+++ b/test/builtins/gen/select/1e960b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_1e960b() {
   uvec2 res = (bvec2(false, false) ? uvec2(0u, 0u) : uvec2(0u, 0u));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_1e960b() {
   uvec2 res = (bvec2(false, false) ? uvec2(0u, 0u) : uvec2(0u, 0u));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/266aff.wgsl.expected.glsl b/test/builtins/gen/select/266aff.wgsl.expected.glsl
index 06c7dea..92a2d9a 100644
--- a/test/builtins/gen/select/266aff.wgsl.expected.glsl
+++ b/test/builtins/gen/select/266aff.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_266aff() {
   vec2 res = (bvec2(false, false) ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_266aff() {
   vec2 res = (bvec2(false, false) ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/28a27e.wgsl.expected.glsl b/test/builtins/gen/select/28a27e.wgsl.expected.glsl
index 6ce8510..d9c1e4a 100644
--- a/test/builtins/gen/select/28a27e.wgsl.expected.glsl
+++ b/test/builtins/gen/select/28a27e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_28a27e() {
   uvec3 res = (bvec3(false, false, false) ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_28a27e() {
   uvec3 res = (bvec3(false, false, false) ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/3c25ce.wgsl.expected.glsl b/test/builtins/gen/select/3c25ce.wgsl.expected.glsl
index baca720..d2a0392 100644
--- a/test/builtins/gen/select/3c25ce.wgsl.expected.glsl
+++ b/test/builtins/gen/select/3c25ce.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_3c25ce() {
   bvec3 res = (false ? bvec3(false, false, false) : bvec3(false, false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_3c25ce() {
   bvec3 res = (false ? bvec3(false, false, false) : bvec3(false, false, false));
diff --git a/test/builtins/gen/select/416e14.wgsl.expected.glsl b/test/builtins/gen/select/416e14.wgsl.expected.glsl
index 303e09a..755ca28 100644
--- a/test/builtins/gen/select/416e14.wgsl.expected.glsl
+++ b/test/builtins/gen/select/416e14.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_416e14() {
   float res = (false ? 1.0f : 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_416e14() {
   float res = (false ? 1.0f : 1.0f);
diff --git a/test/builtins/gen/select/51b047.wgsl.expected.glsl b/test/builtins/gen/select/51b047.wgsl.expected.glsl
index 1f2f26e..95cf7c9 100644
--- a/test/builtins/gen/select/51b047.wgsl.expected.glsl
+++ b/test/builtins/gen/select/51b047.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_51b047() {
   uvec2 res = (false ? uvec2(0u, 0u) : uvec2(0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_51b047() {
   uvec2 res = (false ? uvec2(0u, 0u) : uvec2(0u, 0u));
diff --git a/test/builtins/gen/select/713567.wgsl.expected.glsl b/test/builtins/gen/select/713567.wgsl.expected.glsl
index fd2bfec..5e4019b 100644
--- a/test/builtins/gen/select/713567.wgsl.expected.glsl
+++ b/test/builtins/gen/select/713567.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_713567() {
   vec4 res = (false ? vec4(0.0f, 0.0f, 0.0f, 0.0f) : vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_713567() {
   vec4 res = (false ? vec4(0.0f, 0.0f, 0.0f, 0.0f) : vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/select/78be5f.wgsl.expected.glsl b/test/builtins/gen/select/78be5f.wgsl.expected.glsl
index ff2b925..417df8a 100644
--- a/test/builtins/gen/select/78be5f.wgsl.expected.glsl
+++ b/test/builtins/gen/select/78be5f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_78be5f() {
   vec3 res = (false ? vec3(0.0f, 0.0f, 0.0f) : vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_78be5f() {
   vec3 res = (false ? vec3(0.0f, 0.0f, 0.0f) : vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/select/80a9a9.wgsl.expected.glsl b/test/builtins/gen/select/80a9a9.wgsl.expected.glsl
index 2d43949..448ce6c 100644
--- a/test/builtins/gen/select/80a9a9.wgsl.expected.glsl
+++ b/test/builtins/gen/select/80a9a9.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_80a9a9() {
   bvec3 res = (bvec3(false, false, false) ? bvec3(false, false, false) : bvec3(false, false, false));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_80a9a9() {
   bvec3 res = (bvec3(false, false, false) ? bvec3(false, false, false) : bvec3(false, false, false));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/8fa62c.wgsl.expected.glsl b/test/builtins/gen/select/8fa62c.wgsl.expected.glsl
index 5914cdd..9a2fb83 100644
--- a/test/builtins/gen/select/8fa62c.wgsl.expected.glsl
+++ b/test/builtins/gen/select/8fa62c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_8fa62c() {
   ivec3 res = (false ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_8fa62c() {
   ivec3 res = (false ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
diff --git a/test/builtins/gen/select/99f883.wgsl.expected.glsl b/test/builtins/gen/select/99f883.wgsl.expected.glsl
index 7245819..d58e7ff 100644
--- a/test/builtins/gen/select/99f883.wgsl.expected.glsl
+++ b/test/builtins/gen/select/99f883.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_99f883() {
   uint res = (false ? 1u : 1u);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_99f883() {
   uint res = (false ? 1u : 1u);
diff --git a/test/builtins/gen/select/a2860e.wgsl.expected.glsl b/test/builtins/gen/select/a2860e.wgsl.expected.glsl
index 3ca06e2..82f1419 100644
--- a/test/builtins/gen/select/a2860e.wgsl.expected.glsl
+++ b/test/builtins/gen/select/a2860e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_a2860e() {
   ivec4 res = (bvec4(false, false, false, false) ? ivec4(0, 0, 0, 0) : ivec4(0, 0, 0, 0));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_a2860e() {
   ivec4 res = (bvec4(false, false, false, false) ? ivec4(0, 0, 0, 0) : ivec4(0, 0, 0, 0));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/ab069f.wgsl.expected.glsl b/test/builtins/gen/select/ab069f.wgsl.expected.glsl
index 9127716..408828a 100644
--- a/test/builtins/gen/select/ab069f.wgsl.expected.glsl
+++ b/test/builtins/gen/select/ab069f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_ab069f() {
   ivec4 res = (false ? ivec4(0, 0, 0, 0) : ivec4(0, 0, 0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_ab069f() {
   ivec4 res = (false ? ivec4(0, 0, 0, 0) : ivec4(0, 0, 0, 0));
diff --git a/test/builtins/gen/select/b04721.wgsl.expected.glsl b/test/builtins/gen/select/b04721.wgsl.expected.glsl
index a9e543e..6f73745 100644
--- a/test/builtins/gen/select/b04721.wgsl.expected.glsl
+++ b/test/builtins/gen/select/b04721.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_b04721() {
   uvec3 res = (false ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_b04721() {
   uvec3 res = (false ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
diff --git a/test/builtins/gen/select/bb447f.wgsl.expected.glsl b/test/builtins/gen/select/bb447f.wgsl.expected.glsl
index 0ba7a30..3664c32 100644
--- a/test/builtins/gen/select/bb447f.wgsl.expected.glsl
+++ b/test/builtins/gen/select/bb447f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_bb447f() {
   ivec2 res = (false ? ivec2(0, 0) : ivec2(0, 0));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_bb447f() {
   ivec2 res = (false ? ivec2(0, 0) : ivec2(0, 0));
diff --git a/test/builtins/gen/select/bb8aae.wgsl.expected.glsl b/test/builtins/gen/select/bb8aae.wgsl.expected.glsl
index 0e1a50e..45e3979 100644
--- a/test/builtins/gen/select/bb8aae.wgsl.expected.glsl
+++ b/test/builtins/gen/select/bb8aae.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_bb8aae() {
   vec4 res = (bvec4(false, false, false, false) ? vec4(0.0f, 0.0f, 0.0f, 0.0f) : vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_bb8aae() {
   vec4 res = (bvec4(false, false, false, false) ? vec4(0.0f, 0.0f, 0.0f, 0.0f) : vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/bf3d29.wgsl.expected.glsl b/test/builtins/gen/select/bf3d29.wgsl.expected.glsl
index 697a02c..635f611 100644
--- a/test/builtins/gen/select/bf3d29.wgsl.expected.glsl
+++ b/test/builtins/gen/select/bf3d29.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_bf3d29() {
   vec2 res = (false ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_bf3d29() {
   vec2 res = (false ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/select/c31f9e.wgsl.expected.glsl b/test/builtins/gen/select/c31f9e.wgsl.expected.glsl
index 20c38f7..e789132 100644
--- a/test/builtins/gen/select/c31f9e.wgsl.expected.glsl
+++ b/test/builtins/gen/select/c31f9e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_c31f9e() {
   bool res = (false ? false : false);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_c31f9e() {
   bool res = (false ? false : false);
diff --git a/test/builtins/gen/select/c41bd1.wgsl.expected.glsl b/test/builtins/gen/select/c41bd1.wgsl.expected.glsl
index 926bbaf..2ea34b2 100644
--- a/test/builtins/gen/select/c41bd1.wgsl.expected.glsl
+++ b/test/builtins/gen/select/c41bd1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_c41bd1() {
   bvec4 res = (false ? bvec4(false, false, false, false) : bvec4(false, false, false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_c41bd1() {
   bvec4 res = (false ? bvec4(false, false, false, false) : bvec4(false, false, false, false));
diff --git a/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl b/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl
index 4ee2ee9..76187f1 100644
--- a/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl
+++ b/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_c4a4ef() {
   uvec4 res = (bvec4(false, false, false, false) ? uvec4(0u, 0u, 0u, 0u) : uvec4(0u, 0u, 0u, 0u));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_c4a4ef() {
   uvec4 res = (bvec4(false, false, false, false) ? uvec4(0u, 0u, 0u, 0u) : uvec4(0u, 0u, 0u, 0u));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/cb9301.wgsl.expected.glsl b/test/builtins/gen/select/cb9301.wgsl.expected.glsl
index 87502ee..5792eed 100644
--- a/test/builtins/gen/select/cb9301.wgsl.expected.glsl
+++ b/test/builtins/gen/select/cb9301.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_cb9301() {
   bvec2 res = (bvec2(false, false) ? bvec2(false, false) : bvec2(false, false));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_cb9301() {
   bvec2 res = (bvec2(false, false) ? bvec2(false, false) : bvec2(false, false));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/e3e028.wgsl.expected.glsl b/test/builtins/gen/select/e3e028.wgsl.expected.glsl
index b8d0f12..372d40f 100644
--- a/test/builtins/gen/select/e3e028.wgsl.expected.glsl
+++ b/test/builtins/gen/select/e3e028.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_e3e028() {
   bvec4 res = (bvec4(false, false, false, false) ? bvec4(false, false, false, false) : bvec4(false, false, false, false));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_e3e028() {
   bvec4 res = (bvec4(false, false, false, false) ? bvec4(false, false, false, false) : bvec4(false, false, false, false));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/ebfea2.wgsl.expected.glsl b/test/builtins/gen/select/ebfea2.wgsl.expected.glsl
index 4f56425..e2174eb 100644
--- a/test/builtins/gen/select/ebfea2.wgsl.expected.glsl
+++ b/test/builtins/gen/select/ebfea2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void select_ebfea2() {
   vec3 res = (bvec3(false, false, false) ? vec3(0.0f, 0.0f, 0.0f) : vec3(0.0f, 0.0f, 0.0f));
@@ -20,8 +19,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -49,7 +48,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 void select_ebfea2() {
   vec3 res = (bvec3(false, false, false) ? vec3(0.0f, 0.0f, 0.0f) : vec3(0.0f, 0.0f, 0.0f));
@@ -65,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : boolean expression expected 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/select/ed8a15.wgsl.expected.glsl b/test/builtins/gen/select/ed8a15.wgsl.expected.glsl
index c974822..aeeed7a 100644
--- a/test/builtins/gen/select/ed8a15.wgsl.expected.glsl
+++ b/test/builtins/gen/select/ed8a15.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_ed8a15() {
   int res = (false ? 1 : 1);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_ed8a15() {
   int res = (false ? 1 : 1);
diff --git a/test/builtins/gen/select/fb7e53.wgsl.expected.glsl b/test/builtins/gen/select/fb7e53.wgsl.expected.glsl
index d3d31f8..f632b20 100644
--- a/test/builtins/gen/select/fb7e53.wgsl.expected.glsl
+++ b/test/builtins/gen/select/fb7e53.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void select_fb7e53() {
   bvec2 res = (false ? bvec2(false, false) : bvec2(false, false));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void select_fb7e53() {
   bvec2 res = (false ? bvec2(false, false) : bvec2(false, false));
diff --git a/test/builtins/gen/sign/159665.wgsl.expected.glsl b/test/builtins/gen/sign/159665.wgsl.expected.glsl
index 942f155..e912096 100644
--- a/test/builtins/gen/sign/159665.wgsl.expected.glsl
+++ b/test/builtins/gen/sign/159665.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sign_159665() {
   vec3 res = sign(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sign_159665() {
   vec3 res = sign(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/sign/b8f634.wgsl.expected.glsl b/test/builtins/gen/sign/b8f634.wgsl.expected.glsl
index 05137b1..41b9f79 100644
--- a/test/builtins/gen/sign/b8f634.wgsl.expected.glsl
+++ b/test/builtins/gen/sign/b8f634.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sign_b8f634() {
   vec4 res = sign(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sign_b8f634() {
   vec4 res = sign(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/sign/d065d8.wgsl.expected.glsl b/test/builtins/gen/sign/d065d8.wgsl.expected.glsl
index 8b415cb..873ebd9 100644
--- a/test/builtins/gen/sign/d065d8.wgsl.expected.glsl
+++ b/test/builtins/gen/sign/d065d8.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sign_d065d8() {
   vec2 res = sign(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sign_d065d8() {
   vec2 res = sign(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/sign/dd790e.wgsl.expected.glsl b/test/builtins/gen/sign/dd790e.wgsl.expected.glsl
index b880154..5230c82 100644
--- a/test/builtins/gen/sign/dd790e.wgsl.expected.glsl
+++ b/test/builtins/gen/sign/dd790e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sign_dd790e() {
   float res = sign(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sign_dd790e() {
   float res = sign(1.0f);
diff --git a/test/builtins/gen/sin/01f241.wgsl.expected.glsl b/test/builtins/gen/sin/01f241.wgsl.expected.glsl
index 9c7240d..73c2e8c 100644
--- a/test/builtins/gen/sin/01f241.wgsl.expected.glsl
+++ b/test/builtins/gen/sin/01f241.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sin_01f241() {
   vec3 res = sin(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sin_01f241() {
   vec3 res = sin(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/sin/4e3979.wgsl.expected.glsl b/test/builtins/gen/sin/4e3979.wgsl.expected.glsl
index 1e5d135..d52bc07 100644
--- a/test/builtins/gen/sin/4e3979.wgsl.expected.glsl
+++ b/test/builtins/gen/sin/4e3979.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sin_4e3979() {
   vec4 res = sin(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sin_4e3979() {
   vec4 res = sin(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/sin/b78c91.wgsl.expected.glsl b/test/builtins/gen/sin/b78c91.wgsl.expected.glsl
index de61dcf..fecb9a3 100644
--- a/test/builtins/gen/sin/b78c91.wgsl.expected.glsl
+++ b/test/builtins/gen/sin/b78c91.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sin_b78c91() {
   float res = sin(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sin_b78c91() {
   float res = sin(1.0f);
diff --git a/test/builtins/gen/sin/fc8bc4.wgsl.expected.glsl b/test/builtins/gen/sin/fc8bc4.wgsl.expected.glsl
index d475617..dc7ed53 100644
--- a/test/builtins/gen/sin/fc8bc4.wgsl.expected.glsl
+++ b/test/builtins/gen/sin/fc8bc4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sin_fc8bc4() {
   vec2 res = sin(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sin_fc8bc4() {
   vec2 res = sin(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/sinh/445e33.wgsl.expected.glsl b/test/builtins/gen/sinh/445e33.wgsl.expected.glsl
index c60e3ac..9e9ba0a 100644
--- a/test/builtins/gen/sinh/445e33.wgsl.expected.glsl
+++ b/test/builtins/gen/sinh/445e33.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sinh_445e33() {
   vec4 res = sinh(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sinh_445e33() {
   vec4 res = sinh(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/sinh/7bb598.wgsl.expected.glsl b/test/builtins/gen/sinh/7bb598.wgsl.expected.glsl
index 5f7835a..9eb7ed5 100644
--- a/test/builtins/gen/sinh/7bb598.wgsl.expected.glsl
+++ b/test/builtins/gen/sinh/7bb598.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sinh_7bb598() {
   float res = sinh(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sinh_7bb598() {
   float res = sinh(1.0f);
diff --git a/test/builtins/gen/sinh/b9860e.wgsl.expected.glsl b/test/builtins/gen/sinh/b9860e.wgsl.expected.glsl
index 1000a48..fc93b28 100644
--- a/test/builtins/gen/sinh/b9860e.wgsl.expected.glsl
+++ b/test/builtins/gen/sinh/b9860e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sinh_b9860e() {
   vec2 res = sinh(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sinh_b9860e() {
   vec2 res = sinh(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/sinh/c9a5eb.wgsl.expected.glsl b/test/builtins/gen/sinh/c9a5eb.wgsl.expected.glsl
index bec04b2..0b6a169 100644
--- a/test/builtins/gen/sinh/c9a5eb.wgsl.expected.glsl
+++ b/test/builtins/gen/sinh/c9a5eb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sinh_c9a5eb() {
   vec3 res = sinh(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sinh_c9a5eb() {
   vec3 res = sinh(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/smoothStep/5f615b.wgsl.expected.glsl b/test/builtins/gen/smoothStep/5f615b.wgsl.expected.glsl
index 0c40f90..c9222b8 100644
--- a/test/builtins/gen/smoothStep/5f615b.wgsl.expected.glsl
+++ b/test/builtins/gen/smoothStep/5f615b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void smoothStep_5f615b() {
   vec4 res = smoothstep(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void smoothStep_5f615b() {
   vec4 res = smoothstep(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/smoothStep/658be3.wgsl.expected.glsl b/test/builtins/gen/smoothStep/658be3.wgsl.expected.glsl
index e4f9bc9..8b7973c 100644
--- a/test/builtins/gen/smoothStep/658be3.wgsl.expected.glsl
+++ b/test/builtins/gen/smoothStep/658be3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void smoothStep_658be3() {
   vec3 res = smoothstep(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void smoothStep_658be3() {
   vec3 res = smoothstep(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/smoothStep/c11eef.wgsl.expected.glsl b/test/builtins/gen/smoothStep/c11eef.wgsl.expected.glsl
index f90da5a..a4840d7 100644
--- a/test/builtins/gen/smoothStep/c11eef.wgsl.expected.glsl
+++ b/test/builtins/gen/smoothStep/c11eef.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void smoothStep_c11eef() {
   vec2 res = smoothstep(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void smoothStep_c11eef() {
   vec2 res = smoothstep(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/smoothStep/cb0bfb.wgsl.expected.glsl b/test/builtins/gen/smoothStep/cb0bfb.wgsl.expected.glsl
index 999364b..c3a4818 100644
--- a/test/builtins/gen/smoothStep/cb0bfb.wgsl.expected.glsl
+++ b/test/builtins/gen/smoothStep/cb0bfb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void smoothStep_cb0bfb() {
   float res = smoothstep(1.0f, 1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void smoothStep_cb0bfb() {
   float res = smoothstep(1.0f, 1.0f, 1.0f);
diff --git a/test/builtins/gen/sqrt/20c74e.wgsl.expected.glsl b/test/builtins/gen/sqrt/20c74e.wgsl.expected.glsl
index f619350..964290d 100644
--- a/test/builtins/gen/sqrt/20c74e.wgsl.expected.glsl
+++ b/test/builtins/gen/sqrt/20c74e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sqrt_20c74e() {
   float res = sqrt(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sqrt_20c74e() {
   float res = sqrt(1.0f);
diff --git a/test/builtins/gen/sqrt/8c7024.wgsl.expected.glsl b/test/builtins/gen/sqrt/8c7024.wgsl.expected.glsl
index 2f4abe4..6b932bf 100644
--- a/test/builtins/gen/sqrt/8c7024.wgsl.expected.glsl
+++ b/test/builtins/gen/sqrt/8c7024.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sqrt_8c7024() {
   vec2 res = sqrt(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sqrt_8c7024() {
   vec2 res = sqrt(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/sqrt/aa0d7a.wgsl.expected.glsl b/test/builtins/gen/sqrt/aa0d7a.wgsl.expected.glsl
index 754492c..2052dfc 100644
--- a/test/builtins/gen/sqrt/aa0d7a.wgsl.expected.glsl
+++ b/test/builtins/gen/sqrt/aa0d7a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sqrt_aa0d7a() {
   vec4 res = sqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sqrt_aa0d7a() {
   vec4 res = sqrt(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/sqrt/f8c59a.wgsl.expected.glsl b/test/builtins/gen/sqrt/f8c59a.wgsl.expected.glsl
index efbb532..f7a7a3c 100644
--- a/test/builtins/gen/sqrt/f8c59a.wgsl.expected.glsl
+++ b/test/builtins/gen/sqrt/f8c59a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void sqrt_f8c59a() {
   vec3 res = sqrt(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void sqrt_f8c59a() {
   vec3 res = sqrt(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/step/0b073b.wgsl.expected.glsl b/test/builtins/gen/step/0b073b.wgsl.expected.glsl
index 563e500..0ad385f 100644
--- a/test/builtins/gen/step/0b073b.wgsl.expected.glsl
+++ b/test/builtins/gen/step/0b073b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void step_0b073b() {
   float res = step(1.0f, 1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void step_0b073b() {
   float res = step(1.0f, 1.0f);
diff --git a/test/builtins/gen/step/19accd.wgsl.expected.glsl b/test/builtins/gen/step/19accd.wgsl.expected.glsl
index d339cac..99ce626 100644
--- a/test/builtins/gen/step/19accd.wgsl.expected.glsl
+++ b/test/builtins/gen/step/19accd.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void step_19accd() {
   vec2 res = step(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void step_19accd() {
   vec2 res = step(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/step/334303.wgsl.expected.glsl b/test/builtins/gen/step/334303.wgsl.expected.glsl
index 786bc77..4eb968a 100644
--- a/test/builtins/gen/step/334303.wgsl.expected.glsl
+++ b/test/builtins/gen/step/334303.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void step_334303() {
   vec3 res = step(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void step_334303() {
   vec3 res = step(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/step/e2b337.wgsl.expected.glsl b/test/builtins/gen/step/e2b337.wgsl.expected.glsl
index 157208e..1716190 100644
--- a/test/builtins/gen/step/e2b337.wgsl.expected.glsl
+++ b/test/builtins/gen/step/e2b337.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void step_e2b337() {
   vec4 res = step(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void step_e2b337() {
   vec4 res = step(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/storageBarrier/d87211.wgsl.expected.glsl b/test/builtins/gen/storageBarrier/d87211.wgsl.expected.glsl
index a354c92..025e85c 100644
--- a/test/builtins/gen/storageBarrier/d87211.wgsl.expected.glsl
+++ b/test/builtins/gen/storageBarrier/d87211.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void storageBarrier_d87211() {
   { barrier(); memoryBarrierBuffer(); };
diff --git a/test/builtins/gen/tan/244e2a.wgsl.expected.glsl b/test/builtins/gen/tan/244e2a.wgsl.expected.glsl
index 0884a55..0351d57 100644
--- a/test/builtins/gen/tan/244e2a.wgsl.expected.glsl
+++ b/test/builtins/gen/tan/244e2a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tan_244e2a() {
   vec4 res = tan(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tan_244e2a() {
   vec4 res = tan(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/tan/2f030e.wgsl.expected.glsl b/test/builtins/gen/tan/2f030e.wgsl.expected.glsl
index 46246dc..7cb064d 100644
--- a/test/builtins/gen/tan/2f030e.wgsl.expected.glsl
+++ b/test/builtins/gen/tan/2f030e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tan_2f030e() {
   float res = tan(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tan_2f030e() {
   float res = tan(1.0f);
diff --git a/test/builtins/gen/tan/7ea104.wgsl.expected.glsl b/test/builtins/gen/tan/7ea104.wgsl.expected.glsl
index 4180b59..93614a6 100644
--- a/test/builtins/gen/tan/7ea104.wgsl.expected.glsl
+++ b/test/builtins/gen/tan/7ea104.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tan_7ea104() {
   vec3 res = tan(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tan_7ea104() {
   vec3 res = tan(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/tan/8ce3e9.wgsl.expected.glsl b/test/builtins/gen/tan/8ce3e9.wgsl.expected.glsl
index c5fda5d..830f1ff 100644
--- a/test/builtins/gen/tan/8ce3e9.wgsl.expected.glsl
+++ b/test/builtins/gen/tan/8ce3e9.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tan_8ce3e9() {
   vec2 res = tan(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tan_8ce3e9() {
   vec2 res = tan(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/tanh/5663c5.wgsl.expected.glsl b/test/builtins/gen/tanh/5663c5.wgsl.expected.glsl
index 827d00c..f3be98b 100644
--- a/test/builtins/gen/tanh/5663c5.wgsl.expected.glsl
+++ b/test/builtins/gen/tanh/5663c5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tanh_5663c5() {
   vec4 res = tanh(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tanh_5663c5() {
   vec4 res = tanh(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/tanh/5724b3.wgsl.expected.glsl b/test/builtins/gen/tanh/5724b3.wgsl.expected.glsl
index 81165d1..703f1f6 100644
--- a/test/builtins/gen/tanh/5724b3.wgsl.expected.glsl
+++ b/test/builtins/gen/tanh/5724b3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tanh_5724b3() {
   vec2 res = tanh(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tanh_5724b3() {
   vec2 res = tanh(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/tanh/9f9fb9.wgsl.expected.glsl b/test/builtins/gen/tanh/9f9fb9.wgsl.expected.glsl
index 81e516a..9ee2e81 100644
--- a/test/builtins/gen/tanh/9f9fb9.wgsl.expected.glsl
+++ b/test/builtins/gen/tanh/9f9fb9.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tanh_9f9fb9() {
   vec3 res = tanh(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tanh_9f9fb9() {
   vec3 res = tanh(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/tanh/c15fdb.wgsl.expected.glsl b/test/builtins/gen/tanh/c15fdb.wgsl.expected.glsl
index bbc7766..b6870b9 100644
--- a/test/builtins/gen/tanh/c15fdb.wgsl.expected.glsl
+++ b/test/builtins/gen/tanh/c15fdb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tanh_c15fdb() {
   float res = tanh(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void tanh_c15fdb() {
   float res = tanh(1.0f);
diff --git a/test/builtins/gen/textureDimensions/002b2a.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/002b2a.wgsl.expected.glsl
index 4918d10..c3bf448 100644
--- a/test/builtins/gen/textureDimensions/002b2a.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/002b2a.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureDimensions_002b2a() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureDimensions_002b2a() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/012b82.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/012b82.wgsl.expected.glsl
index b398f3c..40bc755 100644
--- a/test/builtins/gen/textureDimensions/012b82.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/012b82.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_012b82() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_012b82() {
diff --git a/test/builtins/gen/textureDimensions/08753d.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/08753d.wgsl.expected.glsl
index 4628b39..da47178 100644
--- a/test/builtins/gen/textureDimensions/08753d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/08753d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_08753d() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_08753d() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/0c4772.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/0c4772.wgsl.expected.glsl
index f6e58ee..0870be7 100644
--- a/test/builtins/gen/textureDimensions/0c4772.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/0c4772.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureDimensions_0c4772() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureDimensions_0c4772() {
diff --git a/test/builtins/gen/textureDimensions/0cce40.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/0cce40.wgsl.expected.glsl
index ccbf034..7a92020 100644
--- a/test/builtins/gen/textureDimensions/0cce40.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/0cce40.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_0cce40() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_0cce40() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/0cf2ff.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
index 3813a6f..92eb5b0 100644
--- a/test/builtins/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_0cf2ff() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_0cf2ff() {
diff --git a/test/builtins/gen/textureDimensions/0d8b7e.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
index d6996ef..d275e36 100644
--- a/test/builtins/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_0d8b7e() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_0d8b7e() {
diff --git a/test/builtins/gen/textureDimensions/0e32ee.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/0e32ee.wgsl.expected.glsl
index eea2fca..0f83215 100644
--- a/test/builtins/gen/textureDimensions/0e32ee.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/0e32ee.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_0e32ee() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_0e32ee() {
diff --git a/test/builtins/gen/textureDimensions/0f3c50.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/0f3c50.wgsl.expected.glsl
index c1f2ad3..d7fa180 100644
--- a/test/builtins/gen/textureDimensions/0f3c50.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/0f3c50.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureDimensions_0f3c50() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureDimensions_0f3c50() {
diff --git a/test/builtins/gen/textureDimensions/1191a5.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/1191a5.wgsl.expected.glsl
index 8c8905e..87fde35 100644
--- a/test/builtins/gen/textureDimensions/1191a5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/1191a5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureDimensions_1191a5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureDimensions_1191a5() {
diff --git a/test/builtins/gen/textureDimensions/12c9bb.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/12c9bb.wgsl.expected.glsl
index d6210f5..888760c 100644
--- a/test/builtins/gen/textureDimensions/12c9bb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/12c9bb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_12c9bb() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_12c9bb() {
diff --git a/test/builtins/gen/textureDimensions/147998.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/147998.wgsl.expected.glsl
index 0aea927..d992aaa 100644
--- a/test/builtins/gen/textureDimensions/147998.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/147998.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureDimensions_147998() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureDimensions_147998() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/16036c.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/16036c.wgsl.expected.glsl
index 1716996..5608122 100644
--- a/test/builtins/gen/textureDimensions/16036c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/16036c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_16036c() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_16036c() {
diff --git a/test/builtins/gen/textureDimensions/1b71f0.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/1b71f0.wgsl.expected.glsl
index 6dceec2..4695e9b 100644
--- a/test/builtins/gen/textureDimensions/1b71f0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/1b71f0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_1b71f0() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_1b71f0() {
diff --git a/test/builtins/gen/textureDimensions/1d6c26.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/1d6c26.wgsl.expected.glsl
index 527af3e..36f5469 100644
--- a/test/builtins/gen/textureDimensions/1d6c26.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/1d6c26.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_1d6c26() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_1d6c26() {
diff --git a/test/builtins/gen/textureDimensions/1e9e39.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/1e9e39.wgsl.expected.glsl
index 77d49fe..9cfe2a9 100644
--- a/test/builtins/gen/textureDimensions/1e9e39.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/1e9e39.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureDimensions_1e9e39() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureDimensions_1e9e39() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/1f20c5.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/1f20c5.wgsl.expected.glsl
index eeb52a6..42973c0 100644
--- a/test/builtins/gen/textureDimensions/1f20c5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/1f20c5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureDimensions_1f20c5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureDimensions_1f20c5() {
diff --git a/test/builtins/gen/textureDimensions/214dd4.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/214dd4.wgsl.expected.glsl
index 4af963c..896acdb 100644
--- a/test/builtins/gen/textureDimensions/214dd4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/214dd4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_214dd4() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_214dd4() {
diff --git a/test/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl
index a162070..e94b6af 100644
--- a/test/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/221f22.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureDimensions_221f22() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureDimensions_221f22() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/267788.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/267788.wgsl.expected.glsl
index e9b6be0..4bc3c79 100644
--- a/test/builtins/gen/textureDimensions/267788.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/267788.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureDimensions_267788() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureDimensions_267788() {
diff --git a/test/builtins/gen/textureDimensions/26bdfa.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/26bdfa.wgsl.expected.glsl
index 7eeda4f..7d93b4f 100644
--- a/test/builtins/gen/textureDimensions/26bdfa.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/26bdfa.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureDimensions_26bdfa() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureDimensions_26bdfa() {
diff --git a/test/builtins/gen/textureDimensions/26ef6c.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/26ef6c.wgsl.expected.glsl
index 0828683..64ddeef 100644
--- a/test/builtins/gen/textureDimensions/26ef6c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/26ef6c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_26ef6c() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_26ef6c() {
diff --git a/test/builtins/gen/textureDimensions/2ad087.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/2ad087.wgsl.expected.glsl
index cbc46bd..ff3c181 100644
--- a/test/builtins/gen/textureDimensions/2ad087.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/2ad087.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_2ad087() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_2ad087() {
diff --git a/test/builtins/gen/textureDimensions/2efa05.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/2efa05.wgsl.expected.glsl
index 304e2ba..e9a5c09 100644
--- a/test/builtins/gen/textureDimensions/2efa05.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/2efa05.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureDimensions_2efa05() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureDimensions_2efa05() {
diff --git a/test/builtins/gen/textureDimensions/2f289f.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/2f289f.wgsl.expected.glsl
index e495dd9..2809100 100644
--- a/test/builtins/gen/textureDimensions/2f289f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/2f289f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_2f289f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_2f289f() {
diff --git a/test/builtins/gen/textureDimensions/2fe1cc.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/2fe1cc.wgsl.expected.glsl
index 370e7c7..46aa25e 100644
--- a/test/builtins/gen/textureDimensions/2fe1cc.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/2fe1cc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_2fe1cc() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_2fe1cc() {
diff --git a/test/builtins/gen/textureDimensions/318ecc.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/318ecc.wgsl.expected.glsl
index 6359cdd..cdf66f6 100644
--- a/test/builtins/gen/textureDimensions/318ecc.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/318ecc.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_318ecc() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_318ecc() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/340d06.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/340d06.wgsl.expected.glsl
index 91ce129..8e80499 100644
--- a/test/builtins/gen/textureDimensions/340d06.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/340d06.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_340d06() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_340d06() {
diff --git a/test/builtins/gen/textureDimensions/398e30.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/398e30.wgsl.expected.glsl
index addff99..2f1317e 100644
--- a/test/builtins/gen/textureDimensions/398e30.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/398e30.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_398e30() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_398e30() {
diff --git a/test/builtins/gen/textureDimensions/3a94ea.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/3a94ea.wgsl.expected.glsl
index 2bfba6f..81aa7f7 100644
--- a/test/builtins/gen/textureDimensions/3a94ea.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/3a94ea.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_3a94ea() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_3a94ea() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/3aca08.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/3aca08.wgsl.expected.glsl
index 38c917b..491a78b 100644
--- a/test/builtins/gen/textureDimensions/3aca08.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/3aca08.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureDimensions_3aca08() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureDimensions_3aca08() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/3c5ad8.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
index f7625e2..20dfb90 100644
--- a/test/builtins/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_3c5ad8() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_3c5ad8() {
diff --git a/test/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl
index 3ac20e9..04f0869 100644
--- a/test/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/4152a6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureDimensions_4152a6() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureDimensions_4152a6() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/423f99.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/423f99.wgsl.expected.glsl
index 488c424..d56e673 100644
--- a/test/builtins/gen/textureDimensions/423f99.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/423f99.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureDimensions_423f99() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureDimensions_423f99() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/4267ee.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/4267ee.wgsl.expected.glsl
index 7f165e1..b9953ea 100644
--- a/test/builtins/gen/textureDimensions/4267ee.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/4267ee.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureDimensions_4267ee() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureDimensions_4267ee() {
diff --git a/test/builtins/gen/textureDimensions/42d4e6.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/42d4e6.wgsl.expected.glsl
index 6bf3733..583c1cd 100644
--- a/test/builtins/gen/textureDimensions/42d4e6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/42d4e6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureDimensions_42d4e6() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureDimensions_42d4e6() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/48cb89.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/48cb89.wgsl.expected.glsl
index f932637..d90261f 100644
--- a/test/builtins/gen/textureDimensions/48cb89.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/48cb89.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureDimensions_48cb89() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureDimensions_48cb89() {
diff --git a/test/builtins/gen/textureDimensions/49d274.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/49d274.wgsl.expected.glsl
index 03fe18e..970735c 100644
--- a/test/builtins/gen/textureDimensions/49d274.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/49d274.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_49d274() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_49d274() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/4df9a8.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/4df9a8.wgsl.expected.glsl
index 97aa248..0a0aab2 100644
--- a/test/builtins/gen/textureDimensions/4df9a8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/4df9a8.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_4df9a8() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_4df9a8() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl
index 851d16c..61d47e0 100644
--- a/test/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/50a9ee.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_50a9ee() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_50a9ee() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/52045c.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/52045c.wgsl.expected.glsl
index eab1224..a96a560 100644
--- a/test/builtins/gen/textureDimensions/52045c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/52045c.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureDimensions_52045c() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureDimensions_52045c() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/55b23e.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/55b23e.wgsl.expected.glsl
index ecd32f2..dca8ced 100644
--- a/test/builtins/gen/textureDimensions/55b23e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/55b23e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureDimensions_55b23e() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureDimensions_55b23e() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/579629.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/579629.wgsl.expected.glsl
index e36787d..da935e0 100644
--- a/test/builtins/gen/textureDimensions/579629.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/579629.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DMS arg_0_1;
 void textureDimensions_579629() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DMS arg_0_1;
 void textureDimensions_579629() {
diff --git a/test/builtins/gen/textureDimensions/57da0b.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/57da0b.wgsl.expected.glsl
index 4e2de72..9df17cc 100644
--- a/test/builtins/gen/textureDimensions/57da0b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/57da0b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_57da0b() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_57da0b() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/57e28f.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/57e28f.wgsl.expected.glsl
index 14c08b8..d42f45f 100644
--- a/test/builtins/gen/textureDimensions/57e28f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/57e28f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_57e28f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_57e28f() {
diff --git a/test/builtins/gen/textureDimensions/58a515.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/58a515.wgsl.expected.glsl
index dfecef3..9e32de1 100644
--- a/test/builtins/gen/textureDimensions/58a515.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/58a515.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_58a515() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_58a515() {
diff --git a/test/builtins/gen/textureDimensions/5985f3.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/5985f3.wgsl.expected.glsl
index 3e91791..6554923 100644
--- a/test/builtins/gen/textureDimensions/5985f3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/5985f3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_5985f3() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_5985f3() {
diff --git a/test/builtins/gen/textureDimensions/5caa5e.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/5caa5e.wgsl.expected.glsl
index ee641ed..eb4f4bb 100644
--- a/test/builtins/gen/textureDimensions/5caa5e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/5caa5e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_5caa5e() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_5caa5e() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/5e295d.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/5e295d.wgsl.expected.glsl
index de8d76a..59d9d05 100644
--- a/test/builtins/gen/textureDimensions/5e295d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/5e295d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_5e295d() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_5e295d() {
diff --git a/test/builtins/gen/textureDimensions/60bf54.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/60bf54.wgsl.expected.glsl
index bc6c73c..100cef4 100644
--- a/test/builtins/gen/textureDimensions/60bf54.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/60bf54.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_60bf54() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_60bf54() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/63f3cf.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/63f3cf.wgsl.expected.glsl
index 0df2672..a98b78b 100644
--- a/test/builtins/gen/textureDimensions/63f3cf.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/63f3cf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureDimensions_63f3cf() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureDimensions_63f3cf() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/68105c.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/68105c.wgsl.expected.glsl
index 7c4a029..cb5bae6 100644
--- a/test/builtins/gen/textureDimensions/68105c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/68105c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_68105c() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_68105c() {
diff --git a/test/builtins/gen/textureDimensions/686ef2.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/686ef2.wgsl.expected.glsl
index 37a1df0..920d87d 100644
--- a/test/builtins/gen/textureDimensions/686ef2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/686ef2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_0_1;
 void textureDimensions_686ef2() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_0_1;
 void textureDimensions_686ef2() {
diff --git a/test/builtins/gen/textureDimensions/6adac6.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/6adac6.wgsl.expected.glsl
index 7504f68..3041b4c 100644
--- a/test/builtins/gen/textureDimensions/6adac6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/6adac6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_6adac6() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_6adac6() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/6ec1b4.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/6ec1b4.wgsl.expected.glsl
index 59ad4a5..a9bfcae 100644
--- a/test/builtins/gen/textureDimensions/6ec1b4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/6ec1b4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureDimensions_6ec1b4() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureDimensions_6ec1b4() {
diff --git a/test/builtins/gen/textureDimensions/6f0d79.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/6f0d79.wgsl.expected.glsl
index 8df1622..8becf34 100644
--- a/test/builtins/gen/textureDimensions/6f0d79.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/6f0d79.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_6f0d79() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_6f0d79() {
diff --git a/test/builtins/gen/textureDimensions/702c53.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/702c53.wgsl.expected.glsl
index e7ab534..43f8f54 100644
--- a/test/builtins/gen/textureDimensions/702c53.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/702c53.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureDimensions_702c53() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureDimensions_702c53() {
diff --git a/test/builtins/gen/textureDimensions/72e5d6.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/72e5d6.wgsl.expected.glsl
index 8831c41..8726204 100644
--- a/test/builtins/gen/textureDimensions/72e5d6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/72e5d6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_72e5d6() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_72e5d6() {
diff --git a/test/builtins/gen/textureDimensions/79df87.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/79df87.wgsl.expected.glsl
index b14a095..2a81bb5 100644
--- a/test/builtins/gen/textureDimensions/79df87.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/79df87.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureDimensions_79df87() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureDimensions_79df87() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/7bf826.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/7bf826.wgsl.expected.glsl
index 7e1e045..ce7e89d 100644
--- a/test/builtins/gen/textureDimensions/7bf826.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/7bf826.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_7bf826() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_7bf826() {
diff --git a/test/builtins/gen/textureDimensions/7f5c2e.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
index 275c93f..b7146d2 100644
--- a/test/builtins/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_7f5c2e() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_7f5c2e() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/8028f3.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/8028f3.wgsl.expected.glsl
index b87a01a..d24ac68 100644
--- a/test/builtins/gen/textureDimensions/8028f3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/8028f3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureDimensions_8028f3() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureDimensions_8028f3() {
diff --git a/test/builtins/gen/textureDimensions/811679.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/811679.wgsl.expected.glsl
index ac8f777..e8d1825 100644
--- a/test/builtins/gen/textureDimensions/811679.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/811679.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_811679() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_811679() {
diff --git a/test/builtins/gen/textureDimensions/820596.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/820596.wgsl.expected.glsl
index 03125d5..a2e9a72 100644
--- a/test/builtins/gen/textureDimensions/820596.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/820596.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_820596() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_820596() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/83ee5a.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/83ee5a.wgsl.expected.glsl
index 57dc03a..9e9ea30 100644
--- a/test/builtins/gen/textureDimensions/83ee5a.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/83ee5a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_83ee5a() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_83ee5a() {
diff --git a/test/builtins/gen/textureDimensions/85d556.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/85d556.wgsl.expected.glsl
index 6082252..fca518e 100644
--- a/test/builtins/gen/textureDimensions/85d556.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/85d556.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_85d556() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_85d556() {
diff --git a/test/builtins/gen/textureDimensions/88ad17.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/88ad17.wgsl.expected.glsl
index 69ed057..e7c21ee 100644
--- a/test/builtins/gen/textureDimensions/88ad17.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/88ad17.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_0_1;
 void textureDimensions_88ad17() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_0_1;
 void textureDimensions_88ad17() {
diff --git a/test/builtins/gen/textureDimensions/8aa4c4.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/8aa4c4.wgsl.expected.glsl
index 537ae82..91b169f 100644
--- a/test/builtins/gen/textureDimensions/8aa4c4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/8aa4c4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureDimensions_8aa4c4() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureDimensions_8aa4c4() {
diff --git a/test/builtins/gen/textureDimensions/8deb5e.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/8deb5e.wgsl.expected.glsl
index c0c0a0d..48ceac9 100644
--- a/test/builtins/gen/textureDimensions/8deb5e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/8deb5e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureDimensions_8deb5e() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureDimensions_8deb5e() {
diff --git a/test/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl
index 4de19af..192b65f 100644
--- a/test/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/8f20bf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_8f20bf() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_8f20bf() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/8fca0f.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/8fca0f.wgsl.expected.glsl
index 535df78..f2a553d 100644
--- a/test/builtins/gen/textureDimensions/8fca0f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/8fca0f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureDimensions_8fca0f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureDimensions_8fca0f() {
diff --git a/test/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl
index 8085723..c524db9 100644
--- a/test/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/90340b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_90340b() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_90340b() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/9042ab.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9042ab.wgsl.expected.glsl
index 7ca3971..949fd48 100644
--- a/test/builtins/gen/textureDimensions/9042ab.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9042ab.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_9042ab() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureDimensions_9042ab() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/9393b0.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9393b0.wgsl.expected.glsl
index e1b42df..f60cf40 100644
--- a/test/builtins/gen/textureDimensions/9393b0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9393b0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_9393b0() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_9393b0() {
diff --git a/test/builtins/gen/textureDimensions/939fdb.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/939fdb.wgsl.expected.glsl
index b8fd95b..eda7b5e 100644
--- a/test/builtins/gen/textureDimensions/939fdb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/939fdb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_939fdb() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_939fdb() {
diff --git a/test/builtins/gen/textureDimensions/962dcd.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/962dcd.wgsl.expected.glsl
index c741061..762a7f1 100644
--- a/test/builtins/gen/textureDimensions/962dcd.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/962dcd.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_0_1;
 void textureDimensions_962dcd() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_0_1;
 void textureDimensions_962dcd() {
diff --git a/test/builtins/gen/textureDimensions/9abfe5.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9abfe5.wgsl.expected.glsl
index 7818896..2a6d1d3 100644
--- a/test/builtins/gen/textureDimensions/9abfe5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9abfe5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_9abfe5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_9abfe5() {
diff --git a/test/builtins/gen/textureDimensions/9c9c57.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9c9c57.wgsl.expected.glsl
index c7ae9b9..d919863 100644
--- a/test/builtins/gen/textureDimensions/9c9c57.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9c9c57.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureDimensions_9c9c57() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureDimensions_9c9c57() {
diff --git a/test/builtins/gen/textureDimensions/9da9e2.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9da9e2.wgsl.expected.glsl
index db2591c..e8dff5b 100644
--- a/test/builtins/gen/textureDimensions/9da9e2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9da9e2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_9da9e2() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_9da9e2() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/9eb8d8.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
index f3e5342..e20c02a 100644
--- a/test/builtins/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_9eb8d8() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_9eb8d8() {
diff --git a/test/builtins/gen/textureDimensions/9f8e46.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/9f8e46.wgsl.expected.glsl
index d319fe9..8a1224f 100644
--- a/test/builtins/gen/textureDimensions/9f8e46.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/9f8e46.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_9f8e46() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_9f8e46() {
diff --git a/test/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl
index 2cedd1e..1be537d 100644
--- a/test/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/a01845.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_a01845() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureDimensions_a01845() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/a7d565.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/a7d565.wgsl.expected.glsl
index 77348b5..c477090 100644
--- a/test/builtins/gen/textureDimensions/a7d565.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/a7d565.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureDimensions_a7d565() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureDimensions_a7d565() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/a863f2.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/a863f2.wgsl.expected.glsl
index 92ec47a..0d05642 100644
--- a/test/builtins/gen/textureDimensions/a863f2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/a863f2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureDimensions_a863f2() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureDimensions_a863f2() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/a9c9c1.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/a9c9c1.wgsl.expected.glsl
index 21da942..4f0bf6c 100644
--- a/test/builtins/gen/textureDimensions/a9c9c1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/a9c9c1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_a9c9c1() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_a9c9c1() {
diff --git a/test/builtins/gen/textureDimensions/b0e16d.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/b0e16d.wgsl.expected.glsl
index 1344198..91ba4bc 100644
--- a/test/builtins/gen/textureDimensions/b0e16d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/b0e16d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureDimensions_b0e16d() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureDimensions_b0e16d() {
diff --git a/test/builtins/gen/textureDimensions/b3c954.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/b3c954.wgsl.expected.glsl
index 1de7ad2..3db9432 100644
--- a/test/builtins/gen/textureDimensions/b3c954.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/b3c954.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_0_1;
 void textureDimensions_b3c954() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_0_1;
 void textureDimensions_b3c954() {
diff --git a/test/builtins/gen/textureDimensions/b3e407.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/b3e407.wgsl.expected.glsl
index a42f12c..16ac746 100644
--- a/test/builtins/gen/textureDimensions/b3e407.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/b3e407.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureDimensions_b3e407() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureDimensions_b3e407() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/b91240.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/b91240.wgsl.expected.glsl
index 5e463d0..577c854 100644
--- a/test/builtins/gen/textureDimensions/b91240.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/b91240.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureDimensions_b91240() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureDimensions_b91240() {
diff --git a/test/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
index 0dc8786..707e474 100644
--- a/test/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/ba1481.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_ba1481() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureDimensions_ba1481() {
diff --git a/test/builtins/gen/textureDimensions/bb3dde.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/bb3dde.wgsl.expected.glsl
index ad0aa59..9e532ec 100644
--- a/test/builtins/gen/textureDimensions/bb3dde.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/bb3dde.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_bb3dde() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureDimensions_bb3dde() {
diff --git a/test/builtins/gen/textureDimensions/c30e75.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/c30e75.wgsl.expected.glsl
index 1e68fcd..aaeddd0 100644
--- a/test/builtins/gen/textureDimensions/c30e75.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/c30e75.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_c30e75() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureDimensions_c30e75() {
diff --git a/test/builtins/gen/textureDimensions/c7943d.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/c7943d.wgsl.expected.glsl
index f1c07a5..940cde2 100644
--- a/test/builtins/gen/textureDimensions/c7943d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/c7943d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_c7943d() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureDimensions_c7943d() {
diff --git a/test/builtins/gen/textureDimensions/cc968c.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/cc968c.wgsl.expected.glsl
index be2436f..75c2df2 100644
--- a/test/builtins/gen/textureDimensions/cc968c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/cc968c.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_cc968c() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureDimensions_cc968c() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/cccc8f.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/cccc8f.wgsl.expected.glsl
index dd69e9b..fc9b7da 100644
--- a/test/builtins/gen/textureDimensions/cccc8f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/cccc8f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureDimensions_cccc8f() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureDimensions_cccc8f() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/cd76a7.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/cd76a7.wgsl.expected.glsl
index dd5463b..25db1ac 100644
--- a/test/builtins/gen/textureDimensions/cd76a7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/cd76a7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureDimensions_cd76a7() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureDimensions_cd76a7() {
diff --git a/test/builtins/gen/textureDimensions/cdf473.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/cdf473.wgsl.expected.glsl
index fbf26b4..cdbc503 100644
--- a/test/builtins/gen/textureDimensions/cdf473.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/cdf473.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_cdf473() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureDimensions_cdf473() {
diff --git a/test/builtins/gen/textureDimensions/cec841.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/cec841.wgsl.expected.glsl
index 9887c81..0a90340 100644
--- a/test/builtins/gen/textureDimensions/cec841.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/cec841.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_cec841() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureDimensions_cec841() {
diff --git a/test/builtins/gen/textureDimensions/cf7e43.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/cf7e43.wgsl.expected.glsl
index 13ac3be..8d06e28 100644
--- a/test/builtins/gen/textureDimensions/cf7e43.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/cf7e43.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureDimensions_cf7e43() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureDimensions_cf7e43() {
diff --git a/test/builtins/gen/textureDimensions/d125bc.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/d125bc.wgsl.expected.glsl
index a7a7c00..9cbbba8 100644
--- a/test/builtins/gen/textureDimensions/d125bc.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/d125bc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_d125bc() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureDimensions_d125bc() {
diff --git a/test/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl
index 8b5f070..74f97fd 100644
--- a/test/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/d83c45.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureDimensions_d83c45() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureDimensions_d83c45() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/daf7c0.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/daf7c0.wgsl.expected.glsl
index ac91dcf..14444cc 100644
--- a/test/builtins/gen/textureDimensions/daf7c0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/daf7c0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DMS arg_0_1;
 void textureDimensions_daf7c0() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DMS arg_0_1;
 void textureDimensions_daf7c0() {
diff --git a/test/builtins/gen/textureDimensions/dc2dd0.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
index 32cb914..3825f40 100644
--- a/test/builtins/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_dc2dd0() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureDimensions_dc2dd0() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl
index 6a36ed2..f579795 100644
--- a/test/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/e927be.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureDimensions_e927be() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureDimensions_e927be() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/e9e96c.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/e9e96c.wgsl.expected.glsl
index 1125475..6df13ab 100644
--- a/test/builtins/gen/textureDimensions/e9e96c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/e9e96c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_e9e96c() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_e9e96c() {
diff --git a/test/builtins/gen/textureDimensions/ef5b89.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/ef5b89.wgsl.expected.glsl
index 6081669..8ffbcc8 100644
--- a/test/builtins/gen/textureDimensions/ef5b89.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/ef5b89.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureDimensions_ef5b89() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureDimensions_ef5b89() {
diff --git a/test/builtins/gen/textureDimensions/efc8a4.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/efc8a4.wgsl.expected.glsl
index 263b1b4..3e01cb4 100644
--- a/test/builtins/gen/textureDimensions/efc8a4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/efc8a4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureDimensions_efc8a4() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureDimensions_efc8a4() {
diff --git a/test/builtins/gen/textureDimensions/f60bdb.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/f60bdb.wgsl.expected.glsl
index 5b44875..450b5b7 100644
--- a/test/builtins/gen/textureDimensions/f60bdb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/f60bdb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureDimensions_f60bdb() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureDimensions_f60bdb() {
diff --git a/test/builtins/gen/textureDimensions/f7145b.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/f7145b.wgsl.expected.glsl
index e64653c..539921e 100644
--- a/test/builtins/gen/textureDimensions/f7145b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/f7145b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureDimensions_f7145b() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureDimensions_f7145b() {
diff --git a/test/builtins/gen/textureDimensions/f931c7.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/f931c7.wgsl.expected.glsl
index 3aea52c..1bf64b3 100644
--- a/test/builtins/gen/textureDimensions/f931c7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/f931c7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureDimensions_f931c7() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureDimensions_f931c7() {
diff --git a/test/builtins/gen/textureDimensions/fa9859.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/fa9859.wgsl.expected.glsl
index 8d8a510b..912757c 100644
--- a/test/builtins/gen/textureDimensions/fa9859.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/fa9859.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureDimensions_fa9859() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureDimensions_fa9859() {
diff --git a/test/builtins/gen/textureDimensions/fb5670.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/fb5670.wgsl.expected.glsl
index 5265570..6e75ad4 100644
--- a/test/builtins/gen/textureDimensions/fb5670.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/fb5670.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_fb5670() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureDimensions_fb5670() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureDimensions/fcac78.wgsl.expected.glsl b/test/builtins/gen/textureDimensions/fcac78.wgsl.expected.glsl
index f09c542..2a7b0c1 100644
--- a/test/builtins/gen/textureDimensions/fcac78.wgsl.expected.glsl
+++ b/test/builtins/gen/textureDimensions/fcac78.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_fcac78() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureDimensions_fcac78() {
diff --git a/test/builtins/gen/textureGather/01305f.wgsl.expected.glsl b/test/builtins/gen/textureGather/01305f.wgsl.expected.glsl
index 5389a4c..1a3e90c 100644
--- a/test/builtins/gen/textureGather/01305f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/01305f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/06030a.wgsl.expected.glsl b/test/builtins/gen/textureGather/06030a.wgsl.expected.glsl
index 21b131e..ba3f33a 100644
--- a/test/builtins/gen/textureGather/06030a.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/06030a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/10c554.wgsl.expected.glsl b/test/builtins/gen/textureGather/10c554.wgsl.expected.glsl
index 28babb5..b4d9a14 100644
--- a/test/builtins/gen/textureGather/10c554.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/10c554.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureGather/15d79c.wgsl.expected.glsl b/test/builtins/gen/textureGather/15d79c.wgsl.expected.glsl
index 6954454..0c1a85e 100644
--- a/test/builtins/gen/textureGather/15d79c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/15d79c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/2e0ed5.wgsl.expected.glsl b/test/builtins/gen/textureGather/2e0ed5.wgsl.expected.glsl
index 9339d5e..853753e 100644
--- a/test/builtins/gen/textureGather/2e0ed5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/2e0ed5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureGather/3112e8.wgsl.expected.glsl b/test/builtins/gen/textureGather/3112e8.wgsl.expected.glsl
index b9f564e..3b057f1 100644
--- a/test/builtins/gen/textureGather/3112e8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/3112e8.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_1_arg_2;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGather/3c527e.wgsl.expected.glsl b/test/builtins/gen/textureGather/3c527e.wgsl.expected.glsl
index c909e1c..c0b14fa 100644
--- a/test/builtins/gen/textureGather/3c527e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/3c527e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_1_arg_2;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGather/43025d.wgsl.expected.glsl b/test/builtins/gen/textureGather/43025d.wgsl.expected.glsl
index 4ea4e1e..2639f6e 100644
--- a/test/builtins/gen/textureGather/43025d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/43025d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGather/4f2350.wgsl.expected.glsl b/test/builtins/gen/textureGather/4f2350.wgsl.expected.glsl
index ac23239..900d250 100644
--- a/test/builtins/gen/textureGather/4f2350.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/4f2350.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/51cf0b.wgsl.expected.glsl b/test/builtins/gen/textureGather/51cf0b.wgsl.expected.glsl
index 1ff6742..f07deb6 100644
--- a/test/builtins/gen/textureGather/51cf0b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/51cf0b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/53ece6.wgsl.expected.glsl b/test/builtins/gen/textureGather/53ece6.wgsl.expected.glsl
index 4b25344..20e2020 100644
--- a/test/builtins/gen/textureGather/53ece6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/53ece6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureGather/57bfc6.wgsl.expected.glsl b/test/builtins/gen/textureGather/57bfc6.wgsl.expected.glsl
index 8eb8983..dcfe1d0 100644
--- a/test/builtins/gen/textureGather/57bfc6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/57bfc6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/587ba3.wgsl.expected.glsl b/test/builtins/gen/textureGather/587ba3.wgsl.expected.glsl
index ecb1131..c5aa251 100644
--- a/test/builtins/gen/textureGather/587ba3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/587ba3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/69e0fb.wgsl.expected.glsl b/test/builtins/gen/textureGather/69e0fb.wgsl.expected.glsl
index 060919e..f75dbec 100644
--- a/test/builtins/gen/textureGather/69e0fb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/69e0fb.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/93003d.wgsl.expected.glsl b/test/builtins/gen/textureGather/93003d.wgsl.expected.glsl
index bd5c8b6..811f4ea 100644
--- a/test/builtins/gen/textureGather/93003d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/93003d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/9a6358.wgsl.expected.glsl b/test/builtins/gen/textureGather/9a6358.wgsl.expected.glsl
index 8a59c9d..64f8730 100644
--- a/test/builtins/gen/textureGather/9a6358.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/9a6358.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureGather/9efca2.wgsl.expected.glsl b/test/builtins/gen/textureGather/9efca2.wgsl.expected.glsl
index 49c5e4f..0cf402f 100644
--- a/test/builtins/gen/textureGather/9efca2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/9efca2.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/bd0b1e.wgsl.expected.glsl b/test/builtins/gen/textureGather/bd0b1e.wgsl.expected.glsl
index ecfe863..4cb88c7 100644
--- a/test/builtins/gen/textureGather/bd0b1e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/bd0b1e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/c409ae.wgsl.expected.glsl b/test/builtins/gen/textureGather/c409ae.wgsl.expected.glsl
index a5a1a5b..5c2364f 100644
--- a/test/builtins/gen/textureGather/c409ae.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/c409ae.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureGather/c55822.wgsl.expected.glsl b/test/builtins/gen/textureGather/c55822.wgsl.expected.glsl
index c376ef6..bf03a3c 100644
--- a/test/builtins/gen/textureGather/c55822.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/c55822.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_1_arg_2;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGather/e1b67d.wgsl.expected.glsl b/test/builtins/gen/textureGather/e1b67d.wgsl.expected.glsl
index 63bf56c..8ddb8df 100644
--- a/test/builtins/gen/textureGather/e1b67d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/e1b67d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/e9eff6.wgsl.expected.glsl b/test/builtins/gen/textureGather/e9eff6.wgsl.expected.glsl
index 543a238..c4a8386 100644
--- a/test/builtins/gen/textureGather/e9eff6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/e9eff6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/f5f3ba.wgsl.expected.glsl b/test/builtins/gen/textureGather/f5f3ba.wgsl.expected.glsl
index 7039398..9d2b1cd 100644
--- a/test/builtins/gen/textureGather/f5f3ba.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/f5f3ba.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGather/f7995a.wgsl.expected.glsl b/test/builtins/gen/textureGather/f7995a.wgsl.expected.glsl
index 6d73a72..428e504 100644
--- a/test/builtins/gen/textureGather/f7995a.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGather/f7995a.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_1_arg_2;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_1_arg_2;
 
diff --git a/test/builtins/gen/textureGatherCompare/182fd4.wgsl.expected.glsl b/test/builtins/gen/textureGatherCompare/182fd4.wgsl.expected.glsl
index a201e81..703dc75 100644
--- a/test/builtins/gen/textureGatherCompare/182fd4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGatherCompare/182fd4.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGather' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGather' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
@@ -73,9 +71,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGather' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGather' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl b/test/builtins/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl
index 45a3533..c04c977 100644
--- a/test/builtins/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGatherCompare/60d2d1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGatherCompare/6d9352.wgsl.expected.glsl b/test/builtins/gen/textureGatherCompare/6d9352.wgsl.expected.glsl
index 8a77fa3..723f83e 100644
--- a/test/builtins/gen/textureGatherCompare/6d9352.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGatherCompare/6d9352.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGather' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGather' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -73,9 +71,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGather' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGather' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGatherCompare/6f1267.wgsl.expected.glsl b/test/builtins/gen/textureGatherCompare/6f1267.wgsl.expected.glsl
index 82b518d..4012e12 100644
--- a/test/builtins/gen/textureGatherCompare/6f1267.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGatherCompare/6f1267.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGatherOffset' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGatherOffset' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -73,9 +71,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGatherOffset' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGatherOffset' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGatherCompare/783e65.wgsl.expected.glsl b/test/builtins/gen/textureGatherCompare/783e65.wgsl.expected.glsl
index dda9b95..07f87a2 100644
--- a/test/builtins/gen/textureGatherCompare/783e65.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGatherCompare/783e65.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGather' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGather' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -73,9 +71,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGather' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGather' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureGatherCompare/a5f587.wgsl.expected.glsl b/test/builtins/gen/textureGatherCompare/a5f587.wgsl.expected.glsl
index e5bca3d..890c346 100644
--- a/test/builtins/gen/textureGatherCompare/a5f587.wgsl.expected.glsl
+++ b/test/builtins/gen/textureGatherCompare/a5f587.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGatherOffset' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGatherOffset' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -55,7 +54,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -73,9 +71,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureGatherOffset' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureGatherOffset' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of float'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureLoad/19cf87.wgsl.expected.glsl b/test/builtins/gen/textureLoad/19cf87.wgsl.expected.glsl
index 8e1ff9d..f2b0f22 100644
--- a/test/builtins/gen/textureLoad/19cf87.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/19cf87.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureLoad_19cf87() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureLoad_19cf87() {
diff --git a/test/builtins/gen/textureLoad/1b8588.wgsl.expected.glsl b/test/builtins/gen/textureLoad/1b8588.wgsl.expected.glsl
index d4c7cc9..f524108 100644
--- a/test/builtins/gen/textureLoad/1b8588.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/1b8588.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureLoad_1b8588() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureLoad_1b8588() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureLoad/1f2016.wgsl.expected.glsl b/test/builtins/gen/textureLoad/1f2016.wgsl.expected.glsl
index 6defceb..afa5229 100644
--- a/test/builtins/gen/textureLoad/1f2016.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/1f2016.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureLoad_1f2016() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureLoad_1f2016() {
diff --git a/test/builtins/gen/textureLoad/484344.wgsl.expected.glsl b/test/builtins/gen/textureLoad/484344.wgsl.expected.glsl
index f0ecc81..b354b88 100644
--- a/test/builtins/gen/textureLoad/484344.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/484344.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureLoad_484344() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureLoad_484344() {
diff --git a/test/builtins/gen/textureLoad/4fd803.wgsl.expected.glsl b/test/builtins/gen/textureLoad/4fd803.wgsl.expected.glsl
index dac7902..91c43e9 100644
--- a/test/builtins/gen/textureLoad/4fd803.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/4fd803.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureLoad_4fd803() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureLoad_4fd803() {
diff --git a/test/builtins/gen/textureLoad/5a2f9d.wgsl.expected.glsl b/test/builtins/gen/textureLoad/5a2f9d.wgsl.expected.glsl
index 753b79b..edb8c3c 100644
--- a/test/builtins/gen/textureLoad/5a2f9d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/5a2f9d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureLoad_5a2f9d() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureLoad_5a2f9d() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureLoad/6154d4.wgsl.expected.glsl b/test/builtins/gen/textureLoad/6154d4.wgsl.expected.glsl
index 8e43537..44ad4e7 100644
--- a/test/builtins/gen/textureLoad/6154d4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/6154d4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureLoad_6154d4() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureLoad_6154d4() {
diff --git a/test/builtins/gen/textureLoad/6273b1.wgsl.expected.glsl b/test/builtins/gen/textureLoad/6273b1.wgsl.expected.glsl
index 7416ba2..0e1b6bb 100644
--- a/test/builtins/gen/textureLoad/6273b1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/6273b1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureLoad_6273b1() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureLoad_6273b1() {
diff --git a/test/builtins/gen/textureLoad/79e697.wgsl.expected.glsl b/test/builtins/gen/textureLoad/79e697.wgsl.expected.glsl
index 9c762cc..393f9f8 100644
--- a/test/builtins/gen/textureLoad/79e697.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/79e697.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureLoad_79e697() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureLoad_79e697() {
diff --git a/test/builtins/gen/textureLoad/7c90e5.wgsl.expected.glsl b/test/builtins/gen/textureLoad/7c90e5.wgsl.expected.glsl
index 9689042..7361ffe 100644
--- a/test/builtins/gen/textureLoad/7c90e5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/7c90e5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureLoad_7c90e5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureLoad_7c90e5() {
diff --git a/test/builtins/gen/textureLoad/81c381.wgsl.expected.glsl b/test/builtins/gen/textureLoad/81c381.wgsl.expected.glsl
index fc474bd..484d9bf 100644
--- a/test/builtins/gen/textureLoad/81c381.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/81c381.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureLoad_81c381() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureLoad_81c381() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureLoad/87be85.wgsl.expected.glsl b/test/builtins/gen/textureLoad/87be85.wgsl.expected.glsl
index 16aca94..98d4375 100644
--- a/test/builtins/gen/textureLoad/87be85.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/87be85.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureLoad_87be85() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureLoad_87be85() {
diff --git a/test/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl b/test/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
index 98bc6a3..3e78a01 100644
--- a/test/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/8acf41.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureLoad_8acf41() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureLoad_8acf41() {
diff --git a/test/builtins/gen/textureLoad/9b2667.wgsl.expected.glsl b/test/builtins/gen/textureLoad/9b2667.wgsl.expected.glsl
index 74b106d..ec714c1 100644
--- a/test/builtins/gen/textureLoad/9b2667.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/9b2667.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureLoad_9b2667() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureLoad_9b2667() {
diff --git a/test/builtins/gen/textureLoad/a583c9.wgsl.expected.glsl b/test/builtins/gen/textureLoad/a583c9.wgsl.expected.glsl
index d328ec0..e215d92 100644
--- a/test/builtins/gen/textureLoad/a583c9.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/a583c9.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureLoad_a583c9() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureLoad_a583c9() {
diff --git a/test/builtins/gen/textureLoad/a9a9f5.wgsl.expected.glsl b/test/builtins/gen/textureLoad/a9a9f5.wgsl.expected.glsl
index 37197ae..8d628a6 100644
--- a/test/builtins/gen/textureLoad/a9a9f5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/a9a9f5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureLoad_a9a9f5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureLoad_a9a9f5() {
diff --git a/test/builtins/gen/textureLoad/c2a480.wgsl.expected.glsl b/test/builtins/gen/textureLoad/c2a480.wgsl.expected.glsl
index a60ce49..41bfacc 100644
--- a/test/builtins/gen/textureLoad/c2a480.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/c2a480.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureLoad_c2a480() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureLoad_c2a480() {
diff --git a/test/builtins/gen/textureLoad/c378ee.wgsl.expected.glsl b/test/builtins/gen/textureLoad/c378ee.wgsl.expected.glsl
index 384dc44..1eb010c 100644
--- a/test/builtins/gen/textureLoad/c378ee.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/c378ee.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DMS arg_0_1;
 void textureLoad_c378ee() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DMS arg_0_1;
 void textureLoad_c378ee() {
diff --git a/test/builtins/gen/textureLoad/e3d2cc.wgsl.expected.glsl b/test/builtins/gen/textureLoad/e3d2cc.wgsl.expected.glsl
index 898cd99..4eaf8a3 100644
--- a/test/builtins/gen/textureLoad/e3d2cc.wgsl.expected.glsl
+++ b/test/builtins/gen/textureLoad/e3d2cc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DMS arg_0_1;
 void textureLoad_e3d2cc() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DMS arg_0_1;
 void textureLoad_e3d2cc() {
diff --git a/test/builtins/gen/textureNumLayers/024820.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/024820.wgsl.expected.glsl
index f8331b3..9aaedbf 100644
--- a/test/builtins/gen/textureNumLayers/024820.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/024820.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLayers_024820() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLayers_024820() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/053df7.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/053df7.wgsl.expected.glsl
index f3f2b38..a413d26 100644
--- a/test/builtins/gen/textureNumLayers/053df7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/053df7.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureNumLayers_053df7() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureNumLayers_053df7() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/058cc3.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/058cc3.wgsl.expected.glsl
index 211fe20..6470356 100644
--- a/test/builtins/gen/textureNumLayers/058cc3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/058cc3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_058cc3() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_058cc3() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/09d05d.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/09d05d.wgsl.expected.glsl
index 7514327..703e836 100644
--- a/test/builtins/gen/textureNumLayers/09d05d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/09d05d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_09d05d() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_09d05d() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/13b4ce.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
index 8f83293..43a852b 100644
--- a/test/builtins/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_13b4ce() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_13b4ce() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/22e53b.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/22e53b.wgsl.expected.glsl
index 2054fd0..3ca623d 100644
--- a/test/builtins/gen/textureNumLayers/22e53b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/22e53b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_22e53b() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_22e53b() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/562013.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/562013.wgsl.expected.glsl
index 7b42821..d01feaa 100644
--- a/test/builtins/gen/textureNumLayers/562013.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/562013.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_562013() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_562013() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/5d59cd.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/5d59cd.wgsl.expected.glsl
index ff2a74e..dbd8565 100644
--- a/test/builtins/gen/textureNumLayers/5d59cd.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/5d59cd.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLayers_5d59cd() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLayers_5d59cd() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/68a65b.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/68a65b.wgsl.expected.glsl
index d1f1df7..452dfdc 100644
--- a/test/builtins/gen/textureNumLayers/68a65b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/68a65b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_68a65b() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_68a65b() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/778bd1.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/778bd1.wgsl.expected.glsl
index 87da8dc..125cf2d 100644
--- a/test/builtins/gen/textureNumLayers/778bd1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/778bd1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLayers_778bd1() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLayers_778bd1() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/7f1937.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/7f1937.wgsl.expected.glsl
index bf92d0e..28b99e8 100644
--- a/test/builtins/gen/textureNumLayers/7f1937.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/7f1937.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_7f1937() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_7f1937() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/85f980.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/85f980.wgsl.expected.glsl
index a96bc51..399cdf3 100644
--- a/test/builtins/gen/textureNumLayers/85f980.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/85f980.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureNumLayers_85f980() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureNumLayers_85f980() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/87953e.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/87953e.wgsl.expected.glsl
index 1575baa..c010813 100644
--- a/test/builtins/gen/textureNumLayers/87953e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/87953e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureNumLayers_87953e() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureNumLayers_87953e() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/893e7c.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/893e7c.wgsl.expected.glsl
index b9f782c..8f091a4 100644
--- a/test/builtins/gen/textureNumLayers/893e7c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/893e7c.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureNumLayers_893e7c() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureNumLayers_893e7c() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/9700fb.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/9700fb.wgsl.expected.glsl
index e7716df..92e6b9f 100644
--- a/test/builtins/gen/textureNumLayers/9700fb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/9700fb.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_9700fb() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_9700fb() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/a216d2.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/a216d2.wgsl.expected.glsl
index ef6661f..bb9a35d 100644
--- a/test/builtins/gen/textureNumLayers/a216d2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/a216d2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_a216d2() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_a216d2() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
index 4273229..0dbc40b 100644
--- a/test/builtins/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_cd5dc8() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_cd5dc8() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/d5b228.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/d5b228.wgsl.expected.glsl
index 73f68d2..1c335a5 100644
--- a/test/builtins/gen/textureNumLayers/d5b228.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/d5b228.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_d5b228() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_d5b228() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/e31be1.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/e31be1.wgsl.expected.glsl
index c8ab7f0..caf4bee 100644
--- a/test/builtins/gen/textureNumLayers/e31be1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/e31be1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_e31be1() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureNumLayers_e31be1() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/e653c0.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/e653c0.wgsl.expected.glsl
index a50d766..ba34f64 100644
--- a/test/builtins/gen/textureNumLayers/e653c0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/e653c0.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLayers_e653c0() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLayers_e653c0() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/ee942f.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/ee942f.wgsl.expected.glsl
index 5b59b4d..03aa7e9 100644
--- a/test/builtins/gen/textureNumLayers/ee942f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/ee942f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_ee942f() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_ee942f() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/f33005.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/f33005.wgsl.expected.glsl
index eb79af8..c2d1263 100644
--- a/test/builtins/gen/textureNumLayers/f33005.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/f33005.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_f33005() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureNumLayers_f33005() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/fcec98.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/fcec98.wgsl.expected.glsl
index 4ea4371..cf93720 100644
--- a/test/builtins/gen/textureNumLayers/fcec98.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/fcec98.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_fcec98() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_fcec98() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLayers/ff5e89.wgsl.expected.glsl b/test/builtins/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
index 8fb106e..f08c258 100644
--- a/test/builtins/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_ff5e89() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureNumLayers_ff5e89() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/076cb5.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/076cb5.wgsl.expected.glsl
index 8277c6d..363c8fd 100644
--- a/test/builtins/gen/textureNumLevels/076cb5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/076cb5.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureNumLevels_076cb5() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureNumLevels_076cb5() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/080d95.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/080d95.wgsl.expected.glsl
index 96eaa13..9dc59aa 100644
--- a/test/builtins/gen/textureNumLevels/080d95.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/080d95.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_0_1;
 void textureNumLevels_080d95() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCube arg_0_1;
 void textureNumLevels_080d95() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/09ddd0.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/09ddd0.wgsl.expected.glsl
index 17125a0..e177a2d 100644
--- a/test/builtins/gen/textureNumLevels/09ddd0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/09ddd0.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureNumLevels_09ddd0() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2D arg_0_1;
 void textureNumLevels_09ddd0() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/105988.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/105988.wgsl.expected.glsl
index 42ddf8c..ee2c95d 100644
--- a/test/builtins/gen/textureNumLevels/105988.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/105988.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLevels_105988() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLevels_105988() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/1e6f3b.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/1e6f3b.wgsl.expected.glsl
index 91180d5..08010f6 100644
--- a/test/builtins/gen/textureNumLevels/1e6f3b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/1e6f3b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureNumLevels_1e6f3b() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler1D arg_0_1;
 void textureNumLevels_1e6f3b() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/23f750.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/23f750.wgsl.expected.glsl
index f3c86f5..68f1997 100644
--- a/test/builtins/gen/textureNumLevels/23f750.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/23f750.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureNumLevels_23f750() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2D arg_0_1;
 void textureNumLevels_23f750() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/2c3575.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/2c3575.wgsl.expected.glsl
index 6194cd1..994f888 100644
--- a/test/builtins/gen/textureNumLevels/2c3575.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/2c3575.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLevels_2c3575() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLevels_2c3575() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/32a0ae.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/32a0ae.wgsl.expected.glsl
index b09220a..c0f0a6e 100644
--- a/test/builtins/gen/textureNumLevels/32a0ae.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/32a0ae.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureNumLevels_32a0ae() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler1D arg_0_1;
 void textureNumLevels_32a0ae() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/5101cf.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/5101cf.wgsl.expected.glsl
index 238271d..3aef60b 100644
--- a/test/builtins/gen/textureNumLevels/5101cf.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/5101cf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureNumLevels_5101cf() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DArray arg_0_1;
 void textureNumLevels_5101cf() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/51b5bb.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/51b5bb.wgsl.expected.glsl
index 77fc6a5..8de7b76 100644
--- a/test/builtins/gen/textureNumLevels/51b5bb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/51b5bb.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureNumLevels_51b5bb() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler1D arg_0_1;
 void textureNumLevels_51b5bb() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'sampler1D' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'sampler1D' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/897aaf.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/897aaf.wgsl.expected.glsl
index f7d9e09..e2fc0ee 100644
--- a/test/builtins/gen/textureNumLevels/897aaf.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/897aaf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureNumLevels_897aaf() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_1;
 void textureNumLevels_897aaf() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/9da7a5.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/9da7a5.wgsl.expected.glsl
index 9489c31..f1226e8 100644
--- a/test/builtins/gen/textureNumLevels/9da7a5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/9da7a5.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureNumLevels_9da7a5() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler3D arg_0_1;
 void textureNumLevels_9da7a5() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/a91c03.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/a91c03.wgsl.expected.glsl
index 90a7081..db6bc66 100644
--- a/test/builtins/gen/textureNumLevels/a91c03.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/a91c03.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureNumLevels_a91c03() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isamplerCubeArray arg_0_1;
 void textureNumLevels_a91c03() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'isamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'isamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/aee7c8.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/aee7c8.wgsl.expected.glsl
index a366ac0..08525ba 100644
--- a/test/builtins/gen/textureNumLevels/aee7c8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/aee7c8.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLevels_aee7c8() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_1;
 void textureNumLevels_aee7c8() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/b1b12b.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/b1b12b.wgsl.expected.glsl
index cc6f345..c45e256 100644
--- a/test/builtins/gen/textureNumLevels/b1b12b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/b1b12b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureNumLevels_b1b12b() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureNumLevels_b1b12b() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/b4f5ea.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/b4f5ea.wgsl.expected.glsl
index 78da5ea..b6c55fb 100644
--- a/test/builtins/gen/textureNumLevels/b4f5ea.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/b4f5ea.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureNumLevels_b4f5ea() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler3D arg_0_1;
 void textureNumLevels_b4f5ea() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/d004a9.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/d004a9.wgsl.expected.glsl
index 929a3df..60d7c42 100644
--- a/test/builtins/gen/textureNumLevels/d004a9.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/d004a9.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureNumLevels_d004a9() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DArray arg_0_1;
 void textureNumLevels_d004a9() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/dca09e.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/dca09e.wgsl.expected.glsl
index cb28270..53548f0 100644
--- a/test/builtins/gen/textureNumLevels/dca09e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/dca09e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureNumLevels_dca09e() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_1;
 void textureNumLevels_dca09e() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/e67231.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/e67231.wgsl.expected.glsl
index b2827d2..6b5a17e 100644
--- a/test/builtins/gen/textureNumLevels/e67231.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/e67231.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureNumLevels_e67231() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_1;
 void textureNumLevels_e67231() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/ed078b.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/ed078b.wgsl.expected.glsl
index 2ff2192..781d655 100644
--- a/test/builtins/gen/textureNumLevels/ed078b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/ed078b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_0_1;
 void textureNumLevels_ed078b() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCube arg_0_1;
 void textureNumLevels_ed078b() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/f46ec6.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/f46ec6.wgsl.expected.glsl
index a1af03c..74c3c18 100644
--- a/test/builtins/gen/textureNumLevels/f46ec6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/f46ec6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureNumLevels_f46ec6() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usamplerCubeArray arg_0_1;
 void textureNumLevels_f46ec6() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'usamplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'usamplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumLevels/f5828d.wgsl.expected.glsl b/test/builtins/gen/textureNumLevels/f5828d.wgsl.expected.glsl
index 17944a8..03a7528 100644
--- a/test/builtins/gen/textureNumLevels/f5828d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumLevels/f5828d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLevels_f5828d() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_1;
 void textureNumLevels_f5828d() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureQueryLevels' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureQueryLevels' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumSamples/2c6f14.wgsl.expected.glsl b/test/builtins/gen/textureNumSamples/2c6f14.wgsl.expected.glsl
index fe9aef9..ff0f7ab 100644
--- a/test/builtins/gen/textureNumSamples/2c6f14.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumSamples/2c6f14.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_2c6f14() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_2c6f14() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumSamples/42f8bb.wgsl.expected.glsl b/test/builtins/gen/textureNumSamples/42f8bb.wgsl.expected.glsl
index 47d488a..be3a261 100644
--- a/test/builtins/gen/textureNumSamples/42f8bb.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumSamples/42f8bb.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DMS arg_0_1;
 void textureNumSamples_42f8bb() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp usampler2DMS arg_0_1;
 void textureNumSamples_42f8bb() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumSamples/449d23.wgsl.expected.glsl b/test/builtins/gen/textureNumSamples/449d23.wgsl.expected.glsl
index 709034e..d0fd60f 100644
--- a/test/builtins/gen/textureNumSamples/449d23.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumSamples/449d23.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DMS arg_0_1;
 void textureNumSamples_449d23() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp isampler2DMS arg_0_1;
 void textureNumSamples_449d23() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureNumSamples/a3c8a0.wgsl.expected.glsl b/test/builtins/gen/textureNumSamples/a3c8a0.wgsl.expected.glsl
index 516bc30..6352893 100644
--- a/test/builtins/gen/textureNumSamples/a3c8a0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureNumSamples/a3c8a0.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:5: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl b/test/builtins/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl
index 92ebaf2..d77eba3 100644
--- a/test/builtins/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleCompareLevel/011a8f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl b/test/builtins/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl
index 40a0692..f3807dc 100644
--- a/test/builtins/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleCompareLevel/1116ed.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl b/test/builtins/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl
index 5c32b88..1b08dc2 100644
--- a/test/builtins/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleCompareLevel/1568e3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl b/test/builtins/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl
index ef5bda4..9616fe4 100644
--- a/test/builtins/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleCompareLevel/2ad2b1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl b/test/builtins/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
index aba1bb7..b6cc31c 100644
--- a/test/builtins/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleCompareLevel/4cf3a2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl b/test/builtins/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl
index cf7b97e..9f4355b 100644
--- a/test/builtins/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleCompareLevel/f8121c.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/21402b.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/21402b.wgsl.expected.glsl
index d998ea6..497ddfc 100644
--- a/test/builtins/gen/textureSampleGrad/21402b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/21402b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/2ecd8f.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/2ecd8f.wgsl.expected.glsl
index dca9e6a..fe578d5 100644
--- a/test/builtins/gen/textureSampleGrad/2ecd8f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/2ecd8f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/468f88.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/468f88.wgsl.expected.glsl
index 6c41e56..316a4c2 100644
--- a/test/builtins/gen/textureSampleGrad/468f88.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/468f88.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/521263.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/521263.wgsl.expected.glsl
index 2eaa867..76c3c2e 100644
--- a/test/builtins/gen/textureSampleGrad/521263.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/521263.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/5312f4.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/5312f4.wgsl.expected.glsl
index 82e4113..99bc614 100644
--- a/test/builtins/gen/textureSampleGrad/5312f4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/5312f4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/872f00.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/872f00.wgsl.expected.glsl
index dd67af7..36ef066 100644
--- a/test/builtins/gen/textureSampleGrad/872f00.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/872f00.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleGrad/e383db.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/e383db.wgsl.expected.glsl
index 76bfe69..cf09a0a 100644
--- a/test/builtins/gen/textureSampleGrad/e383db.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/e383db.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleGrad/e9a2f7.wgsl.expected.glsl b/test/builtins/gen/textureSampleGrad/e9a2f7.wgsl.expected.glsl
index 320cb92..e186f48 100644
--- a/test/builtins/gen/textureSampleGrad/e9a2f7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleGrad/e9a2f7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/02be59.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/02be59.wgsl.expected.glsl
index 78593fb..73e17ed 100644
--- a/test/builtins/gen/textureSampleLevel/02be59.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/02be59.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLod' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLod' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/0bdd9a.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/0bdd9a.wgsl.expected.glsl
index c78abca..f1c697c 100644
--- a/test/builtins/gen/textureSampleLevel/0bdd9a.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/0bdd9a.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArray arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArray' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArray' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/1b0291.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/1b0291.wgsl.expected.glsl
index d214205..09bec15 100644
--- a/test/builtins/gen/textureSampleLevel/1b0291.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/1b0291.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLod' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLod' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl
index 086ea29..64e0b83 100644
--- a/test/builtins/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/1bf73e.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLod' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLod' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLod' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/302be4.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/302be4.wgsl.expected.glsl
index 8a12180..70b2052 100644
--- a/test/builtins/gen/textureSampleLevel/302be4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/302be4.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/47daa4.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/47daa4.wgsl.expected.glsl
index 3c0c6ed..f5f4d2d 100644
--- a/test/builtins/gen/textureSampleLevel/47daa4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/47daa4.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/690d95.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/690d95.wgsl.expected.glsl
index b316472..89f0a86 100644
--- a/test/builtins/gen/textureSampleLevel/690d95.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/690d95.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
index 74de764..0f3fecc 100644
--- a/test/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/979816.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/9bd37b.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/9bd37b.wgsl.expected.glsl
index 579f820..2d3a492 100644
--- a/test/builtins/gen/textureSampleLevel/9bd37b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/9bd37b.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/a4af26.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/a4af26.wgsl.expected.glsl
index b50f062..7adfafa 100644
--- a/test/builtins/gen/textureSampleLevel/a4af26.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/a4af26.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArray arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/abfcc0.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/abfcc0.wgsl.expected.glsl
index af97c44..e336b57 100644
--- a/test/builtins/gen/textureSampleLevel/abfcc0.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/abfcc0.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler3D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl
index e3da837..eea7343 100644
--- a/test/builtins/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/ae5e39.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCubeArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'samplerCubeArrayShadow' : Reserved word. 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'samplerCubeArrayShadow' : Reserved word. 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl
index e6d7019..53360a2 100644
--- a/test/builtins/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/ba93b3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DArrayShadow arg_0_arg_1;
 
@@ -71,8 +69,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureLodOffset' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureLodOffset' : no matching overloaded function found 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureSampleLevel/c32df7.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/c32df7.wgsl.expected.glsl
index bb08590..49feeca 100644
--- a/test/builtins/gen/textureSampleLevel/c32df7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/c32df7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp samplerCube arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureSampleLevel/c6aca6.wgsl.expected.glsl b/test/builtins/gen/textureSampleLevel/c6aca6.wgsl.expected.glsl
index ce9d413..44466ff 100644
--- a/test/builtins/gen/textureSampleLevel/c6aca6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureSampleLevel/c6aca6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
@@ -37,7 +36,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2D arg_0_arg_1;
 
diff --git a/test/builtins/gen/textureStore/05ce15.wgsl.expected.glsl b/test/builtins/gen/textureStore/05ce15.wgsl.expected.glsl
index e761fa1..d46f8c9 100644
--- a/test/builtins/gen/textureStore/05ce15.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/05ce15.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_05ce15() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2D arg_0;
 void textureStore_05ce15() {
diff --git a/test/builtins/gen/textureStore/064c7f.wgsl.expected.glsl b/test/builtins/gen/textureStore/064c7f.wgsl.expected.glsl
index 9de3dd3..4f0bfaf 100644
--- a/test/builtins/gen/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/064c7f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2D arg_0;
 void textureStore_064c7f() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/068641.wgsl.expected.glsl b/test/builtins/gen/textureStore/068641.wgsl.expected.glsl
index 5b252d0..8f83cee 100644
--- a/test/builtins/gen/textureStore/068641.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/068641.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_068641() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_068641() {
diff --git a/test/builtins/gen/textureStore/0af6b5.wgsl.expected.glsl b/test/builtins/gen/textureStore/0af6b5.wgsl.expected.glsl
index fc7e462..da58072 100644
--- a/test/builtins/gen/textureStore/0af6b5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/0af6b5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_0af6b5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2D arg_0;
 void textureStore_0af6b5() {
diff --git a/test/builtins/gen/textureStore/0c3dff.wgsl.expected.glsl b/test/builtins/gen/textureStore/0c3dff.wgsl.expected.glsl
index 5075440..d0a54dd 100644
--- a/test/builtins/gen/textureStore/0c3dff.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/0c3dff.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_0c3dff() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_0c3dff() {
diff --git a/test/builtins/gen/textureStore/102722.wgsl.expected.glsl b/test/builtins/gen/textureStore/102722.wgsl.expected.glsl
index 010cc1e..450e249 100644
--- a/test/builtins/gen/textureStore/102722.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/102722.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_102722() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/1bbd08.wgsl.expected.glsl b/test/builtins/gen/textureStore/1bbd08.wgsl.expected.glsl
index f287b3b..ebd4439 100644
--- a/test/builtins/gen/textureStore/1bbd08.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/1bbd08.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_1bbd08() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image3D arg_0;
 void textureStore_1bbd08() {
diff --git a/test/builtins/gen/textureStore/1c02e7.wgsl.expected.glsl b/test/builtins/gen/textureStore/1c02e7.wgsl.expected.glsl
index c49356b..324b095 100644
--- a/test/builtins/gen/textureStore/1c02e7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/1c02e7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1c02e7() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_1c02e7() {
diff --git a/test/builtins/gen/textureStore/22d955.wgsl.expected.glsl b/test/builtins/gen/textureStore/22d955.wgsl.expected.glsl
index 99b8c67..9d6a2e8 100644
--- a/test/builtins/gen/textureStore/22d955.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/22d955.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_22d955() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_22d955() {
diff --git a/test/builtins/gen/textureStore/26bf70.wgsl.expected.glsl b/test/builtins/gen/textureStore/26bf70.wgsl.expected.glsl
index fe46fd4..bb2492c 100644
--- a/test/builtins/gen/textureStore/26bf70.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/26bf70.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_26bf70() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_26bf70() {
diff --git a/test/builtins/gen/textureStore/2796b4.wgsl.expected.glsl b/test/builtins/gen/textureStore/2796b4.wgsl.expected.glsl
index c58558d..7ee8309 100644
--- a/test/builtins/gen/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/2796b4.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_2796b4() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/2ac6c7.wgsl.expected.glsl b/test/builtins/gen/textureStore/2ac6c7.wgsl.expected.glsl
index b6932ec..a88bc72 100644
--- a/test/builtins/gen/textureStore/2ac6c7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/2ac6c7.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image1D arg_0;
 void textureStore_2ac6c7() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/2eb2a4.wgsl.expected.glsl b/test/builtins/gen/textureStore/2eb2a4.wgsl.expected.glsl
index 1d5de9c..d538b8b 100644
--- a/test/builtins/gen/textureStore/2eb2a4.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/2eb2a4.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_2eb2a4() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/2ed2a3.wgsl.expected.glsl b/test/builtins/gen/textureStore/2ed2a3.wgsl.expected.glsl
index e2a59ce..51fe02f 100644
--- a/test/builtins/gen/textureStore/2ed2a3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/2ed2a3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image1D arg_0;
 void textureStore_2ed2a3() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/31745b.wgsl.expected.glsl b/test/builtins/gen/textureStore/31745b.wgsl.expected.glsl
index ec65a13..29e3b15 100644
--- a/test/builtins/gen/textureStore/31745b.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/31745b.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_31745b() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/32f368.wgsl.expected.glsl b/test/builtins/gen/textureStore/32f368.wgsl.expected.glsl
index b870d88..0002931 100644
--- a/test/builtins/gen/textureStore/32f368.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/32f368.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_32f368() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2DArray arg_0;
 void textureStore_32f368() {
diff --git a/test/builtins/gen/textureStore/331aee.wgsl.expected.glsl b/test/builtins/gen/textureStore/331aee.wgsl.expected.glsl
index c72697b..bb2e0cc 100644
--- a/test/builtins/gen/textureStore/331aee.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/331aee.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_331aee() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image3D arg_0;
 void textureStore_331aee() {
diff --git a/test/builtins/gen/textureStore/38e8d7.wgsl.expected.glsl b/test/builtins/gen/textureStore/38e8d7.wgsl.expected.glsl
index 6a7e715..bee6a95 100644
--- a/test/builtins/gen/textureStore/38e8d7.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/38e8d7.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_38e8d7() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_38e8d7() {
diff --git a/test/builtins/gen/textureStore/3a52ac.wgsl.expected.glsl b/test/builtins/gen/textureStore/3a52ac.wgsl.expected.glsl
index b0bbeb3..8411c37 100644
--- a/test/builtins/gen/textureStore/3a52ac.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/3a52ac.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_3a52ac() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_3a52ac() {
diff --git a/test/builtins/gen/textureStore/3bb7a1.wgsl.expected.glsl b/test/builtins/gen/textureStore/3bb7a1.wgsl.expected.glsl
index ebb322b..b1d02c3 100644
--- a/test/builtins/gen/textureStore/3bb7a1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/3bb7a1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_3bb7a1() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_3bb7a1() {
diff --git a/test/builtins/gen/textureStore/3bec15.wgsl.expected.glsl b/test/builtins/gen/textureStore/3bec15.wgsl.expected.glsl
index 510a69b..bf3cdf9 100644
--- a/test/builtins/gen/textureStore/3bec15.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/3bec15.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_3bec15() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/441ba8.wgsl.expected.glsl b/test/builtins/gen/textureStore/441ba8.wgsl.expected.glsl
index 093d1e7..bdb41ad 100644
--- a/test/builtins/gen/textureStore/441ba8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/441ba8.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_441ba8() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_441ba8() {
diff --git a/test/builtins/gen/textureStore/4fc057.wgsl.expected.glsl b/test/builtins/gen/textureStore/4fc057.wgsl.expected.glsl
index 3567c60..a1c87e4 100644
--- a/test/builtins/gen/textureStore/4fc057.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/4fc057.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_4fc057() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2DArray arg_0;
 void textureStore_4fc057() {
diff --git a/test/builtins/gen/textureStore/5a2f8f.wgsl.expected.glsl b/test/builtins/gen/textureStore/5a2f8f.wgsl.expected.glsl
index a8df1a3..f42d0ac 100644
--- a/test/builtins/gen/textureStore/5a2f8f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/5a2f8f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage1D arg_0;
 void textureStore_5a2f8f() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/60975f.wgsl.expected.glsl b/test/builtins/gen/textureStore/60975f.wgsl.expected.glsl
index 68788fc..a4939ba 100644
--- a/test/builtins/gen/textureStore/60975f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/60975f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_60975f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray arg_0;
 void textureStore_60975f() {
diff --git a/test/builtins/gen/textureStore/682fd6.wgsl.expected.glsl b/test/builtins/gen/textureStore/682fd6.wgsl.expected.glsl
index d24e17d..3aaf942 100644
--- a/test/builtins/gen/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/682fd6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_682fd6() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/6b75c3.wgsl.expected.glsl b/test/builtins/gen/textureStore/6b75c3.wgsl.expected.glsl
index 482d701..8f9a70e 100644
--- a/test/builtins/gen/textureStore/6b75c3.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/6b75c3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image1D arg_0;
 void textureStore_6b75c3() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/6b80d2.wgsl.expected.glsl b/test/builtins/gen/textureStore/6b80d2.wgsl.expected.glsl
index 6191846..b0dbac4 100644
--- a/test/builtins/gen/textureStore/6b80d2.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/6b80d2.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_6b80d2() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/6cff2e.wgsl.expected.glsl b/test/builtins/gen/textureStore/6cff2e.wgsl.expected.glsl
index c495ac7..5a4c478 100644
--- a/test/builtins/gen/textureStore/6cff2e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/6cff2e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_6cff2e() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_6cff2e() {
diff --git a/test/builtins/gen/textureStore/6da692.wgsl.expected.glsl b/test/builtins/gen/textureStore/6da692.wgsl.expected.glsl
index a96a9aa..eac9dd4 100644
--- a/test/builtins/gen/textureStore/6da692.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/6da692.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6da692() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_6da692() {
diff --git a/test/builtins/gen/textureStore/731349.wgsl.expected.glsl b/test/builtins/gen/textureStore/731349.wgsl.expected.glsl
index b46bfce..13d37b0 100644
--- a/test/builtins/gen/textureStore/731349.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/731349.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_731349() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2D arg_0;
 void textureStore_731349() {
diff --git a/test/builtins/gen/textureStore/752da6.wgsl.expected.glsl b/test/builtins/gen/textureStore/752da6.wgsl.expected.glsl
index 81a93b0..d507001 100644
--- a/test/builtins/gen/textureStore/752da6.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/752da6.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_752da6() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_752da6() {
diff --git a/test/builtins/gen/textureStore/77c0ae.wgsl.expected.glsl b/test/builtins/gen/textureStore/77c0ae.wgsl.expected.glsl
index 178d229..19ce722 100644
--- a/test/builtins/gen/textureStore/77c0ae.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/77c0ae.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_77c0ae() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage2D arg_0;
 void textureStore_77c0ae() {
diff --git a/test/builtins/gen/textureStore/7cec8d.wgsl.expected.glsl b/test/builtins/gen/textureStore/7cec8d.wgsl.expected.glsl
index 7edc2e9..abec31d 100644
--- a/test/builtins/gen/textureStore/7cec8d.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/7cec8d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7cec8d() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_7cec8d() {
diff --git a/test/builtins/gen/textureStore/7f7fae.wgsl.expected.glsl b/test/builtins/gen/textureStore/7f7fae.wgsl.expected.glsl
index 7c9e2c5..a4d5587 100644
--- a/test/builtins/gen/textureStore/7f7fae.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/7f7fae.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image1D arg_0;
 void textureStore_7f7fae() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/804942.wgsl.expected.glsl b/test/builtins/gen/textureStore/804942.wgsl.expected.glsl
index 81c53d4..4bc0f5e 100644
--- a/test/builtins/gen/textureStore/804942.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/804942.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_804942() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage2D arg_0;
 void textureStore_804942() {
diff --git a/test/builtins/gen/textureStore/805dae.wgsl.expected.glsl b/test/builtins/gen/textureStore/805dae.wgsl.expected.glsl
index ca08766..efadfdd 100644
--- a/test/builtins/gen/textureStore/805dae.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/805dae.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_805dae() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image2D arg_0;
 void textureStore_805dae() {
diff --git a/test/builtins/gen/textureStore/83bcc1.wgsl.expected.glsl b/test/builtins/gen/textureStore/83bcc1.wgsl.expected.glsl
index 8bce545..143268d 100644
--- a/test/builtins/gen/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/83bcc1.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_83bcc1() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/872747.wgsl.expected.glsl b/test/builtins/gen/textureStore/872747.wgsl.expected.glsl
index 0b05efc..eee0cc1 100644
--- a/test/builtins/gen/textureStore/872747.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/872747.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image1D arg_0;
 void textureStore_872747() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/8e0479.wgsl.expected.glsl b/test/builtins/gen/textureStore/8e0479.wgsl.expected.glsl
index ef71d32..4d70e0c 100644
--- a/test/builtins/gen/textureStore/8e0479.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/8e0479.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8e0479() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_8e0479() {
diff --git a/test/builtins/gen/textureStore/8f71a1.wgsl.expected.glsl b/test/builtins/gen/textureStore/8f71a1.wgsl.expected.glsl
index 84785e7..81d589e 100644
--- a/test/builtins/gen/textureStore/8f71a1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/8f71a1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_8f71a1() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage3D arg_0;
 void textureStore_8f71a1() {
diff --git a/test/builtins/gen/textureStore/969534.wgsl.expected.glsl b/test/builtins/gen/textureStore/969534.wgsl.expected.glsl
index 0298f44..b449934 100644
--- a/test/builtins/gen/textureStore/969534.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/969534.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_969534() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/9a3ecc.wgsl.expected.glsl b/test/builtins/gen/textureStore/9a3ecc.wgsl.expected.glsl
index 8822b79..793c5c2 100644
--- a/test/builtins/gen/textureStore/9a3ecc.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/9a3ecc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_9a3ecc() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_9a3ecc() {
diff --git a/test/builtins/gen/textureStore/9d9cd5.wgsl.expected.glsl b/test/builtins/gen/textureStore/9d9cd5.wgsl.expected.glsl
index 5791826..20ab30b 100644
--- a/test/builtins/gen/textureStore/9d9cd5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/9d9cd5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d9cd5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_9d9cd5() {
diff --git a/test/builtins/gen/textureStore/9e3ec5.wgsl.expected.glsl b/test/builtins/gen/textureStore/9e3ec5.wgsl.expected.glsl
index 34b1685..dae92cc 100644
--- a/test/builtins/gen/textureStore/9e3ec5.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/9e3ec5.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9e3ec5() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16i) uniform highp writeonly iimage2D arg_0;
 void textureStore_9e3ec5() {
diff --git a/test/builtins/gen/textureStore/ac67aa.wgsl.expected.glsl b/test/builtins/gen/textureStore/ac67aa.wgsl.expected.glsl
index e29fe60..552ca56 100644
--- a/test/builtins/gen/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/ac67aa.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ac67aa() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/b706b1.wgsl.expected.glsl b/test/builtins/gen/textureStore/b706b1.wgsl.expected.glsl
index f2f9552..ea818a1 100644
--- a/test/builtins/gen/textureStore/b706b1.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/b706b1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_b706b1() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage3D arg_0;
 void textureStore_b706b1() {
diff --git a/test/builtins/gen/textureStore/bbcb7f.wgsl.expected.glsl b/test/builtins/gen/textureStore/bbcb7f.wgsl.expected.glsl
index 431c833..70921e7 100644
--- a/test/builtins/gen/textureStore/bbcb7f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/bbcb7f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bbcb7f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2D arg_0;
 void textureStore_bbcb7f() {
diff --git a/test/builtins/gen/textureStore/be6e30.wgsl.expected.glsl b/test/builtins/gen/textureStore/be6e30.wgsl.expected.glsl
index 90c0b7c..cf2a7b5 100644
--- a/test/builtins/gen/textureStore/be6e30.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/be6e30.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_be6e30() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image2D arg_0;
 void textureStore_be6e30() {
diff --git a/test/builtins/gen/textureStore/bf775c.wgsl.expected.glsl b/test/builtins/gen/textureStore/bf775c.wgsl.expected.glsl
index 6ced595..2c6af4e 100644
--- a/test/builtins/gen/textureStore/bf775c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/bf775c.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage1D arg_0;
 void textureStore_bf775c() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'iimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'iimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/c5af1e.wgsl.expected.glsl b/test/builtins/gen/textureStore/c5af1e.wgsl.expected.glsl
index d62dab1..c800da3 100644
--- a/test/builtins/gen/textureStore/c5af1e.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/c5af1e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_c5af1e() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image3D arg_0;
 void textureStore_c5af1e() {
diff --git a/test/builtins/gen/textureStore/c863be.wgsl.expected.glsl b/test/builtins/gen/textureStore/c863be.wgsl.expected.glsl
index 13741d4..6e37d95 100644
--- a/test/builtins/gen/textureStore/c863be.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/c863be.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image2DArray arg_0;
 void textureStore_c863be() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/d73b5c.wgsl.expected.glsl b/test/builtins/gen/textureStore/d73b5c.wgsl.expected.glsl
index 0a47dde..8f00363 100644
--- a/test/builtins/gen/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/d73b5c.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage1D arg_0;
 void textureStore_d73b5c() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/dd7d81.wgsl.expected.glsl b/test/builtins/gen/textureStore/dd7d81.wgsl.expected.glsl
index 101a03d..8ff92b4 100644
--- a/test/builtins/gen/textureStore/dd7d81.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/dd7d81.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_dd7d81() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8_snorm) uniform highp writeonly image3D arg_0;
 void textureStore_dd7d81() {
diff --git a/test/builtins/gen/textureStore/dde364.wgsl.expected.glsl b/test/builtins/gen/textureStore/dde364.wgsl.expected.glsl
index a878ba5..5da47a5 100644
--- a/test/builtins/gen/textureStore/dde364.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/dde364.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32ui) uniform highp writeonly uimage2DArray arg_0;
 void textureStore_dde364() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/e885e8.wgsl.expected.glsl b/test/builtins/gen/textureStore/e885e8.wgsl.expected.glsl
index b77adfc..4c385b2 100644
--- a/test/builtins/gen/textureStore/e885e8.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/e885e8.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba16f) uniform highp writeonly image1D arg_0;
 void textureStore_e885e8() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/eb702f.wgsl.expected.glsl b/test/builtins/gen/textureStore/eb702f.wgsl.expected.glsl
index 6ba53e8..13e49bf 100644
--- a/test/builtins/gen/textureStore/eb702f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/eb702f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_eb702f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32f) uniform highp writeonly image3D arg_0;
 void textureStore_eb702f() {
diff --git a/test/builtins/gen/textureStore/eb78b9.wgsl.expected.glsl b/test/builtins/gen/textureStore/eb78b9.wgsl.expected.glsl
index d57fcfd..b9490fa 100644
--- a/test/builtins/gen/textureStore/eb78b9.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/eb78b9.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_eb78b9() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32i) uniform highp writeonly iimage3D arg_0;
 void textureStore_eb78b9() {
diff --git a/test/builtins/gen/textureStore/ee6acc.wgsl.expected.glsl b/test/builtins/gen/textureStore/ee6acc.wgsl.expected.glsl
index 8ad1b75..69222ed 100644
--- a/test/builtins/gen/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/ee6acc.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32f) uniform highp writeonly image3D arg_0;
 void textureStore_ee6acc() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/ef9f2f.wgsl.expected.glsl b/test/builtins/gen/textureStore/ef9f2f.wgsl.expected.glsl
index c04636e..39d86ca 100644
--- a/test/builtins/gen/textureStore/ef9f2f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/ef9f2f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ef9f2f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(r32ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_ef9f2f() {
diff --git a/test/builtins/gen/textureStore/f8dead.wgsl.expected.glsl b/test/builtins/gen/textureStore/f8dead.wgsl.expected.glsl
index 205cec7..6fc0296 100644
--- a/test/builtins/gen/textureStore/f8dead.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/f8dead.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_f8dead() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8ui) uniform highp writeonly uimage3D arg_0;
 void textureStore_f8dead() {
diff --git a/test/builtins/gen/textureStore/f9be83.wgsl.expected.glsl b/test/builtins/gen/textureStore/f9be83.wgsl.expected.glsl
index b2ea0c7..27e7863 100644
--- a/test/builtins/gen/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/f9be83.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
@@ -21,8 +20,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -51,7 +50,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rg32i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_f9be83() {
@@ -68,8 +66,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image load-store format' : not supported with this profile: es
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image load-store format' : not supported with this profile: es
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/fb9a8f.wgsl.expected.glsl b/test/builtins/gen/textureStore/fb9a8f.wgsl.expected.glsl
index 0a25bad..299c395 100644
--- a/test/builtins/gen/textureStore/fb9a8f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/fb9a8f.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
@@ -21,9 +20,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -53,7 +52,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 layout(rgba32ui) uniform highp writeonly uimage1D arg_0;
 void textureStore_fb9a8f() {
@@ -70,9 +68,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'uimage1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'uimage1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/textureStore/fbf53f.wgsl.expected.glsl b/test/builtins/gen/textureStore/fbf53f.wgsl.expected.glsl
index 3eb54d3..2f24e56 100644
--- a/test/builtins/gen/textureStore/fbf53f.wgsl.expected.glsl
+++ b/test/builtins/gen/textureStore/fbf53f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_fbf53f() {
@@ -35,7 +34,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(rgba8i) uniform highp writeonly iimage2DArray arg_0;
 void textureStore_fbf53f() {
diff --git a/test/builtins/gen/transpose/2585cd.wgsl.expected.glsl b/test/builtins/gen/transpose/2585cd.wgsl.expected.glsl
index 7bae060..c77e3fa 100644
--- a/test/builtins/gen/transpose/2585cd.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/2585cd.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_2585cd() {
   mat3x4 res = transpose(mat4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_2585cd() {
   mat3x4 res = transpose(mat4x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/31d679.wgsl.expected.glsl b/test/builtins/gen/transpose/31d679.wgsl.expected.glsl
index d4d80d9..7cf3c23 100644
--- a/test/builtins/gen/transpose/31d679.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/31d679.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_31d679() {
   mat2 res = transpose(mat2(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_31d679() {
   mat2 res = transpose(mat2(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/31e37e.wgsl.expected.glsl b/test/builtins/gen/transpose/31e37e.wgsl.expected.glsl
index 881af10..0e8009f 100644
--- a/test/builtins/gen/transpose/31e37e.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/31e37e.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_31e37e() {
   mat2x4 res = transpose(mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_31e37e() {
   mat2x4 res = transpose(mat4x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/4ce359.wgsl.expected.glsl b/test/builtins/gen/transpose/4ce359.wgsl.expected.glsl
index a476a04..972ed17 100644
--- a/test/builtins/gen/transpose/4ce359.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/4ce359.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_4ce359() {
   mat4x2 res = transpose(mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_4ce359() {
   mat4x2 res = transpose(mat2x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/4dc9a1.wgsl.expected.glsl b/test/builtins/gen/transpose/4dc9a1.wgsl.expected.glsl
index e981ed7..82b81fc 100644
--- a/test/builtins/gen/transpose/4dc9a1.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/4dc9a1.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_4dc9a1() {
   mat3x2 res = transpose(mat2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_4dc9a1() {
   mat3x2 res = transpose(mat2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/854336.wgsl.expected.glsl b/test/builtins/gen/transpose/854336.wgsl.expected.glsl
index 5daee5d..7720ee6 100644
--- a/test/builtins/gen/transpose/854336.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/854336.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_854336() {
   mat3 res = transpose(mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_854336() {
   mat3 res = transpose(mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/c1b600.wgsl.expected.glsl b/test/builtins/gen/transpose/c1b600.wgsl.expected.glsl
index b905fd6..f2efd11 100644
--- a/test/builtins/gen/transpose/c1b600.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/c1b600.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_c1b600() {
   mat4 res = transpose(mat4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_c1b600() {
   mat4 res = transpose(mat4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/d8f8ba.wgsl.expected.glsl b/test/builtins/gen/transpose/d8f8ba.wgsl.expected.glsl
index 86c06ad..f89279f 100644
--- a/test/builtins/gen/transpose/d8f8ba.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/d8f8ba.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_d8f8ba() {
   mat4x3 res = transpose(mat3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_d8f8ba() {
   mat4x3 res = transpose(mat3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/transpose/ed4bdc.wgsl.expected.glsl b/test/builtins/gen/transpose/ed4bdc.wgsl.expected.glsl
index 338112d..031f2d1 100644
--- a/test/builtins/gen/transpose/ed4bdc.wgsl.expected.glsl
+++ b/test/builtins/gen/transpose/ed4bdc.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void transpose_ed4bdc() {
   mat2x3 res = transpose(mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void transpose_ed4bdc() {
   mat2x3 res = transpose(mat3x2(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/trunc/562d05.wgsl.expected.glsl b/test/builtins/gen/trunc/562d05.wgsl.expected.glsl
index 64d05c9..b0f1bf6 100644
--- a/test/builtins/gen/trunc/562d05.wgsl.expected.glsl
+++ b/test/builtins/gen/trunc/562d05.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void trunc_562d05() {
   vec3 res = trunc(vec3(0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void trunc_562d05() {
   vec3 res = trunc(vec3(0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/trunc/e183aa.wgsl.expected.glsl b/test/builtins/gen/trunc/e183aa.wgsl.expected.glsl
index 3241d0b..c4a9fca 100644
--- a/test/builtins/gen/trunc/e183aa.wgsl.expected.glsl
+++ b/test/builtins/gen/trunc/e183aa.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void trunc_e183aa() {
   vec4 res = trunc(vec4(0.0f, 0.0f, 0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void trunc_e183aa() {
   vec4 res = trunc(vec4(0.0f, 0.0f, 0.0f, 0.0f));
diff --git a/test/builtins/gen/trunc/eb83df.wgsl.expected.glsl b/test/builtins/gen/trunc/eb83df.wgsl.expected.glsl
index 160d8cf..4fee3d9 100644
--- a/test/builtins/gen/trunc/eb83df.wgsl.expected.glsl
+++ b/test/builtins/gen/trunc/eb83df.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void trunc_eb83df() {
   float res = trunc(1.0f);
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void trunc_eb83df() {
   float res = trunc(1.0f);
diff --git a/test/builtins/gen/trunc/f370d3.wgsl.expected.glsl b/test/builtins/gen/trunc/f370d3.wgsl.expected.glsl
index c3e3eee..5b18a38 100644
--- a/test/builtins/gen/trunc/f370d3.wgsl.expected.glsl
+++ b/test/builtins/gen/trunc/f370d3.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void trunc_f370d3() {
   vec2 res = trunc(vec2(0.0f, 0.0f));
@@ -33,7 +32,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void trunc_f370d3() {
   vec2 res = trunc(vec2(0.0f, 0.0f));
diff --git a/test/builtins/gen/unpack2x16float/32a5cf.wgsl.expected.glsl b/test/builtins/gen/unpack2x16float/32a5cf.wgsl.expected.glsl
index e3911b0..9d16a42 100644
--- a/test/builtins/gen/unpack2x16float/32a5cf.wgsl.expected.glsl
+++ b/test/builtins/gen/unpack2x16float/32a5cf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16float(uint param_0) {
   uint i = param_0;
@@ -26,8 +25,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp highp uint' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp highp uint' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -61,7 +60,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16float(uint param_0) {
   uint i = param_0;
@@ -83,8 +81,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp highp uint' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp highp uint' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/unpack2x16snorm/b4aea6.wgsl.expected.glsl b/test/builtins/gen/unpack2x16snorm/b4aea6.wgsl.expected.glsl
index ea62982..f46f307 100644
--- a/test/builtins/gen/unpack2x16snorm/b4aea6.wgsl.expected.glsl
+++ b/test/builtins/gen/unpack2x16snorm/b4aea6.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16snorm(uint param_0) {
   int j = int(param_0);
@@ -27,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'int2' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'int2' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -63,7 +62,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16snorm(uint param_0) {
   int j = int(param_0);
@@ -86,8 +84,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'int2' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'int2' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/unpack2x16unorm/7699c0.wgsl.expected.glsl b/test/builtins/gen/unpack2x16unorm/7699c0.wgsl.expected.glsl
index 6c41b74..152e9ed 100644
--- a/test/builtins/gen/unpack2x16unorm/7699c0.wgsl.expected.glsl
+++ b/test/builtins/gen/unpack2x16unorm/7699c0.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16unorm(uint param_0) {
   uint j = param_0;
@@ -27,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'uint2' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'uint2' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -63,7 +62,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16unorm(uint param_0) {
   uint j = param_0;
@@ -86,8 +84,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'uint2' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'uint2' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/unpack4x8snorm/523fb3.wgsl.expected.glsl b/test/builtins/gen/unpack4x8snorm/523fb3.wgsl.expected.glsl
index 8f3ec12..dd61808 100644
--- a/test/builtins/gen/unpack4x8snorm/523fb3.wgsl.expected.glsl
+++ b/test/builtins/gen/unpack4x8snorm/523fb3.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_unpack4x8snorm(uint param_0) {
   int j = int(param_0);
@@ -27,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'int4' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'int4' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -63,7 +62,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_unpack4x8snorm(uint param_0) {
   int j = int(param_0);
@@ -86,8 +84,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'int4' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'int4' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/unpack4x8unorm/750c74.wgsl.expected.glsl b/test/builtins/gen/unpack4x8unorm/750c74.wgsl.expected.glsl
index 369b226..86df709 100644
--- a/test/builtins/gen/unpack4x8unorm/750c74.wgsl.expected.glsl
+++ b/test/builtins/gen/unpack4x8unorm/750c74.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_unpack4x8unorm(uint param_0) {
   uint j = param_0;
@@ -27,8 +26,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'uint4' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'uint4' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
@@ -63,7 +62,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_unpack4x8unorm(uint param_0) {
   uint j = param_0;
@@ -86,8 +84,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'uint4' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'uint4' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/gen/workgroupBarrier/a17f7f.wgsl.expected.glsl b/test/builtins/gen/workgroupBarrier/a17f7f.wgsl.expected.glsl
index 1355106..677f05b 100644
--- a/test/builtins/gen/workgroupBarrier/a17f7f.wgsl.expected.glsl
+++ b/test/builtins/gen/workgroupBarrier/a17f7f.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void workgroupBarrier_a17f7f() {
   barrier();
diff --git a/test/builtins/modf.wgsl.expected.glsl b/test/builtins/modf.wgsl.expected.glsl
index dbb6f56..c9c5a1f 100644
--- a/test/builtins/modf.wgsl.expected.glsl
+++ b/test/builtins/modf.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct modf_result {
   float fract;
@@ -28,8 +27,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:12: '{ } style initializers' : not supported with this profile: es
-ERROR: 0:12: '' : compilation terminated 
+ERROR: 0:11: '{ } style initializers' : not supported with this profile: es
+ERROR: 0:11: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/radians.spvasm.expected.glsl b/test/builtins/radians.spvasm.expected.glsl
index 891cca0..619ecb1 100644
--- a/test/builtins/radians.spvasm.expected.glsl
+++ b/test/builtins/radians.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 float tint_radians(float param_0) {
   return param_0 * 0.017453292519943295474;
diff --git a/test/builtins/repeated_use.wgsl.expected.glsl b/test/builtins/repeated_use.wgsl.expected.glsl
index a27347a..762fa92 100644
--- a/test/builtins/repeated_use.wgsl.expected.glsl
+++ b/test/builtins/repeated_use.wgsl.expected.glsl
@@ -49,7 +49,6 @@
         ^^^^^^^^
 
 #version 310 es
-precision mediump float;
 
 bvec4 tint_isNormal(vec4 param_0) {
   uint4 exponent = asuint(param_0) & 0x7f80000;
@@ -97,8 +96,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/builtins/textureDimensions/depth_ms.spvasm.expected.glsl b/test/builtins/textureDimensions/depth_ms.spvasm.expected.glsl
index fdf94c2..cb9ca10 100644
--- a/test/builtins/textureDimensions/depth_ms.spvasm.expected.glsl
+++ b/test/builtins/textureDimensions/depth_ms.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol_1 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 uniform highp sampler2DMS arg_0_1;
@@ -67,7 +66,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureDimensions_f60bdb() {
diff --git a/test/builtins/textureLoad/depth_ms.spvasm.expected.glsl b/test/builtins/textureLoad/depth_ms.spvasm.expected.glsl
index 639f6c4..1f39226 100644
--- a/test/builtins/textureLoad/depth_ms.spvasm.expected.glsl
+++ b/test/builtins/textureLoad/depth_ms.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol_1 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 uniform highp sampler2DMS arg_0_1;
@@ -67,7 +66,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureLoad_6273b1() {
diff --git a/test/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl b/test/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
index d0f8767..1f9ab09 100644
--- a/test/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
+++ b/test/builtins/textureNumSamples/depth_ms.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol_1 = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 uniform highp sampler2DMS arg_0_1;
@@ -41,9 +40,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:8: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:8: '' : compilation terminated 
+ERROR: 0:7: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:7: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
@@ -85,7 +84,6 @@
 
 
 #version 310 es
-precision mediump float;
 
 uniform highp sampler2DMS arg_0_1;
 void textureNumSamples_a3c8a0() {
@@ -114,9 +112,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: 'textureSamples' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: 'textureSamples' : no matching overloaded function found 
+ERROR: 0:6: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl b/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl
index be1f423..4eea93e 100644
--- a/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   mat3 a = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
diff --git a/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.glsl
index 183c599..f12c446 100644
--- a/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f + 2.0f);
diff --git a/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.glsl
index 6d7731d..884b5ac 100644
--- a/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 + 2);
diff --git a/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.glsl
index db4ce4d..e5c3783 100644
--- a/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u + 2u);
diff --git a/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl
index f9982f1..0193ade 100644
--- a/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl
index f8c91ba..d2ff14e 100644
--- a/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl
index 44535e4..8e4d546 100644
--- a/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl
index d1bbc23..599cb04 100644
--- a/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl
index 0f6b433..e9e5f02 100644
--- a/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl
index 408dbb9..2388aab 100644
--- a/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl
index e20d7cc..84aae31 100644
--- a/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl
index d3c9d1d..7c6081d 100644
--- a/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl
index 507acf4..ef61fd9 100644
--- a/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/add/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.glsl
index d02d112..e9a8be0 100644
--- a/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 & 2);
diff --git a/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.glsl
index 4d5fab3..57490fe 100644
--- a/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u & 2u);
diff --git a/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl
index 33d54db..96b64b5 100644
--- a/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl
index c744891..5f0ea43 100644
--- a/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.glsl
index 523d274..05fb47d 100644
--- a/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 | 2);
diff --git a/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.glsl
index bf49a23..5e635a0 100644
--- a/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u | 2u);
diff --git a/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl
index c534e41..7da6419 100644
--- a/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl
index 088472a..0300be8 100644
--- a/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.glsl
index 9a6f598..235697c 100644
--- a/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 ^ 2);
diff --git a/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.glsl
index 258ecbe..c6cce08 100644
--- a/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u ^ 2u);
diff --git a/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl
index 26e1730..5ad1563 100644
--- a/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl
index 4cf58b1..a2f9017 100644
--- a/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.glsl
index 94a762d..bd250c4 100644
--- a/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f / 2.0f);
diff --git a/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.glsl
index a6234f1..fdaa3f8 100644
--- a/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 / 2);
diff --git a/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.glsl
index d99c8e1..4facf8e 100644
--- a/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u / 2u);
diff --git a/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl
index a64f12f..9e3345b 100644
--- a/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl
index 4160043..94f8b1f 100644
--- a/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl
index 9bb9d30..ff9ebbe 100644
--- a/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl
index 240d5a3..822a74d 100644
--- a/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl
index 38115e3..8656015 100644
--- a/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl
index 9c76b05..fbe58d4 100644
--- a/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl
index a1bec3e..d598d9e 100644
--- a/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl
index 418690f..6d61168 100644
--- a/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl
index 8d98c77..75013bc 100644
--- a/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl
index 5400248..7633cf6 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f / 0.0f);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl
index cc3309a..3904265 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 / 0);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl
index 9804a34..586c708 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u / 0u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl
index 5400d89..7589294 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
index 7ea67c9..2fdf8fe 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
index 93386d1..6d14d8f 100644
--- a/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl
index 1bd63af..3596677 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
index 861e933..6be0898 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
index b6ec3d8..ba0d9a3 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
index d91d8aa..561918d 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
index 412bd3b..6e11b34 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
index f9b3b3e..657cdb4 100644
--- a/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl
index bb9b674..8c16867 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 1.0f;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl
index 4d6387f..b3aef3b 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 1;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl
index dac49e3..b15631c 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 1u;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.glsl
index a4a2599..114954a 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl
index ddc941c..d2f146a 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl
index 6112e17..67af12e 100644
--- a/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.glsl
index efe71e1..4212706 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl
index 0cb8733..1ee33f9 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl
index f7ff68e..e592a96 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl
index 2cac613..077b314 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl
index 12759bc..a4756fb 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl
index 36f35b3..567059c 100644
--- a/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl
index e4ef44a..1e0dcfe 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 1.0f;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl
index 3a5a1eb..8ec81fd 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 1;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl
index 0bec649..aee0413 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 1u;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.glsl
index 5400d89..7589294 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl
index 7ea67c9..2fdf8fe 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl
index 93386d1..6d14d8f 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.glsl
index dc75696..4544df7 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl
index 0807c6c..0c7f6a9 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl
index 221c532..05bca8a 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl
index d91d8aa..561918d 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl
index 412bd3b..6e11b34 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl
index f9b3b3e..657cdb4 100644
--- a/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.glsl
index 029afa3..5b843a6 100644
--- a/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 << 2u);
diff --git a/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.glsl
index bf173df..d3d24b4 100644
--- a/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u << 2u);
diff --git a/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl b/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl
index 38ebb21..68dccd8 100644
--- a/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl b/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl
index d2e81ef..ba5db9c 100644
--- a/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.glsl
index 0c9f929..58ac79d 100644
--- a/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f % 2.0f);
@@ -13,8 +12,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' const float' and a right operand of type ' const float' (or there is no acceptable conversion)
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' const float' and a right operand of type ' const float' (or there is no acceptable conversion)
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.glsl
index c66c552..b67b7fd 100644
--- a/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 % 2);
diff --git a/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.glsl
index 7b67a86..c7eb024 100644
--- a/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u % 2u);
diff --git a/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl
index 8eb2f99..541db7f 100644
--- a/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
@@ -15,8 +14,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump 3-component vector of float' and a right operand of type ' temp mediump 3-component vector of float' (or there is no acceptable conversion)
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp 3-component vector of float' and a right operand of type ' temp highp 3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl
index 31a572b..56d7104 100644
--- a/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl
index d034dd1..bd85a3e 100644
--- a/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl
index 5b23407..7e7046a 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f % 0.0f);
@@ -13,8 +12,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' const float' and a right operand of type ' const float' (or there is no acceptable conversion)
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' const float' and a right operand of type ' const float' (or there is no acceptable conversion)
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl
index dabd566..ae3fe55 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 % 0);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl
index d528f41..dfd9096 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u % 0u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
index 1a6bb8c..e19dc46 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
index 271cddc..633b9ed 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
index 7437dc0..c2e9b36 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
index 61a8568..47e19a3 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
index 7f4bf3f..2152369 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
@@ -15,8 +14,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump 3-component vector of float' and a right operand of type ' temp mediump 3-component vector of float' (or there is no acceptable conversion)
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp 3-component vector of float' and a right operand of type ' temp highp 3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
index f3dbd2b..809b454 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
index 5b66d7f..af4c44f 100644
--- a/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl
index ace9289..20e3ea5 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 1.0f;
@@ -15,8 +14,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' temp mediump float' (or there is no acceptable conversion)
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp float' and a right operand of type ' temp highp float' (or there is no acceptable conversion)
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl
index d88e2eb..e5b1401 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 1;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl
index 95a44ae..7b7c6b3 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 1u;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl
index 54ae1ef..d633601 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl
index 4658c32..aa981b7 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl
index deb241f..5b6590c 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl
index 55bd606..f388f00 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl
index 5925f91..034903a 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
@@ -15,8 +14,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump 3-component vector of float' and a right operand of type ' temp mediump 3-component vector of float' (or there is no acceptable conversion)
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp 3-component vector of float' and a right operand of type ' temp highp 3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl
index 96da4e0..f97a7fa 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl
index f866539..a2f09b1 100644
--- a/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl
index 34a9692..39c64fe 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 1.0f;
@@ -15,8 +14,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump float' and a right operand of type ' temp mediump float' (or there is no acceptable conversion)
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp float' and a right operand of type ' temp highp float' (or there is no acceptable conversion)
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl
index 3ca2124..1f7158f 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 1;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl
index d97b5e9..d30fde8 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 1u;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl
index 1a6bb8c..e19dc46 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl
index 271cddc..633b9ed 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl
index c9a16dc..d74047a 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl
index 4f67064..d84b14b 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl
index 7f4bf3f..2152369 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
@@ -15,8 +14,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:7: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp mediump 3-component vector of float' and a right operand of type ' temp mediump 3-component vector of float' (or there is no acceptable conversion)
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:6: '%' :  wrong operand types: no operation '%' exists that takes a left-hand operand of type ' temp highp 3-component vector of float' and a right operand of type ' temp highp 3-component vector of float' (or there is no acceptable conversion)
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl
index f3dbd2b..809b454 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl
index 5b66d7f..af4c44f 100644
--- a/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl b/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl
index b5b4e36..f5d9ebe 100644
--- a/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   mat2x4 a = mat2x4(vec4(1.0f, 2.0f, 3.0f, 4.0f), vec4(5.0f, 6.0f, 7.0f, 8.0f));
diff --git a/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl
index 4d766f4..4b6166c 100644
--- a/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   mat3 a = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
diff --git a/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl b/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl
index 1c8e788..ff454c9 100644
--- a/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   mat4x2 a = mat4x2(vec2(-1.0f, -2.0f), vec2(-3.0f, -4.0f), vec2(-5.0f, -6.0f), vec2(-7.0f, -8.0f));
diff --git a/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.glsl
index 5b0cfc3..c0865da 100644
--- a/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f * 2.0f);
diff --git a/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.glsl
index d5e721e..deb72c9 100644
--- a/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 * 2);
diff --git a/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.glsl
index 0eabde4..077b860 100644
--- a/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u * 2u);
diff --git a/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl
index 4548728..e24420f 100644
--- a/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl
index db11eae..f431bdd 100644
--- a/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl
index 882ad1d..3fffc73 100644
--- a/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl
index 8b4e0fc..1e5e9c4 100644
--- a/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl
index 1b37309..daadb77 100644
--- a/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl
index b2ff4f4..847015b 100644
--- a/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl
index 19089fe..1fe03cd 100644
--- a/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl
index 27771db..6974064 100644
--- a/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl
index 0d3ea99..7cd4b4d 100644
--- a/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.glsl
index 8b43a7c..2018d24 100644
--- a/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 >> 2u);
diff --git a/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.glsl
index 4a2e559..232726a 100644
--- a/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u >> 2u);
diff --git a/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl b/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl
index 512471c..ca2842c 100644
--- a/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl b/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl
index 0eb8bd2..a292377 100644
--- a/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl b/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl
index 2f6c878..aadd9ec 100644
--- a/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   mat3 a = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
diff --git a/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.glsl
index 53d90c0..ee8b862 100644
--- a/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float r = (1.0f - 2.0f);
diff --git a/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.glsl
index 73f08c9..310f350 100644
--- a/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int r = (1 - 2);
diff --git a/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.glsl
index 65df051..4b278df 100644
--- a/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint r = (1u - 2u);
diff --git a/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl
index 38c4ce4..f50f51a 100644
--- a/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float a = 4.0f;
diff --git a/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl
index 97f7684..85753f2 100644
--- a/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int a = 4;
diff --git a/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl
index 754277d..73cf7c3 100644
--- a/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint a = 4u;
diff --git a/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl b/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl
index 9019a0b..0eee275 100644
--- a/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl b/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl
index 49f7efe..bdb3b3d 100644
--- a/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl b/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl
index 5d045e5..75a50ae 100644
--- a/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl b/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl
index 00c7356..d180ab6 100644
--- a/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl b/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl
index 87d13ea..dca3b15 100644
--- a/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl b/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl
index 5616946..367b257 100644
--- a/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.glsl
index 9fdde49..59c93e0 100644
--- a/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/f32-f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float b = 1.0f;
diff --git a/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.glsl
index e062527..ddf9429 100644
--- a/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/f32-i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int b = floatBitsToInt(1.0f);
diff --git a/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.glsl
index d2cfdb1..5c2fd32 100644
--- a/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/f32-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint b = floatBitsToUint(1.0f);
diff --git a/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.glsl
index 0076384..7899523 100644
--- a/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/i32-f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float b = intBitsToFloat(1);
diff --git a/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.glsl
index d0566e5..6b06bb5 100644
--- a/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/i32-i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int b = 1;
diff --git a/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.glsl
index de9c43d..e336b38 100644
--- a/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/i32-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint b = uint(1);
diff --git a/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.glsl
index 4b25ee9..4ec5257 100644
--- a/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/i32min-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint b = uint(-2147483648);
diff --git a/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.glsl
index cc7e675..787d6f7 100644
--- a/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/u32-f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   float b = uintBitsToFloat(1u);
diff --git a/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.glsl
index 506bd4a..8c280a8 100644
--- a/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/u32-i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int b = int(1u);
diff --git a/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.glsl b/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.glsl
index f99a671..c8a3121 100644
--- a/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/scalar/u32-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uint b = 1u;
diff --git a/test/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl b/test/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl
index a6bb513..ed3989d 100644
--- a/test/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/f32-f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl b/test/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl
index 1c3d70e..551b039 100644
--- a/test/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/f32-i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl b/test/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl
index 38310cf..b1fe444 100644
--- a/test/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/f32-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   vec3 a = vec3(1.0f, 2.0f, 3.0f);
diff --git a/test/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl b/test/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl
index 2482e5e..a4f8c04 100644
--- a/test/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/i32-f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl b/test/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl
index 614e64a..6214de8 100644
--- a/test/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/i32-i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl b/test/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl
index 9b3a5cc..eac0936 100644
--- a/test/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/i32-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   ivec3 a = ivec3(1, 2, 3);
diff --git a/test/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl b/test/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl
index cca9ce9..63a77f9 100644
--- a/test/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/u32-f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl b/test/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl
index 8f69093..bb0ab18 100644
--- a/test/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/u32-i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl b/test/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl
index a8fd047..ee92fe8 100644
--- a/test/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl
+++ b/test/expressions/bitcast/vector/u32-u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   uvec3 a = uvec3(1u, 2u, 3u);
diff --git a/test/expressions/index/let/let/literal/array.wgsl.expected.glsl b/test/expressions/index/let/let/literal/array.wgsl.expected.glsl
index 2c57161..3761f17 100644
--- a/test/expressions/index/let/let/literal/array.wgsl.expected.glsl
+++ b/test/expressions/index/let/let/literal/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/let/literal/matrix.wgsl.expected.glsl b/test/expressions/index/let/let/literal/matrix.wgsl.expected.glsl
index c3c6f83..2c4e81a 100644
--- a/test/expressions/index/let/let/literal/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/let/let/literal/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/let/literal/vector.wgsl.expected.glsl b/test/expressions/index/let/let/literal/vector.wgsl.expected.glsl
index 42517d3..0f24df5 100644
--- a/test/expressions/index/let/let/literal/vector.wgsl.expected.glsl
+++ b/test/expressions/index/let/let/literal/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/let/param/array.wgsl.expected.glsl b/test/expressions/index/let/let/param/array.wgsl.expected.glsl
index 831e77b..575406a 100644
--- a/test/expressions/index/let/let/param/array.wgsl.expected.glsl
+++ b/test/expressions/index/let/let/param/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/let/param/matrix.wgsl.expected.glsl b/test/expressions/index/let/let/param/matrix.wgsl.expected.glsl
index e922171..13e265b 100644
--- a/test/expressions/index/let/let/param/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/let/let/param/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/let/param/vector.wgsl.expected.glsl b/test/expressions/index/let/let/param/vector.wgsl.expected.glsl
index 3f437d3..53eb8d8 100644
--- a/test/expressions/index/let/let/param/vector.wgsl.expected.glsl
+++ b/test/expressions/index/let/let/param/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/literal/array.wgsl.expected.glsl b/test/expressions/index/let/literal/array.wgsl.expected.glsl
index 2c57161..3761f17 100644
--- a/test/expressions/index/let/literal/array.wgsl.expected.glsl
+++ b/test/expressions/index/let/literal/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/literal/matrix.wgsl.expected.glsl b/test/expressions/index/let/literal/matrix.wgsl.expected.glsl
index c3c6f83..2c4e81a 100644
--- a/test/expressions/index/let/literal/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/let/literal/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/literal/vector.wgsl.expected.glsl b/test/expressions/index/let/literal/vector.wgsl.expected.glsl
index 42517d3..0f24df5 100644
--- a/test/expressions/index/let/literal/vector.wgsl.expected.glsl
+++ b/test/expressions/index/let/literal/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/param/array.wgsl.expected.glsl b/test/expressions/index/let/param/array.wgsl.expected.glsl
index 9b9cb7a..d7860c6 100644
--- a/test/expressions/index/let/param/array.wgsl.expected.glsl
+++ b/test/expressions/index/let/param/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/param/matrix.wgsl.expected.glsl b/test/expressions/index/let/param/matrix.wgsl.expected.glsl
index 56877ba..762d026 100644
--- a/test/expressions/index/let/param/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/let/param/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/param/vector.wgsl.expected.glsl b/test/expressions/index/let/param/vector.wgsl.expected.glsl
index 82f3ce9..b28ea6d 100644
--- a/test/expressions/index/let/param/vector.wgsl.expected.glsl
+++ b/test/expressions/index/let/param/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/var/literal/array.wgsl.expected.glsl b/test/expressions/index/let/var/literal/array.wgsl.expected.glsl
index 2c57161..3761f17 100644
--- a/test/expressions/index/let/var/literal/array.wgsl.expected.glsl
+++ b/test/expressions/index/let/var/literal/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/var/literal/matrix.wgsl.expected.glsl b/test/expressions/index/let/var/literal/matrix.wgsl.expected.glsl
index c3c6f83..2c4e81a 100644
--- a/test/expressions/index/let/var/literal/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/let/var/literal/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/let/var/literal/vector.wgsl.expected.glsl b/test/expressions/index/let/var/literal/vector.wgsl.expected.glsl
index 42517d3..0f24df5 100644
--- a/test/expressions/index/let/var/literal/vector.wgsl.expected.glsl
+++ b/test/expressions/index/let/var/literal/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/let/literal/array.wgsl.expected.glsl b/test/expressions/index/var/let/literal/array.wgsl.expected.glsl
index 2c57161..3761f17 100644
--- a/test/expressions/index/var/let/literal/array.wgsl.expected.glsl
+++ b/test/expressions/index/var/let/literal/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/let/literal/matrix.wgsl.expected.glsl b/test/expressions/index/var/let/literal/matrix.wgsl.expected.glsl
index c3c6f83..2c4e81a 100644
--- a/test/expressions/index/var/let/literal/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/var/let/literal/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/let/literal/vector.wgsl.expected.glsl b/test/expressions/index/var/let/literal/vector.wgsl.expected.glsl
index 42517d3..0f24df5 100644
--- a/test/expressions/index/var/let/literal/vector.wgsl.expected.glsl
+++ b/test/expressions/index/var/let/literal/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/let/param/array.wgsl.expected.glsl b/test/expressions/index/var/let/param/array.wgsl.expected.glsl
index 831e77b..575406a 100644
--- a/test/expressions/index/var/let/param/array.wgsl.expected.glsl
+++ b/test/expressions/index/var/let/param/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/let/param/matrix.wgsl.expected.glsl b/test/expressions/index/var/let/param/matrix.wgsl.expected.glsl
index e922171..13e265b 100644
--- a/test/expressions/index/var/let/param/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/var/let/param/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/let/param/vector.wgsl.expected.glsl b/test/expressions/index/var/let/param/vector.wgsl.expected.glsl
index 3f437d3..53eb8d8 100644
--- a/test/expressions/index/var/let/param/vector.wgsl.expected.glsl
+++ b/test/expressions/index/var/let/param/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/literal/array.wgsl.expected.glsl b/test/expressions/index/var/literal/array.wgsl.expected.glsl
index 2c57161..3761f17 100644
--- a/test/expressions/index/var/literal/array.wgsl.expected.glsl
+++ b/test/expressions/index/var/literal/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/literal/matrix.wgsl.expected.glsl b/test/expressions/index/var/literal/matrix.wgsl.expected.glsl
index c3c6f83..2c4e81a 100644
--- a/test/expressions/index/var/literal/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/var/literal/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/literal/vector.wgsl.expected.glsl b/test/expressions/index/var/literal/vector.wgsl.expected.glsl
index 42517d3..0f24df5 100644
--- a/test/expressions/index/var/literal/vector.wgsl.expected.glsl
+++ b/test/expressions/index/var/literal/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/param/array.wgsl.expected.glsl b/test/expressions/index/var/param/array.wgsl.expected.glsl
index 9b9cb7a..d7860c6 100644
--- a/test/expressions/index/var/param/array.wgsl.expected.glsl
+++ b/test/expressions/index/var/param/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/param/matrix.wgsl.expected.glsl b/test/expressions/index/var/param/matrix.wgsl.expected.glsl
index 56877ba..762d026 100644
--- a/test/expressions/index/var/param/matrix.wgsl.expected.glsl
+++ b/test/expressions/index/var/param/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/index/var/param/vector.wgsl.expected.glsl b/test/expressions/index/var/param/vector.wgsl.expected.glsl
index 82f3ce9..b28ea6d 100644
--- a/test/expressions/index/var/param/vector.wgsl.expected.glsl
+++ b/test/expressions/index/var/param/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/literals/intmin.wgsl.expected.glsl b/test/expressions/literals/intmin.wgsl.expected.glsl
index b7eb43a..06eeb7c 100644
--- a/test/expressions/literals/intmin.wgsl.expected.glsl
+++ b/test/expressions/literals/intmin.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/call/bool.wgsl.expected.glsl b/test/expressions/splat/call/bool.wgsl.expected.glsl
index 16633fe..1966c37 100644
--- a/test/expressions/splat/call/bool.wgsl.expected.glsl
+++ b/test/expressions/splat/call/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/call/f32.wgsl.expected.glsl b/test/expressions/splat/call/f32.wgsl.expected.glsl
index dc1186c..677314b 100644
--- a/test/expressions/splat/call/f32.wgsl.expected.glsl
+++ b/test/expressions/splat/call/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/call/i32.wgsl.expected.glsl b/test/expressions/splat/call/i32.wgsl.expected.glsl
index 02f78de..86fad46 100644
--- a/test/expressions/splat/call/i32.wgsl.expected.glsl
+++ b/test/expressions/splat/call/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/call/u32.wgsl.expected.glsl b/test/expressions/splat/call/u32.wgsl.expected.glsl
index 90eda55..801a93f 100644
--- a/test/expressions/splat/call/u32.wgsl.expected.glsl
+++ b/test/expressions/splat/call/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/expression/bool.wgsl.expected.glsl b/test/expressions/splat/expression/bool.wgsl.expected.glsl
index ca80c8a..6f0cd4c 100644
--- a/test/expressions/splat/expression/bool.wgsl.expected.glsl
+++ b/test/expressions/splat/expression/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/expression/f32.wgsl.expected.glsl b/test/expressions/splat/expression/f32.wgsl.expected.glsl
index d2bb8bc..2efc43d 100644
--- a/test/expressions/splat/expression/f32.wgsl.expected.glsl
+++ b/test/expressions/splat/expression/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/expression/i32.wgsl.expected.glsl b/test/expressions/splat/expression/i32.wgsl.expected.glsl
index 82a2959..aec2f1d 100644
--- a/test/expressions/splat/expression/i32.wgsl.expected.glsl
+++ b/test/expressions/splat/expression/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/expression/u32.wgsl.expected.glsl b/test/expressions/splat/expression/u32.wgsl.expected.glsl
index 8e05244..b889470 100644
--- a/test/expressions/splat/expression/u32.wgsl.expected.glsl
+++ b/test/expressions/splat/expression/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/immediate/bool.wgsl.expected.glsl b/test/expressions/splat/immediate/bool.wgsl.expected.glsl
index 0ec75bc..d295feb 100644
--- a/test/expressions/splat/immediate/bool.wgsl.expected.glsl
+++ b/test/expressions/splat/immediate/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/immediate/f32.wgsl.expected.glsl b/test/expressions/splat/immediate/f32.wgsl.expected.glsl
index 7012845..a5a205b 100644
--- a/test/expressions/splat/immediate/f32.wgsl.expected.glsl
+++ b/test/expressions/splat/immediate/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/immediate/i32.wgsl.expected.glsl b/test/expressions/splat/immediate/i32.wgsl.expected.glsl
index 2e4a6a5..13f4573 100644
--- a/test/expressions/splat/immediate/i32.wgsl.expected.glsl
+++ b/test/expressions/splat/immediate/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/immediate/u32.wgsl.expected.glsl b/test/expressions/splat/immediate/u32.wgsl.expected.glsl
index 3c529d1..9dbaa76 100644
--- a/test/expressions/splat/immediate/u32.wgsl.expected.glsl
+++ b/test/expressions/splat/immediate/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/var/bool.wgsl.expected.glsl b/test/expressions/splat/var/bool.wgsl.expected.glsl
index 924011b..35abbf2 100644
--- a/test/expressions/splat/var/bool.wgsl.expected.glsl
+++ b/test/expressions/splat/var/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/var/f32.wgsl.expected.glsl b/test/expressions/splat/var/f32.wgsl.expected.glsl
index 40b8340..fc53821 100644
--- a/test/expressions/splat/var/f32.wgsl.expected.glsl
+++ b/test/expressions/splat/var/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/var/i32.wgsl.expected.glsl b/test/expressions/splat/var/i32.wgsl.expected.glsl
index faa5409..7c1f53d 100644
--- a/test/expressions/splat/var/i32.wgsl.expected.glsl
+++ b/test/expressions/splat/var/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/var/u32.wgsl.expected.glsl b/test/expressions/splat/var/u32.wgsl.expected.glsl
index 3d0927b..5ce7291 100644
--- a/test/expressions/splat/var/u32.wgsl.expected.glsl
+++ b/test/expressions/splat/var/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/splat/with_swizzle/f32.wgsl.expected.glsl b/test/expressions/splat/with_swizzle/f32.wgsl.expected.glsl
index db23e58..3493354 100644
--- a/test/expressions/splat/with_swizzle/f32.wgsl.expected.glsl
+++ b/test/expressions/splat/with_swizzle/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl
index eb59c12..f71e8a0 100644
--- a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl
index 8454ca3..fe7dd72 100644
--- a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl
index ce95fc9..7725962 100644
--- a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/read/vec3/f32.wgsl.expected.glsl b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.glsl
index 5f295d0..1464759 100644
--- a/test/expressions/swizzle/read/vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/read/vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/read/vec3/i32.wgsl.expected.glsl b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.glsl
index 9f30906..f269cc0 100644
--- a/test/expressions/swizzle/read/vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/read/vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/read/vec3/u32.wgsl.expected.glsl b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.glsl
index fa3357d..4aa98c6 100644
--- a/test/expressions/swizzle/read/vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/read/vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl
index f85921e..b4cdda6 100644
--- a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl
index 64d86eb..bde8b4c 100644
--- a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl
index 358bf4f..a5e6745 100644
--- a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/write/vec3/f32.wgsl.expected.glsl b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.glsl
index e8e796e..e68f7f9 100644
--- a/test/expressions/swizzle/write/vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/write/vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/write/vec3/i32.wgsl.expected.glsl b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.glsl
index 3e37362..dca4ae4 100644
--- a/test/expressions/swizzle/write/vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/write/vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/swizzle/write/vec3/u32.wgsl.expected.glsl b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.glsl
index 577feeb..728c92e 100644
--- a/test/expressions/swizzle/write/vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/swizzle/write/vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.glsl
index 92979b1..f79600e 100644
--- a/test/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x2/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.glsl
index 515cbea..f2eeed5 100644
--- a/test/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x2/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.glsl
index 92979b1..f79600e 100644
--- a/test/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x2/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.glsl
index 515cbea..f2eeed5 100644
--- a/test/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x2/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.glsl
index 86412db..ea329c5 100644
--- a/test/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x3/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.glsl
index 13f37ec..919400a 100644
--- a/test/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x3/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.glsl
index 86412db..ea329c5 100644
--- a/test/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x3/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.glsl
index 13f37ec..919400a 100644
--- a/test/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x3/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.glsl
index 35bc633..6ee3601 100644
--- a/test/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x4/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.glsl
index 34fe0f3..461bebd 100644
--- a/test/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x4/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.glsl
index 35bc633..6ee3601 100644
--- a/test/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x4/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.glsl
index 34fe0f3..461bebd 100644
--- a/test/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat2x4/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.glsl
index 6f17570..ee6b9c0 100644
--- a/test/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x2/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.glsl
index ddeadd0..1447967 100644
--- a/test/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x2/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.glsl
index 6f17570..ee6b9c0 100644
--- a/test/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x2/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.glsl
index ddeadd0..1447967 100644
--- a/test/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x2/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.glsl
index a0f6c5c..0006430 100644
--- a/test/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x3/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.glsl
index a1ad3fc..f4631cb 100644
--- a/test/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x3/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.glsl
index a0f6c5c..0006430 100644
--- a/test/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x3/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.glsl
index a1ad3fc..f4631cb 100644
--- a/test/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x3/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.glsl
index 6fde078..824c533 100644
--- a/test/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x4/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.glsl
index 9643577..2b8f578 100644
--- a/test/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x4/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.glsl
index 6fde078..824c533 100644
--- a/test/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x4/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.glsl
index 9643577..2b8f578 100644
--- a/test/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat3x4/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.glsl
index 78e98c0..864c631 100644
--- a/test/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x2/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.glsl
index ddec8a9..93ae98c 100644
--- a/test/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x2/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.glsl
index 78e98c0..864c631 100644
--- a/test/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x2/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.glsl
index ddec8a9..93ae98c 100644
--- a/test/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x2/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.glsl
index f4bcaf0..d18bd37 100644
--- a/test/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x3/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.glsl
index 4771ae3..532369f 100644
--- a/test/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x3/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.glsl
index f4bcaf0..d18bd37 100644
--- a/test/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x3/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.glsl
index 4771ae3..532369f 100644
--- a/test/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x3/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.glsl
index c6993a3..c1bb385 100644
--- a/test/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x4/explicit/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.glsl
index 77abecf..b86a544 100644
--- a/test/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x4/explicit/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.glsl
index c6993a3..c1bb385 100644
--- a/test/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x4/inferred/scalars/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.glsl b/test/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.glsl
index 77abecf..b86a544 100644
--- a/test/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/mat4x4/inferred/vectors/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/explicit/bool.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/explicit/bool.wgsl.expected.glsl
index 53db389..bfd0cb7 100644
--- a/test/expressions/type_ctor/vec2/explicit/bool.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/explicit/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/explicit/f32.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/explicit/f32.wgsl.expected.glsl
index c340fed..af91949 100644
--- a/test/expressions/type_ctor/vec2/explicit/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/explicit/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/explicit/i32.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/explicit/i32.wgsl.expected.glsl
index 2d59050..ebef7ff 100644
--- a/test/expressions/type_ctor/vec2/explicit/i32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/explicit/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/explicit/u32.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/explicit/u32.wgsl.expected.glsl
index 743b580..9630097 100644
--- a/test/expressions/type_ctor/vec2/explicit/u32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/explicit/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/inferred/bool.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/inferred/bool.wgsl.expected.glsl
index 53db389..bfd0cb7 100644
--- a/test/expressions/type_ctor/vec2/inferred/bool.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/inferred/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/inferred/f32.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/inferred/f32.wgsl.expected.glsl
index c340fed..af91949 100644
--- a/test/expressions/type_ctor/vec2/inferred/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/inferred/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/inferred/i32.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/inferred/i32.wgsl.expected.glsl
index 2d59050..ebef7ff 100644
--- a/test/expressions/type_ctor/vec2/inferred/i32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/inferred/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec2/inferred/u32.wgsl.expected.glsl b/test/expressions/type_ctor/vec2/inferred/u32.wgsl.expected.glsl
index 743b580..9630097 100644
--- a/test/expressions/type_ctor/vec2/inferred/u32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec2/inferred/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec3/explicit/bool.wgsl.expected.glsl b/test/expressions/type_ctor/vec3/explicit/bool.wgsl.expected.glsl
index f8392fa..e7d7818 100644
--- a/test/expressions/type_ctor/vec3/explicit/bool.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec3/explicit/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec3/explicit/f32.wgsl.expected.glsl b/test/expressions/type_ctor/vec3/explicit/f32.wgsl.expected.glsl
index 78cfca3..9f73b75 100644
--- a/test/expressions/type_ctor/vec3/explicit/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec3/explicit/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec3/explicit/i32.wgsl.expected.glsl b/test/expressions/type_ctor/vec3/explicit/i32.wgsl.expected.glsl
index 3b8d407..0392e70 100644
--- a/test/expressions/type_ctor/vec3/explicit/i32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec3/explicit/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec3/explicit/u32.wgsl.expected.glsl b/test/expressions/type_ctor/vec3/explicit/u32.wgsl.expected.glsl
index 3f48c28..1aabf2d 100644
--- a/test/expressions/type_ctor/vec3/explicit/u32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec3/explicit/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec4/explicit/bool.wgsl.expected.glsl b/test/expressions/type_ctor/vec4/explicit/bool.wgsl.expected.glsl
index 8ff5927..11236db 100644
--- a/test/expressions/type_ctor/vec4/explicit/bool.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec4/explicit/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec4/explicit/f32.wgsl.expected.glsl b/test/expressions/type_ctor/vec4/explicit/f32.wgsl.expected.glsl
index 7833b9e..254bda9 100644
--- a/test/expressions/type_ctor/vec4/explicit/f32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec4/explicit/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec4/explicit/i32.wgsl.expected.glsl b/test/expressions/type_ctor/vec4/explicit/i32.wgsl.expected.glsl
index 8f18e6f..77c907b 100644
--- a/test/expressions/type_ctor/vec4/explicit/i32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec4/explicit/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/type_ctor/vec4/explicit/u32.wgsl.expected.glsl b/test/expressions/type_ctor/vec4/explicit/u32.wgsl.expected.glsl
index 6f3e96a..a6bfcae 100644
--- a/test/expressions/type_ctor/vec4/explicit/u32.wgsl.expected.glsl
+++ b/test/expressions/type_ctor/vec4/explicit/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/unary/complement/complement.wgsl.expected.glsl b/test/expressions/unary/complement/complement.wgsl.expected.glsl
index e32ab12..7db4b24 100644
--- a/test/expressions/unary/complement/complement.wgsl.expected.glsl
+++ b/test/expressions/unary/complement/complement.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/unary/negate/negate.wgsl.expected.glsl b/test/expressions/unary/negate/negate.wgsl.expected.glsl
index f1ffb81..d2fd3e1 100644
--- a/test/expressions/unary/negate/negate.wgsl.expected.glsl
+++ b/test/expressions/unary/negate/negate.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/array/bool.wgsl.expected.glsl b/test/expressions/zero_init/array/bool.wgsl.expected.glsl
index 8463695..2b5c061 100644
--- a/test/expressions/zero_init/array/bool.wgsl.expected.glsl
+++ b/test/expressions/zero_init/array/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/array/f32.wgsl.expected.glsl b/test/expressions/zero_init/array/f32.wgsl.expected.glsl
index fb9331f..1f352f1 100644
--- a/test/expressions/zero_init/array/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/array/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/array/i32.wgsl.expected.glsl b/test/expressions/zero_init/array/i32.wgsl.expected.glsl
index 50e3677..5b7d2b9 100644
--- a/test/expressions/zero_init/array/i32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/array/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/array/struct.wgsl.expected.glsl b/test/expressions/zero_init/array/struct.wgsl.expected.glsl
index 778e1ae..133ada4 100644
--- a/test/expressions/zero_init/array/struct.wgsl.expected.glsl
+++ b/test/expressions/zero_init/array/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/array/u32.wgsl.expected.glsl b/test/expressions/zero_init/array/u32.wgsl.expected.glsl
index 98e243c..56da9dc 100644
--- a/test/expressions/zero_init/array/u32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/array/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat2x2/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat2x2/f32.wgsl.expected.glsl
index 9f518ca..e9d2689 100644
--- a/test/expressions/zero_init/mat2x2/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat2x2/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat2x3/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat2x3/f32.wgsl.expected.glsl
index 0165c1f..3f6a357 100644
--- a/test/expressions/zero_init/mat2x3/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat2x3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat2x4/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat2x4/f32.wgsl.expected.glsl
index ce479c3..83704ab 100644
--- a/test/expressions/zero_init/mat2x4/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat2x4/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat3x2/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat3x2/f32.wgsl.expected.glsl
index fb67a2d..08b7b21 100644
--- a/test/expressions/zero_init/mat3x2/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat3x2/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat3x3/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat3x3/f32.wgsl.expected.glsl
index 5310b75..f0ba4a9 100644
--- a/test/expressions/zero_init/mat3x3/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat3x3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat3x4/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat3x4/f32.wgsl.expected.glsl
index dd175f9..45b100c 100644
--- a/test/expressions/zero_init/mat3x4/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat3x4/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat4x2/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat4x2/f32.wgsl.expected.glsl
index 0f2b794..5c7e392 100644
--- a/test/expressions/zero_init/mat4x2/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat4x2/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat4x3/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat4x3/f32.wgsl.expected.glsl
index 28efe1a..998cfc1 100644
--- a/test/expressions/zero_init/mat4x3/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat4x3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/mat4x4/f32.wgsl.expected.glsl b/test/expressions/zero_init/mat4x4/f32.wgsl.expected.glsl
index c31c721..aaa3044 100644
--- a/test/expressions/zero_init/mat4x4/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/mat4x4/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/scalar/bool.wgsl.expected.glsl b/test/expressions/zero_init/scalar/bool.wgsl.expected.glsl
index e8f01b5..02043d5 100644
--- a/test/expressions/zero_init/scalar/bool.wgsl.expected.glsl
+++ b/test/expressions/zero_init/scalar/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/scalar/f32.wgsl.expected.glsl b/test/expressions/zero_init/scalar/f32.wgsl.expected.glsl
index bd43369..f80f8e0 100644
--- a/test/expressions/zero_init/scalar/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/scalar/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/scalar/i32.wgsl.expected.glsl b/test/expressions/zero_init/scalar/i32.wgsl.expected.glsl
index 255d2f8..4b070ba 100644
--- a/test/expressions/zero_init/scalar/i32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/scalar/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/scalar/u32.wgsl.expected.glsl b/test/expressions/zero_init/scalar/u32.wgsl.expected.glsl
index 09d837d..a673f78 100644
--- a/test/expressions/zero_init/scalar/u32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/scalar/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/struct/array.wgsl.expected.glsl b/test/expressions/zero_init/struct/array.wgsl.expected.glsl
index cce4114..4243661 100644
--- a/test/expressions/zero_init/struct/array.wgsl.expected.glsl
+++ b/test/expressions/zero_init/struct/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/struct/scalar.wgsl.expected.glsl b/test/expressions/zero_init/struct/scalar.wgsl.expected.glsl
index 1b3576b..cf7d496 100644
--- a/test/expressions/zero_init/struct/scalar.wgsl.expected.glsl
+++ b/test/expressions/zero_init/struct/scalar.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec2/bool.wgsl.expected.glsl b/test/expressions/zero_init/vec2/bool.wgsl.expected.glsl
index 35b4dcb..fb81022 100644
--- a/test/expressions/zero_init/vec2/bool.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec2/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec2/f32.wgsl.expected.glsl b/test/expressions/zero_init/vec2/f32.wgsl.expected.glsl
index 51e9cb8..a619be5 100644
--- a/test/expressions/zero_init/vec2/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec2/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec2/i32.wgsl.expected.glsl b/test/expressions/zero_init/vec2/i32.wgsl.expected.glsl
index ce483b6..fe7adc5 100644
--- a/test/expressions/zero_init/vec2/i32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec2/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec2/u32.wgsl.expected.glsl b/test/expressions/zero_init/vec2/u32.wgsl.expected.glsl
index 749cdc7..c40ee0b 100644
--- a/test/expressions/zero_init/vec2/u32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec2/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec3/bool.wgsl.expected.glsl b/test/expressions/zero_init/vec3/bool.wgsl.expected.glsl
index 678919b..3582149 100644
--- a/test/expressions/zero_init/vec3/bool.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec3/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec3/f32.wgsl.expected.glsl b/test/expressions/zero_init/vec3/f32.wgsl.expected.glsl
index 5468322..113de8b 100644
--- a/test/expressions/zero_init/vec3/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec3/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec3/i32.wgsl.expected.glsl b/test/expressions/zero_init/vec3/i32.wgsl.expected.glsl
index b489724..fe9a4cd 100644
--- a/test/expressions/zero_init/vec3/i32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec3/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec3/u32.wgsl.expected.glsl b/test/expressions/zero_init/vec3/u32.wgsl.expected.glsl
index dd49140..1512778 100644
--- a/test/expressions/zero_init/vec3/u32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec3/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec4/bool.wgsl.expected.glsl b/test/expressions/zero_init/vec4/bool.wgsl.expected.glsl
index 0177ac8..21a558f 100644
--- a/test/expressions/zero_init/vec4/bool.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec4/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec4/f32.wgsl.expected.glsl b/test/expressions/zero_init/vec4/f32.wgsl.expected.glsl
index 839fe03..09d7ecb 100644
--- a/test/expressions/zero_init/vec4/f32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec4/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec4/i32.wgsl.expected.glsl b/test/expressions/zero_init/vec4/i32.wgsl.expected.glsl
index 8c06b10..52b1af7 100644
--- a/test/expressions/zero_init/vec4/i32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec4/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/expressions/zero_init/vec4/u32.wgsl.expected.glsl b/test/expressions/zero_init/vec4/u32.wgsl.expected.glsl
index 18cde8f..61fe7e5 100644
--- a/test/expressions/zero_init/vec4/u32.wgsl.expected.glsl
+++ b/test/expressions/zero_init/vec4/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/double/alias.wgsl.expected.glsl b/test/identifiers/underscore/double/alias.wgsl.expected.glsl
index 302a366..db7defa 100644
--- a/test/identifiers/underscore/double/alias.wgsl.expected.glsl
+++ b/test/identifiers/underscore/double/alias.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/double/fn.wgsl.expected.glsl b/test/identifiers/underscore/double/fn.wgsl.expected.glsl
index 6ff4ef5..8e59b08 100644
--- a/test/identifiers/underscore/double/fn.wgsl.expected.glsl
+++ b/test/identifiers/underscore/double/fn.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/double/let.wgsl.expected.glsl b/test/identifiers/underscore/double/let.wgsl.expected.glsl
index 0adb0da..a0bbe15 100644
--- a/test/identifiers/underscore/double/let.wgsl.expected.glsl
+++ b/test/identifiers/underscore/double/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/double/parameter.wgsl.expected.glsl b/test/identifiers/underscore/double/parameter.wgsl.expected.glsl
index 55acbfa..1c7262a 100644
--- a/test/identifiers/underscore/double/parameter.wgsl.expected.glsl
+++ b/test/identifiers/underscore/double/parameter.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/double/struct.wgsl.expected.glsl b/test/identifiers/underscore/double/struct.wgsl.expected.glsl
index d397b8d..9eb009e 100644
--- a/test/identifiers/underscore/double/struct.wgsl.expected.glsl
+++ b/test/identifiers/underscore/double/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/double/var.wgsl.expected.glsl b/test/identifiers/underscore/double/var.wgsl.expected.glsl
index 29bf5e7..f61376a 100644
--- a/test/identifiers/underscore/double/var.wgsl.expected.glsl
+++ b/test/identifiers/underscore/double/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/lower/alias.wgsl.expected.glsl b/test/identifiers/underscore/prefix/lower/alias.wgsl.expected.glsl
index 302a366..db7defa 100644
--- a/test/identifiers/underscore/prefix/lower/alias.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/lower/alias.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/lower/fn.wgsl.expected.glsl b/test/identifiers/underscore/prefix/lower/fn.wgsl.expected.glsl
index 874eea1..c3a5512 100644
--- a/test/identifiers/underscore/prefix/lower/fn.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/lower/fn.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl b/test/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl
index 4729815..c5a6a9f 100644
--- a/test/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/lower/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/lower/parameter.wgsl.expected.glsl b/test/identifiers/underscore/prefix/lower/parameter.wgsl.expected.glsl
index a0f0b09..ebde067 100644
--- a/test/identifiers/underscore/prefix/lower/parameter.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/lower/parameter.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/lower/struct.wgsl.expected.glsl b/test/identifiers/underscore/prefix/lower/struct.wgsl.expected.glsl
index 501dd31..8e3754f 100644
--- a/test/identifiers/underscore/prefix/lower/struct.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/lower/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/lower/var.wgsl.expected.glsl b/test/identifiers/underscore/prefix/lower/var.wgsl.expected.glsl
index a81fcaa..1bab59c 100644
--- a/test/identifiers/underscore/prefix/lower/var.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/lower/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/upper/alias.wgsl.expected.glsl b/test/identifiers/underscore/prefix/upper/alias.wgsl.expected.glsl
index 302a366..db7defa 100644
--- a/test/identifiers/underscore/prefix/upper/alias.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/upper/alias.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/upper/fn.wgsl.expected.glsl b/test/identifiers/underscore/prefix/upper/fn.wgsl.expected.glsl
index a1c003b..33365c9 100644
--- a/test/identifiers/underscore/prefix/upper/fn.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/upper/fn.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl b/test/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl
index 68e9d79..ae9a9c8 100644
--- a/test/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/upper/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/upper/parameter.wgsl.expected.glsl b/test/identifiers/underscore/prefix/upper/parameter.wgsl.expected.glsl
index ea2409e..d69eb8e 100644
--- a/test/identifiers/underscore/prefix/upper/parameter.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/upper/parameter.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/upper/struct.wgsl.expected.glsl b/test/identifiers/underscore/prefix/upper/struct.wgsl.expected.glsl
index 09ea4e0..824f280 100644
--- a/test/identifiers/underscore/prefix/upper/struct.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/upper/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/identifiers/underscore/prefix/upper/var.wgsl.expected.glsl b/test/identifiers/underscore/prefix/upper/var.wgsl.expected.glsl
index 12474b5..e9a421c 100644
--- a/test/identifiers/underscore/prefix/upper/var.wgsl.expected.glsl
+++ b/test/identifiers/underscore/prefix/upper/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/layout/storage/mat2x2/f32.wgsl.expected.glsl b/test/layout/storage/mat2x2/f32.wgsl.expected.glsl
index 7c741c1..8f6ff79 100644
--- a/test/layout/storage/mat2x2/f32.wgsl.expected.glsl
+++ b/test/layout/storage/mat2x2/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct SSBO {
   mat2 m;
diff --git a/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl b/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
index d724455..1c057f3 100644
--- a/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
+++ b/test/layout/storage/mat2x2/stride/16.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct strided_arr {
   vec2 el;
diff --git a/test/loops/continue_in_switch.wgsl.expected.glsl b/test/loops/continue_in_switch.wgsl.expected.glsl
index 3435a15..9678a12 100644
--- a/test/loops/continue_in_switch.wgsl.expected.glsl
+++ b/test/loops/continue_in_switch.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   {
diff --git a/test/loops/loop.wgsl.expected.glsl b/test/loops/loop.wgsl.expected.glsl
index 04f42c4..07f90fd 100644
--- a/test/loops/loop.wgsl.expected.glsl
+++ b/test/loops/loop.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/loops/loop_with_continuing.wgsl.expected.glsl b/test/loops/loop_with_continuing.wgsl.expected.glsl
index d4b52d3..fb08c76 100644
--- a/test/loops/loop_with_continuing.wgsl.expected.glsl
+++ b/test/loops/loop_with_continuing.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/loops/nested_loops.wgsl.expected.glsl b/test/loops/nested_loops.wgsl.expected.glsl
index 50c0bfc..797f457 100644
--- a/test/loops/nested_loops.wgsl.expected.glsl
+++ b/test/loops/nested_loops.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/loops/nested_loops_with_continuing.wgsl.expected.glsl b/test/loops/nested_loops_with_continuing.wgsl.expected.glsl
index b096d76..8bb824d 100644
--- a/test/loops/nested_loops_with_continuing.wgsl.expected.glsl
+++ b/test/loops/nested_loops_with_continuing.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/ptr_ref/access/matrix.spvasm.expected.glsl b/test/ptr_ref/access/matrix.spvasm.expected.glsl
index 6c65c77..847b175 100644
--- a/test/ptr_ref/access/matrix.spvasm.expected.glsl
+++ b/test/ptr_ref/access/matrix.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   mat3 m = mat3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/ptr_ref/access/matrix.wgsl.expected.glsl b/test/ptr_ref/access/matrix.wgsl.expected.glsl
index f6caf8b..c1b09b2 100644
--- a/test/ptr_ref/access/matrix.wgsl.expected.glsl
+++ b/test/ptr_ref/access/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   mat3 m = mat3(vec3(1.0f, 2.0f, 3.0f), vec3(4.0f, 5.0f, 6.0f), vec3(7.0f, 8.0f, 9.0f));
diff --git a/test/ptr_ref/copy/ptr_copy.spvasm.expected.glsl b/test/ptr_ref/copy/ptr_copy.spvasm.expected.glsl
index 3a58404..79201a1 100644
--- a/test/ptr_ref/copy/ptr_copy.spvasm.expected.glsl
+++ b/test/ptr_ref/copy/ptr_copy.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint x_10 = 0u;
diff --git a/test/ptr_ref/load/global/i32.spvasm.expected.glsl b/test/ptr_ref/load/global/i32.spvasm.expected.glsl
index 7835a4e..5a32b52 100644
--- a/test/ptr_ref/load/global/i32.spvasm.expected.glsl
+++ b/test/ptr_ref/load/global/i32.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int I = 0;
 void main_1() {
diff --git a/test/ptr_ref/load/global/i32.wgsl.expected.glsl b/test/ptr_ref/load/global/i32.wgsl.expected.glsl
index 81649f5..aa41a94 100644
--- a/test/ptr_ref/load/global/i32.wgsl.expected.glsl
+++ b/test/ptr_ref/load/global/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int I = 0;
 void tint_symbol() {
diff --git a/test/ptr_ref/load/global/struct_field.spvasm.expected.glsl b/test/ptr_ref/load/global/struct_field.spvasm.expected.glsl
index c346181..a735c2b 100644
--- a/test/ptr_ref/load/global/struct_field.spvasm.expected.glsl
+++ b/test/ptr_ref/load/global/struct_field.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/ptr_ref/load/global/struct_field.wgsl.expected.glsl b/test/ptr_ref/load/global/struct_field.wgsl.expected.glsl
index 21fe14c..217d220 100644
--- a/test/ptr_ref/load/global/struct_field.wgsl.expected.glsl
+++ b/test/ptr_ref/load/global/struct_field.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/ptr_ref/load/local/i32.spvasm.expected.glsl b/test/ptr_ref/load/local/i32.spvasm.expected.glsl
index e7070ee..5320612 100644
--- a/test/ptr_ref/load/local/i32.spvasm.expected.glsl
+++ b/test/ptr_ref/load/local/i32.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   int i = 0;
diff --git a/test/ptr_ref/load/local/i32.wgsl.expected.glsl b/test/ptr_ref/load/local/i32.wgsl.expected.glsl
index 28669e2..64ed85e 100644
--- a/test/ptr_ref/load/local/i32.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   int i = 123;
diff --git a/test/ptr_ref/load/local/ptr_function.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_function.wgsl.expected.glsl
index 28669e2..64ed85e 100644
--- a/test/ptr_ref/load/local/ptr_function.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_function.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   int i = 123;
diff --git a/test/ptr_ref/load/local/ptr_private.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_private.wgsl.expected.glsl
index ac8ce2e..4add6dd 100644
--- a/test/ptr_ref/load/local/ptr_private.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_private.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int i = 123;
 void tint_symbol() {
diff --git a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl
index c8dfc57..e2b6f41 100644
--- a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int a;
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
index c8e4f21..6be3235 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int a;
diff --git a/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.glsl b/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.glsl
index 9b99e9b..c18863e 100644
--- a/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/ptr_workgroup.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int i;
 void tint_symbol(uint local_invocation_index) {
diff --git a/test/ptr_ref/load/local/struct_field.spvasm.expected.glsl b/test/ptr_ref/load/local/struct_field.spvasm.expected.glsl
index 911ddfa..d2dcda2 100644
--- a/test/ptr_ref/load/local/struct_field.spvasm.expected.glsl
+++ b/test/ptr_ref/load/local/struct_field.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/ptr_ref/load/local/struct_field.wgsl.expected.glsl b/test/ptr_ref/load/local/struct_field.wgsl.expected.glsl
index 972dc26..d39b9f4 100644
--- a/test/ptr_ref/load/local/struct_field.wgsl.expected.glsl
+++ b/test/ptr_ref/load/local/struct_field.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/ptr_ref/load/param/ptr.spvasm.expected.glsl b/test/ptr_ref/load/param/ptr.spvasm.expected.glsl
index 71fd1ce..71f3b3f 100644
--- a/test/ptr_ref/load/param/ptr.spvasm.expected.glsl
+++ b/test/ptr_ref/load/param/ptr.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int func(int value, inout int pointer) {
   int x_9 = pointer;
diff --git a/test/ptr_ref/load/param/ptr.wgsl.expected.glsl b/test/ptr_ref/load/param/ptr.wgsl.expected.glsl
index bf43c8a..459ec15 100644
--- a/test/ptr_ref/load/param/ptr.wgsl.expected.glsl
+++ b/test/ptr_ref/load/param/ptr.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int func(int value, inout int pointer) {
   return (value + pointer);
diff --git a/test/ptr_ref/store/global/i32.spvasm.expected.glsl b/test/ptr_ref/store/global/i32.spvasm.expected.glsl
index ca1d6fc..d5fb2c0 100644
--- a/test/ptr_ref/store/global/i32.spvasm.expected.glsl
+++ b/test/ptr_ref/store/global/i32.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int I = 0;
 void main_1() {
diff --git a/test/ptr_ref/store/global/i32.wgsl.expected.glsl b/test/ptr_ref/store/global/i32.wgsl.expected.glsl
index 5cc295b..0ea572e 100644
--- a/test/ptr_ref/store/global/i32.wgsl.expected.glsl
+++ b/test/ptr_ref/store/global/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int I = 0;
 void tint_symbol() {
diff --git a/test/ptr_ref/store/global/struct_field.spvasm.expected.glsl b/test/ptr_ref/store/global/struct_field.spvasm.expected.glsl
index dcde088..9d975b2 100644
--- a/test/ptr_ref/store/global/struct_field.spvasm.expected.glsl
+++ b/test/ptr_ref/store/global/struct_field.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/ptr_ref/store/local/i32.spvasm.expected.glsl b/test/ptr_ref/store/local/i32.spvasm.expected.glsl
index 188a6fe..ef59ef5 100644
--- a/test/ptr_ref/store/local/i32.spvasm.expected.glsl
+++ b/test/ptr_ref/store/local/i32.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void main_1() {
   int i = 0;
diff --git a/test/ptr_ref/store/local/i32.wgsl.expected.glsl b/test/ptr_ref/store/local/i32.wgsl.expected.glsl
index 8231764..1ccce1c 100644
--- a/test/ptr_ref/store/local/i32.wgsl.expected.glsl
+++ b/test/ptr_ref/store/local/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   int i = 123;
diff --git a/test/ptr_ref/store/local/struct_field.spvasm.expected.glsl b/test/ptr_ref/store/local/struct_field.spvasm.expected.glsl
index 33c17b2..3d5c0fe 100644
--- a/test/ptr_ref/store/local/struct_field.spvasm.expected.glsl
+++ b/test/ptr_ref/store/local/struct_field.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/ptr_ref/store/param/ptr.spvasm.expected.glsl b/test/ptr_ref/store/param/ptr.spvasm.expected.glsl
index 137fb05..b90efb1 100644
--- a/test/ptr_ref/store/param/ptr.spvasm.expected.glsl
+++ b/test/ptr_ref/store/param/ptr.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void func(int value, inout int pointer) {
   pointer = value;
diff --git a/test/ptr_ref/store/param/ptr.wgsl.expected.glsl b/test/ptr_ref/store/param/ptr.wgsl.expected.glsl
index 6599e3b..8b6d156 100644
--- a/test/ptr_ref/store/param/ptr.wgsl.expected.glsl
+++ b/test/ptr_ref/store/param/ptr.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void func(int value, inout int pointer) {
   pointer = value;
diff --git a/test/samples/compute_boids.wgsl.expected.glsl b/test/samples/compute_boids.wgsl.expected.glsl
index 44aa80c..0c330e3 100644
--- a/test/samples/compute_boids.wgsl.expected.glsl
+++ b/test/samples/compute_boids.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec2 a_particlePos_1;
 layout(location = 1) in vec2 a_particleVel_1;
@@ -69,7 +68,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 struct Particle {
   vec2 pos;
diff --git a/test/samples/cube.wgsl.expected.glsl b/test/samples/cube.wgsl.expected.glsl
index ffa40ce..6dbc544 100644
--- a/test/samples/cube.wgsl.expected.glsl
+++ b/test/samples/cube.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec4 cur_position_1;
 layout(location = 1) in vec4 color_1;
diff --git a/test/samples/function.wgsl.expected.glsl b/test/samples/function.wgsl.expected.glsl
index e323318..c1b3bd4 100644
--- a/test/samples/function.wgsl.expected.glsl
+++ b/test/samples/function.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void ep() {
 }
diff --git a/test/samples/simple_vertex.spvasm.expected.glsl b/test/samples/simple_vertex.spvasm.expected.glsl
index e2d9123..b6eb29b 100644
--- a/test/samples/simple_vertex.spvasm.expected.glsl
+++ b/test/samples/simple_vertex.spvasm.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol = vec4(0.0f, 0.0f, 0.0f, 0.0f);
 void main_1() {
diff --git a/test/samples/triangle.wgsl.expected.glsl b/test/samples/triangle.wgsl.expected.glsl
index c69afa9..ca77690 100644
--- a/test/samples/triangle.wgsl.expected.glsl
+++ b/test/samples/triangle.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 const vec2 pos[3] = vec2[3](vec2(0.0f, 0.5f), vec2(-0.5f, -0.5f), vec2(0.5f, -0.5f));
 vec4 vtx_main(uint VertexIndex) {
diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.glsl b/test/shader_io/compute_input_builtins.wgsl.expected.glsl
index 3c58f73..ef69b61 100644
--- a/test/shader_io/compute_input_builtins.wgsl.expected.glsl
+++ b/test/shader_io/compute_input_builtins.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol(uvec3 local_invocation_id, uint local_invocation_index, uvec3 global_invocation_id, uvec3 workgroup_id, uvec3 num_workgroups) {
   uint foo = ((((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x) + num_workgroups.x);
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.glsl b/test/shader_io/compute_input_builtins_struct.wgsl.expected.glsl
index 776ec7e..e0c2158 100644
--- a/test/shader_io/compute_input_builtins_struct.wgsl.expected.glsl
+++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct ComputeInputs {
   uvec3 local_invocation_id;
diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.glsl b/test/shader_io/compute_input_mixed.wgsl.expected.glsl
index 6b3683f..ffbf22b 100644
--- a/test/shader_io/compute_input_mixed.wgsl.expected.glsl
+++ b/test/shader_io/compute_input_mixed.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct ComputeInputs0 {
   uvec3 local_invocation_id;
diff --git a/test/shader_io/interpolate_integers.wgsl.expected.glsl b/test/shader_io/interpolate_integers.wgsl.expected.glsl
index 23e6831..4871866 100644
--- a/test/shader_io/interpolate_integers.wgsl.expected.glsl
+++ b/test/shader_io/interpolate_integers.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) flat out int i_1;
 layout(location = 1) flat out uint u_1;
diff --git a/test/shader_io/interpolate_return_struct.wgsl.expected.glsl b/test/shader_io/interpolate_return_struct.wgsl.expected.glsl
index 5d0b07f..43e855d 100644
--- a/test/shader_io/interpolate_return_struct.wgsl.expected.glsl
+++ b/test/shader_io/interpolate_return_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) out float none_1;
 layout(location = 1) flat out float tint_symbol_2;
diff --git a/test/shader_io/invariant.wgsl.expected.glsl b/test/shader_io/invariant.wgsl.expected.glsl
index f8f98d7..5137c04 100644
--- a/test/shader_io/invariant.wgsl.expected.glsl
+++ b/test/shader_io/invariant.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol() {
   return vec4(0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/shader_io/invariant_struct_member.wgsl.expected.glsl b/test/shader_io/invariant_struct_member.wgsl.expected.glsl
index 5f01801..55cc093 100644
--- a/test/shader_io/invariant_struct_member.wgsl.expected.glsl
+++ b/test/shader_io/invariant_struct_member.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Out {
   vec4 pos;
diff --git a/test/shader_io/shared_struct_different_stages.wgsl.expected.glsl b/test/shader_io/shared_struct_different_stages.wgsl.expected.glsl
index cac9b6b..0591201 100644
--- a/test/shader_io/shared_struct_different_stages.wgsl.expected.glsl
+++ b/test/shader_io/shared_struct_different_stages.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 1) out float col1_1;
 layout(location = 2) out float col2_1;
diff --git a/test/shader_io/shared_struct_helper_function.wgsl.expected.glsl b/test/shader_io/shared_struct_helper_function.wgsl.expected.glsl
index 34fecd5..4529302 100644
--- a/test/shader_io/shared_struct_helper_function.wgsl.expected.glsl
+++ b/test/shader_io/shared_struct_helper_function.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) flat out int loc0_1;
 struct VertexOutput {
@@ -25,7 +24,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 layout(location = 0) flat out int loc0_1;
 struct VertexOutput {
diff --git a/test/shader_io/vertex_input_builtins.wgsl.expected.glsl b/test/shader_io/vertex_input_builtins.wgsl.expected.glsl
index b8984e1..820926f 100644
--- a/test/shader_io/vertex_input_builtins.wgsl.expected.glsl
+++ b/test/shader_io/vertex_input_builtins.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol(uint vertex_index, uint instance_index) {
   uint foo = (vertex_index + instance_index);
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.glsl b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.glsl
index 2df4079..d525492 100644
--- a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.glsl
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct VertexInputs {
   uint vertex_index;
diff --git a/test/shader_io/vertex_input_locations.wgsl.expected.glsl b/test/shader_io/vertex_input_locations.wgsl.expected.glsl
index 2cf1f18..c373a83 100644
--- a/test/shader_io/vertex_input_locations.wgsl.expected.glsl
+++ b/test/shader_io/vertex_input_locations.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in int loc0_1;
 layout(location = 1) in uint loc1_1;
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl.expected.glsl b/test/shader_io/vertex_input_locations_struct.wgsl.expected.glsl
index 10cfd11..5d9e0cd 100644
--- a/test/shader_io/vertex_input_locations_struct.wgsl.expected.glsl
+++ b/test/shader_io/vertex_input_locations_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in int loc0_1;
 layout(location = 1) in uint loc1_1;
diff --git a/test/shader_io/vertex_input_mixed.wgsl.expected.glsl b/test/shader_io/vertex_input_mixed.wgsl.expected.glsl
index 86480f6..10aeee8 100644
--- a/test/shader_io/vertex_input_mixed.wgsl.expected.glsl
+++ b/test/shader_io/vertex_input_mixed.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in int loc0_1;
 layout(location = 1) in uint loc1_1;
diff --git a/test/shader_io/vertex_output_builtins.wgsl.expected.glsl b/test/shader_io/vertex_output_builtins.wgsl.expected.glsl
index eda2ca2..82c9804 100644
--- a/test/shader_io/vertex_output_builtins.wgsl.expected.glsl
+++ b/test/shader_io/vertex_output_builtins.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 vec4 tint_symbol() {
   return vec4(1.0f, 2.0f, 3.0f, 4.0f);
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.glsl b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.glsl
index 07fcbdc..6d7b325 100644
--- a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.glsl
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct VertexOutputs {
   vec4 position;
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl.expected.glsl b/test/shader_io/vertex_output_locations_struct.wgsl.expected.glsl
index ba1a70d..0d1ed58 100644
--- a/test/shader_io/vertex_output_locations_struct.wgsl.expected.glsl
+++ b/test/shader_io/vertex_output_locations_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(location = 0) flat out int loc0_1;
 layout(location = 1) flat out uint loc1_1;
diff --git a/test/shadowing/alias/let.wgsl.expected.glsl b/test/shadowing/alias/let.wgsl.expected.glsl
index 5044436..d037e83 100644
--- a/test/shadowing/alias/let.wgsl.expected.glsl
+++ b/test/shadowing/alias/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/alias/param.wgsl.expected.glsl b/test/shadowing/alias/param.wgsl.expected.glsl
index 5a0a77e..338e96f 100644
--- a/test/shadowing/alias/param.wgsl.expected.glsl
+++ b/test/shadowing/alias/param.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/alias/var.wgsl.expected.glsl b/test/shadowing/alias/var.wgsl.expected.glsl
index 5044436..d037e83 100644
--- a/test/shadowing/alias/var.wgsl.expected.glsl
+++ b/test/shadowing/alias/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/function/let.wgsl.expected.glsl b/test/shadowing/function/let.wgsl.expected.glsl
index d653a86..93314ea 100644
--- a/test/shadowing/function/let.wgsl.expected.glsl
+++ b/test/shadowing/function/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/function/param.wgsl.expected.glsl b/test/shadowing/function/param.wgsl.expected.glsl
index 56a01bd..0dd9224 100644
--- a/test/shadowing/function/param.wgsl.expected.glsl
+++ b/test/shadowing/function/param.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/function/var.wgsl.expected.glsl b/test/shadowing/function/var.wgsl.expected.glsl
index 9f37e92..6059809 100644
--- a/test/shadowing/function/var.wgsl.expected.glsl
+++ b/test/shadowing/function/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/param/function.wgsl.expected.glsl b/test/shadowing/param/function.wgsl.expected.glsl
index f039a15..0f4bf36 100644
--- a/test/shadowing/param/function.wgsl.expected.glsl
+++ b/test/shadowing/param/function.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/param/let.wgsl.expected.glsl b/test/shadowing/param/let.wgsl.expected.glsl
index 1b4f45f..b182178 100644
--- a/test/shadowing/param/let.wgsl.expected.glsl
+++ b/test/shadowing/param/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/param/var.wgsl.expected.glsl b/test/shadowing/param/var.wgsl.expected.glsl
index b78cdf3..c3dc873 100644
--- a/test/shadowing/param/var.wgsl.expected.glsl
+++ b/test/shadowing/param/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/struct/let.wgsl.expected.glsl b/test/shadowing/struct/let.wgsl.expected.glsl
index 9f37e92..6059809 100644
--- a/test/shadowing/struct/let.wgsl.expected.glsl
+++ b/test/shadowing/struct/let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/struct/param.wgsl.expected.glsl b/test/shadowing/struct/param.wgsl.expected.glsl
index 7ede4e9..bcbb839 100644
--- a/test/shadowing/struct/param.wgsl.expected.glsl
+++ b/test/shadowing/struct/param.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/shadowing/struct/var.wgsl.expected.glsl b/test/shadowing/struct/var.wgsl.expected.glsl
index 9f37e92..6059809 100644
--- a/test/shadowing/struct/var.wgsl.expected.glsl
+++ b/test/shadowing/struct/var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl
index 70da6a8..eb95861 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_body.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl
index b1e9af3..9f5f5e6 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_continuing.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl
index 656ae48..c8afc86 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/in_for_loop_init.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
index a5fbc3c..6be6f1e 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/indexing_with_side_effect_func.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl
index 423aebc..404b14e 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl
index da1702c..9bb2f42 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl
index 8a70eb4..5ce3d5d 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl
index fc3b5d0..5e12367 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_array_struct_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl
index ae445ac..6f4afcd 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl
index 9ac6327..10bd162 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_dynamic_array_struct_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl
index 98dbfd6..2cad6f6 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl
index a4067c0..afb7d80 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_multiple_arrays.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl
index a7d675b..00bb1bb 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_struct_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl
index 8cda8e5..87dad14 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/struct_vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
index 7ee613c..a5131ab 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/vector_assign.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl
index b1c086f3..8f46ee8 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl
index de6dbc7..addb30c 100644
--- a/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl
+++ b/test/statements/assign/indexed_assign_to_array_in_struct/via_pointer_arg.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct Uniforms {
   uint i;
diff --git a/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl b/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl
index 8a72b47..4017ce7 100644
--- a/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl
+++ b/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int arr[];
diff --git a/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl b/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl
index 8a72b47..4017ce7 100644
--- a/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl
+++ b/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(binding = 0, std430) buffer S_1 {
   int arr[];
diff --git a/test/statements/assign/phony/call.wgsl.expected.glsl b/test/statements/assign/phony/call.wgsl.expected.glsl
index dc676cb..ddb3914 100644
--- a/test/statements/assign/phony/call.wgsl.expected.glsl
+++ b/test/statements/assign/phony/call.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int f(int a, int b, int c) {
   return ((a * b) + c);
diff --git a/test/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl b/test/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl
index 9e1281f..3ce4c10 100644
--- a/test/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl
+++ b/test/statements/assign/phony/multiple_side_effects.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int f(int a, int b, int c) {
   return ((a * b) + c);
diff --git a/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl b/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl
index e1a9e20..521f510 100644
--- a/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl
+++ b/test/statements/assign/phony/storage_buffer.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl b/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
index 51b4213..44dd6cd 100644
--- a/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
+++ b/test/statements/assign/phony/uniform_buffer.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int i;
diff --git a/test/statements/for/basic.wgsl.expected.glsl b/test/statements/for/basic.wgsl.expected.glsl
index a624dcb..4ff5746 100644
--- a/test/statements/for/basic.wgsl.expected.glsl
+++ b/test/statements/for/basic.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/complex.wgsl.expected.glsl b/test/statements/for/complex.wgsl.expected.glsl
index 39f675d..29f1b24 100644
--- a/test/statements/for/complex.wgsl.expected.glsl
+++ b/test/statements/for/complex.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/condition/array_ctor.wgsl.expected.glsl b/test/statements/for/condition/array_ctor.wgsl.expected.glsl
index c02c4fb..bf6fed3 100644
--- a/test/statements/for/condition/array_ctor.wgsl.expected.glsl
+++ b/test/statements/for/condition/array_ctor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/condition/basic.wgsl.expected.glsl b/test/statements/for/condition/basic.wgsl.expected.glsl
index 5e1d92f..da08960 100644
--- a/test/statements/for/condition/basic.wgsl.expected.glsl
+++ b/test/statements/for/condition/basic.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/condition/struct_ctor.wgsl.expected.glsl b/test/statements/for/condition/struct_ctor.wgsl.expected.glsl
index ad8c2cb..f092079 100644
--- a/test/statements/for/condition/struct_ctor.wgsl.expected.glsl
+++ b/test/statements/for/condition/struct_ctor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/continuing/array_ctor.wgsl.expected.glsl b/test/statements/for/continuing/array_ctor.wgsl.expected.glsl
index 76006fd..9fb3a6a 100644
--- a/test/statements/for/continuing/array_ctor.wgsl.expected.glsl
+++ b/test/statements/for/continuing/array_ctor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/continuing/basic.wgsl.expected.glsl b/test/statements/for/continuing/basic.wgsl.expected.glsl
index cb625ad..1789f6c 100644
--- a/test/statements/for/continuing/basic.wgsl.expected.glsl
+++ b/test/statements/for/continuing/basic.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/continuing/struct_ctor.wgsl.expected.glsl b/test/statements/for/continuing/struct_ctor.wgsl.expected.glsl
index ca9a56c..5cdebf9 100644
--- a/test/statements/for/continuing/struct_ctor.wgsl.expected.glsl
+++ b/test/statements/for/continuing/struct_ctor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/empty.wgsl.expected.glsl b/test/statements/for/empty.wgsl.expected.glsl
index 097b941..8990ac6 100644
--- a/test/statements/for/empty.wgsl.expected.glsl
+++ b/test/statements/for/empty.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/initializer/array_ctor.wgsl.expected.glsl b/test/statements/for/initializer/array_ctor.wgsl.expected.glsl
index 7a30f6d..eeb0109 100644
--- a/test/statements/for/initializer/array_ctor.wgsl.expected.glsl
+++ b/test/statements/for/initializer/array_ctor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/initializer/basic.wgsl.expected.glsl b/test/statements/for/initializer/basic.wgsl.expected.glsl
index de3e1e6..0a05490 100644
--- a/test/statements/for/initializer/basic.wgsl.expected.glsl
+++ b/test/statements/for/initializer/basic.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/initializer/struct_ctor.wgsl.expected.glsl b/test/statements/for/initializer/struct_ctor.wgsl.expected.glsl
index 834287f..4c3a2cb 100644
--- a/test/statements/for/initializer/struct_ctor.wgsl.expected.glsl
+++ b/test/statements/for/initializer/struct_ctor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/for/scoping.wgsl.expected.glsl b/test/statements/for/scoping.wgsl.expected.glsl
index d9ee405..1f2c419 100644
--- a/test/statements/for/scoping.wgsl.expected.glsl
+++ b/test/statements/for/scoping.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void unused_entry_point() {
diff --git a/test/statements/switch/common.wgsl.expected.glsl b/test/statements/switch/common.wgsl.expected.glsl
index bd29110..688fe4b 100644
--- a/test/statements/switch/common.wgsl.expected.glsl
+++ b/test/statements/switch/common.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int i = 0;
diff --git a/test/statements/switch/fallthrough.wgsl.expected.glsl b/test/statements/switch/fallthrough.wgsl.expected.glsl
index 6a4628d..85c42c0 100644
--- a/test/statements/switch/fallthrough.wgsl.expected.glsl
+++ b/test/statements/switch/fallthrough.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int i = 0;
diff --git a/test/statements/switch/only_default_case.wgsl.expected.glsl b/test/statements/switch/only_default_case.wgsl.expected.glsl
index 0e94201..5c63da8 100644
--- a/test/statements/switch/only_default_case.wgsl.expected.glsl
+++ b/test/statements/switch/only_default_case.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void f() {
   int i = 0;
diff --git a/test/struct/type_constructor.wgsl.expected.glsl b/test/struct/type_constructor.wgsl.expected.glsl
index 12a8bfd..e300f8d 100644
--- a/test/struct/type_constructor.wgsl.expected.glsl
+++ b/test/struct/type_constructor.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S1 {
   int a;
diff --git a/test/types/function_scope_declarations.wgsl.expected.glsl b/test/types/function_scope_declarations.wgsl.expected.glsl
index 942b076..5ef25d5 100644
--- a/test/types/function_scope_declarations.wgsl.expected.glsl
+++ b/test/types/function_scope_declarations.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float a;
diff --git a/test/types/function_scope_var_conversions.wgsl.expected.glsl b/test/types/function_scope_var_conversions.wgsl.expected.glsl
index fd75b67..e91857e3 100644
--- a/test/types/function_scope_var_conversions.wgsl.expected.glsl
+++ b/test/types/function_scope_var_conversions.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   bool bool_var1 = bool(123u);
diff --git a/test/types/module_scope_let.wgsl.expected.glsl b/test/types/module_scope_let.wgsl.expected.glsl
index 5890360..966cd2a 100644
--- a/test/types/module_scope_let.wgsl.expected.glsl
+++ b/test/types/module_scope_let.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float a;
diff --git a/test/types/module_scope_var.wgsl.expected.glsl b/test/types/module_scope_var.wgsl.expected.glsl
index 75f8090..c9ffa11 100644
--- a/test/types/module_scope_var.wgsl.expected.glsl
+++ b/test/types/module_scope_var.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float a;
diff --git a/test/types/module_scope_var_conversions.wgsl.expected.glsl b/test/types/module_scope_var_conversions.wgsl.expected.glsl
index 75cc417..5e715e5 100644
--- a/test/types/module_scope_var_conversions.wgsl.expected.glsl
+++ b/test/types/module_scope_var_conversions.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 bool bool_var1 = bool(1u);
 bool bool_var2 = bool(1);
diff --git a/test/types/module_scope_var_initializers.wgsl.expected.glsl b/test/types/module_scope_var_initializers.wgsl.expected.glsl
index 75f8090..c9ffa11 100644
--- a/test/types/module_scope_var_initializers.wgsl.expected.glsl
+++ b/test/types/module_scope_var_initializers.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float a;
diff --git a/test/types/parameters.wgsl.expected.glsl b/test/types/parameters.wgsl.expected.glsl
index 5890360..966cd2a 100644
--- a/test/types/parameters.wgsl.expected.glsl
+++ b/test/types/parameters.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float a;
diff --git a/test/types/return_types.wgsl.expected.glsl b/test/types/return_types.wgsl.expected.glsl
index 5890360..966cd2a 100644
--- a/test/types/return_types.wgsl.expected.glsl
+++ b/test/types/return_types.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   float a;
diff --git a/test/types/sampler.wgsl.expected.glsl b/test/types/sampler.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/sampler.wgsl.expected.glsl
+++ b/test/types/sampler.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/struct_members.wgsl.expected.glsl b/test/types/struct_members.wgsl.expected.glsl
index edf65ff..f7d2db8 100644
--- a/test/types/struct_members.wgsl.expected.glsl
+++ b/test/types/struct_members.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S_inner {
   float a;
diff --git a/test/types/texture/depth/2d.wgsl.expected.glsl b/test/types/texture/depth/2d.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/depth/2d.wgsl.expected.glsl
+++ b/test/types/texture/depth/2d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/depth/2d_array.wgsl.expected.glsl b/test/types/texture/depth/2d_array.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/depth/2d_array.wgsl.expected.glsl
+++ b/test/types/texture/depth/2d_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/depth/cube.wgsl.expected.glsl b/test/types/texture/depth/cube.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/depth/cube.wgsl.expected.glsl
+++ b/test/types/texture/depth/cube.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/depth/cube_array.wgsl.expected.glsl b/test/types/texture/depth/cube_array.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/depth/cube_array.wgsl.expected.glsl
+++ b/test/types/texture/depth/cube_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/multisampled/2d.wgsl.expected.glsl b/test/types/texture/multisampled/2d.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/multisampled/2d.wgsl.expected.glsl
+++ b/test/types/texture/multisampled/2d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/sampled/1d.wgsl.expected.glsl b/test/types/texture/sampled/1d.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/sampled/1d.wgsl.expected.glsl
+++ b/test/types/texture/sampled/1d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/sampled/2d.wgsl.expected.glsl b/test/types/texture/sampled/2d.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/sampled/2d.wgsl.expected.glsl
+++ b/test/types/texture/sampled/2d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/sampled/2d_array.wgsl.expected.glsl b/test/types/texture/sampled/2d_array.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/sampled/2d_array.wgsl.expected.glsl
+++ b/test/types/texture/sampled/2d_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/sampled/3d.wgsl.expected.glsl b/test/types/texture/sampled/3d.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/sampled/3d.wgsl.expected.glsl
+++ b/test/types/texture/sampled/3d.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/sampled/cube.wgsl.expected.glsl b/test/types/texture/sampled/cube.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/sampled/cube.wgsl.expected.glsl
+++ b/test/types/texture/sampled/cube.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/sampled/cube_array.wgsl.expected.glsl b/test/types/texture/sampled/cube_array.wgsl.expected.glsl
index 035eaa1..5b9616f 100644
--- a/test/types/texture/sampled/cube_array.wgsl.expected.glsl
+++ b/test/types/texture/sampled/cube_array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
 }
diff --git a/test/types/texture/storage/1d.wgsl.expected.glsl b/test/types/texture/storage/1d.wgsl.expected.glsl
index 9b52e02..b79d46e 100644
--- a/test/types/texture/storage/1d.wgsl.expected.glsl
+++ b/test/types/texture/storage/1d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image1D t_rgba8unorm;
 layout(rgba8_snorm) uniform highp writeonly image1D t_rgba8snorm;
@@ -28,9 +27,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
-WARNING: 0:4: 'layout' : useless application of layout qualifier 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: 'image1D' : Reserved word. 
+WARNING: 0:3: 'layout' : useless application of layout qualifier 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/types/texture/storage/2d.wgsl.expected.glsl b/test/types/texture/storage/2d.wgsl.expected.glsl
index c249c5e..124451a 100644
--- a/test/types/texture/storage/2d.wgsl.expected.glsl
+++ b/test/types/texture/storage/2d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2D t_rgba8unorm;
 layout(rgba8_snorm) uniform highp writeonly image2D t_rgba8snorm;
@@ -28,8 +27,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:14: 'image load-store format' : not supported with this profile: es
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:13: 'image load-store format' : not supported with this profile: es
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/types/texture/storage/2d_array.wgsl.expected.glsl b/test/types/texture/storage/2d_array.wgsl.expected.glsl
index 3257b6d..b64b279 100644
--- a/test/types/texture/storage/2d_array.wgsl.expected.glsl
+++ b/test/types/texture/storage/2d_array.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image2DArray t_rgba8unorm;
 layout(rgba8_snorm) uniform highp writeonly image2DArray t_rgba8snorm;
@@ -28,8 +27,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:14: 'image load-store format' : not supported with this profile: es
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:13: 'image load-store format' : not supported with this profile: es
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/types/texture/storage/3d.wgsl.expected.glsl b/test/types/texture/storage/3d.wgsl.expected.glsl
index aa86231..5e597c6 100644
--- a/test/types/texture/storage/3d.wgsl.expected.glsl
+++ b/test/types/texture/storage/3d.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(rgba8) uniform highp writeonly image3D t_rgba8unorm;
 layout(rgba8_snorm) uniform highp writeonly image3D t_rgba8snorm;
@@ -28,8 +27,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:14: 'image load-store format' : not supported with this profile: es
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:13: 'image load-store format' : not supported with this profile: es
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.glsl
index 2367041..38a1359 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack4x8snorm(vec4 param_0) {
   int4 i = int4(round(clamp(param_0, -1.0, 1.0) * 127.0)) & 0xff;
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'int4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'int4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.glsl
index e54ecf4..83031c0 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack4x8unorm(vec4 param_0) {
   uint4 i = uint4(round(clamp(param_0, 0.0, 1.0) * 255.0));
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint4' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint4' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.glsl
index db08670..ec62e16 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_2.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16snorm(vec2 param_0) {
   int2 i = int2(round(clamp(param_0, -1.0, 1.0) * 32767.0)) & 0xffff;
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'int2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'int2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.glsl
index 990e9ed..754bb5b 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_3.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16unorm(vec2 param_0) {
   uint2 i = uint2(round(clamp(param_0, 0.0, 1.0) * 65535.0));
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.glsl
index 9f34b41..965070c 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_4.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 uint tint_pack2x16float(vec2 param_0) {
   uint2 i = f32tof16(param_0);
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: 'uint2' : undeclared identifier 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: 'uint2' : undeclared identifier 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.glsl
index fd349a8..ead9157 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_0.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_unpack4x8snorm(uint param_0) {
   int j = int(param_0);
@@ -47,8 +46,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'int4' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'int4' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.glsl
index ec19124..5bbf757 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_1.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec4 tint_unpack4x8unorm(uint param_0) {
   uint j = param_0;
@@ -47,8 +46,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'uint4' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'uint4' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.glsl
index cfa6431..57667cf 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_2.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16snorm(uint param_0) {
   int j = int(param_0);
@@ -47,8 +46,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'int2' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'int2' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.glsl
index 7b64532..023ac6d 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_3.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16unorm(uint param_0) {
   uint j = param_0;
@@ -47,8 +46,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: 'uint2' : undeclared identifier 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: 'uint2' : undeclared identifier 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.glsl
index 549c390..2ec29a6 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataUnpacking_Valid_4.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 vec2 tint_unpack2x16float(uint param_0) {
   uint i = param_0;
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp highp uint' and a right operand of type ' const int' (or there is no acceptable conversion)
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:5: '&' :  wrong operand types: no operation '&' exists that takes a left-hand operand of type ' temp highp uint' and a right operand of type ' const int' (or there is no acceptable conversion)
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.glsl
index fd9f71d..942f034 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Scalar_2.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:27: 'mad' : no matching overloaded function found 
-ERROR: 0:27: '' : compilation terminated 
+ERROR: 0:26: 'mad' : no matching overloaded function found 
+ERROR: 0:26: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.glsl
index b0c6584..e4f5be2 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_FloatingFloatingFloating_Vector_2.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -40,9 +39,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:27: 'mad' : no matching overloaded function found 
-ERROR: 0:27: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:27: '' : compilation terminated 
+ERROR: 0:26: 'mad' : no matching overloaded function found 
+ERROR: 0:26: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:26: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl
index df643c6..cb9c216 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_11.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:27: 'frac' : no matching overloaded function found 
-ERROR: 0:27: '' : compilation terminated 
+ERROR: 0:26: 'frac' : no matching overloaded function found 
+ERROR: 0:26: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl
index 9678ca6..a30f7e7 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Scalar_12.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:27: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:27: '' : compilation terminated 
+ERROR: 0:26: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:26: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl
index 65eaab6..be153b2 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_11.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -40,9 +39,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:27: 'frac' : no matching overloaded function found 
-ERROR: 0:27: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:27: '' : compilation terminated 
+ERROR: 0:26: 'frac' : no matching overloaded function found 
+ERROR: 0:26: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:26: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.glsl b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.glsl
index d88893e..2b3a549 100644
--- a/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_Floating_Floating_Vector_12.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -40,9 +39,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:27: 'rsqrt' : no matching overloaded function found 
-ERROR: 0:27: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of float'
-ERROR: 0:27: '' : compilation terminated 
+ERROR: 0:26: 'rsqrt' : no matching overloaded function found 
+ERROR: 0:26: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of float'
+ERROR: 0:26: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_In.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_In.spvasm.expected.glsl
index db21d74..5603045 100644
--- a/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_In.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_Interpolation_Flat_Vertex_In.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(location = 1) flat in uint x_1_param_1;
 layout(location = 2) flat in uvec2 x_2_param_1;
@@ -44,8 +43,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:4: '' : vertex input cannot be further qualified 
-ERROR: 0:4: '' : compilation terminated 
+ERROR: 0:3: '' : vertex input cannot be further qualified 
+ERROR: 0:3: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.glsl
index a822cbb..90d4fcd 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_IntVector.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.glsl
index 2c3f17f..0d0f715 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_IntVector_UintVector.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.glsl
index 3603039..14bc7ec 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Int.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.glsl
index 42c8966..26c3149 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Int_Uint.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.glsl
index 5207092..001332f 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_IntVector.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.glsl
index ff83998..b53a816 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_UintVector_UintVector.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.glsl
index 73cc16b..ed3e3e8 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Int.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,8 +21,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.glsl
index 1a25437..bb09555 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitCount_Uint_Uint.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'countbits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'countbits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.glsl
index e52852f..e2b906d 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_IntVector_IntVector.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'reversebits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'reversebits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.glsl
index 6651929..737138d 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Int_Int.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'reversebits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp int'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'reversebits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp int'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.glsl
index 84503b2..4cab6d4 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_UintVector_UintVector.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'reversebits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'reversebits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of uint'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.glsl
index f66b801..b0a9729 100644
--- a/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.glsl
+++ b/test/unittest/reader/spirv/SpvUnaryBitTest_BitReverse_Uint_Uint.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 void main_1() {
   uint u1 = 10u;
@@ -22,9 +21,9 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: 'reversebits' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp uint'
-ERROR: 0:9: '' : compilation terminated 
+ERROR: 0:8: 'reversebits' : no matching overloaded function found 
+ERROR: 0:8: '=' :  cannot convert from ' const float' to ' temp highp uint'
+ERROR: 0:8: '' : compilation terminated 
 ERROR: 3 compilation errors.  No code generated.
 
 
diff --git a/test/var/initialization/function/array.wgsl.expected.glsl b/test/var/initialization/function/array.wgsl.expected.glsl
index fde5eb7..645b82c 100644
--- a/test/var/initialization/function/array.wgsl.expected.glsl
+++ b/test/var/initialization/function/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   int v[3] = int[3](0, 0, 0);
diff --git a/test/var/initialization/function/matrix.wgsl.expected.glsl b/test/var/initialization/function/matrix.wgsl.expected.glsl
index 0c2c827..5ba25b8 100644
--- a/test/var/initialization/function/matrix.wgsl.expected.glsl
+++ b/test/var/initialization/function/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   mat2x3 v = mat2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/var/initialization/function/scalar.wgsl.expected.glsl b/test/var/initialization/function/scalar.wgsl.expected.glsl
index 109c321..cfc86f6 100644
--- a/test/var/initialization/function/scalar.wgsl.expected.glsl
+++ b/test/var/initialization/function/scalar.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   int v = 0;
diff --git a/test/var/initialization/function/struct.wgsl.expected.glsl b/test/var/initialization/function/struct.wgsl.expected.glsl
index 3cf59c5..224f621 100644
--- a/test/var/initialization/function/struct.wgsl.expected.glsl
+++ b/test/var/initialization/function/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int a;
diff --git a/test/var/initialization/function/vector.wgsl.expected.glsl b/test/var/initialization/function/vector.wgsl.expected.glsl
index 2d1c158..9bc02f0 100644
--- a/test/var/initialization/function/vector.wgsl.expected.glsl
+++ b/test/var/initialization/function/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 void tint_symbol() {
   ivec3 v = ivec3(0, 0, 0);
diff --git a/test/var/initialization/private/array.wgsl.expected.glsl b/test/var/initialization/private/array.wgsl.expected.glsl
index 52ecf93..7bbaf79 100644
--- a/test/var/initialization/private/array.wgsl.expected.glsl
+++ b/test/var/initialization/private/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int v[3] = int[3](0, 0, 0);
 void tint_symbol() {
diff --git a/test/var/initialization/private/matrix.wgsl.expected.glsl b/test/var/initialization/private/matrix.wgsl.expected.glsl
index 978af1a..abbfd63 100644
--- a/test/var/initialization/private/matrix.wgsl.expected.glsl
+++ b/test/var/initialization/private/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 mat2x3 v = mat2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
 void tint_symbol() {
diff --git a/test/var/initialization/private/scalar.wgsl.expected.glsl b/test/var/initialization/private/scalar.wgsl.expected.glsl
index 3ac79ef..07a3ca7 100644
--- a/test/var/initialization/private/scalar.wgsl.expected.glsl
+++ b/test/var/initialization/private/scalar.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int v = 0;
 void tint_symbol() {
diff --git a/test/var/initialization/private/struct.wgsl.expected.glsl b/test/var/initialization/private/struct.wgsl.expected.glsl
index 7226444..4c03f19 100644
--- a/test/var/initialization/private/struct.wgsl.expected.glsl
+++ b/test/var/initialization/private/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int a;
diff --git a/test/var/initialization/private/vector.wgsl.expected.glsl b/test/var/initialization/private/vector.wgsl.expected.glsl
index add8b0c..da3274b 100644
--- a/test/var/initialization/private/vector.wgsl.expected.glsl
+++ b/test/var/initialization/private/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 ivec3 v = ivec3(0, 0, 0);
 void tint_symbol() {
diff --git a/test/var/initialization/workgroup/array.wgsl.expected.glsl b/test/var/initialization/workgroup/array.wgsl.expected.glsl
index 6e695f1..0cb7390 100644
--- a/test/var/initialization/workgroup/array.wgsl.expected.glsl
+++ b/test/var/initialization/workgroup/array.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int v[3];
 void tint_symbol(uint local_invocation_index) {
diff --git a/test/var/initialization/workgroup/matrix.wgsl.expected.glsl b/test/var/initialization/workgroup/matrix.wgsl.expected.glsl
index 7e1c8f2..8a9d90a 100644
--- a/test/var/initialization/workgroup/matrix.wgsl.expected.glsl
+++ b/test/var/initialization/workgroup/matrix.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared mat2x3 v;
 void tint_symbol(uint local_invocation_index) {
diff --git a/test/var/initialization/workgroup/scalar.wgsl.expected.glsl b/test/var/initialization/workgroup/scalar.wgsl.expected.glsl
index b361c7f..e455a2b 100644
--- a/test/var/initialization/workgroup/scalar.wgsl.expected.glsl
+++ b/test/var/initialization/workgroup/scalar.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int v;
 void tint_symbol(uint local_invocation_index) {
diff --git a/test/var/initialization/workgroup/struct.wgsl.expected.glsl b/test/var/initialization/workgroup/struct.wgsl.expected.glsl
index dab558a..66f4cf9 100644
--- a/test/var/initialization/workgroup/struct.wgsl.expected.glsl
+++ b/test/var/initialization/workgroup/struct.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 struct S {
   int a;
diff --git a/test/var/initialization/workgroup/vector.wgsl.expected.glsl b/test/var/initialization/workgroup/vector.wgsl.expected.glsl
index 087b0e0..8db8861 100644
--- a/test/var/initialization/workgroup/vector.wgsl.expected.glsl
+++ b/test/var/initialization/workgroup/vector.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared ivec3 v;
 void tint_symbol(uint local_invocation_index) {
diff --git a/test/var/override/named/no_init/bool.wgsl.expected.glsl b/test/var/override/named/no_init/bool.wgsl.expected.glsl
index c182ddf..4df044d 100644
--- a/test/var/override/named/no_init/bool.wgsl.expected.glsl
+++ b/test/var/override/named/no_init/bool.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #error spec constant required for constant id 0
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 0  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 0  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/named/no_init/f32.wgsl.expected.glsl b/test/var/override/named/no_init/f32.wgsl.expected.glsl
index 44c356a..bb100ad 100644
--- a/test/var/override/named/no_init/f32.wgsl.expected.glsl
+++ b/test/var/override/named/no_init/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #error spec constant required for constant id 0
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 0  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 0  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/named/no_init/i32.wgsl.expected.glsl b/test/var/override/named/no_init/i32.wgsl.expected.glsl
index 0a75ccb..e443a44 100644
--- a/test/var/override/named/no_init/i32.wgsl.expected.glsl
+++ b/test/var/override/named/no_init/i32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #error spec constant required for constant id 0
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 0  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 0  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/named/no_init/u32.wgsl.expected.glsl b/test/var/override/named/no_init/u32.wgsl.expected.glsl
index cba0731..ba68f32 100644
--- a/test/var/override/named/no_init/u32.wgsl.expected.glsl
+++ b/test/var/override/named/no_init/u32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #error spec constant required for constant id 0
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 0  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 0  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/named/val_init/bool.wgsl.expected.glsl b/test/var/override/named/val_init/bool.wgsl.expected.glsl
index e739f3f..06d171d 100644
--- a/test/var/override/named/val_init/bool.wgsl.expected.glsl
+++ b/test/var/override/named/val_init/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 true
diff --git a/test/var/override/named/val_init/f32.wgsl.expected.glsl b/test/var/override/named/val_init/f32.wgsl.expected.glsl
index 8e7ca91..62ee1b4 100644
--- a/test/var/override/named/val_init/f32.wgsl.expected.glsl
+++ b/test/var/override/named/val_init/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 1.0f
diff --git a/test/var/override/named/val_init/i32.wgsl.expected.glsl b/test/var/override/named/val_init/i32.wgsl.expected.glsl
index 51c905a..299dbae 100644
--- a/test/var/override/named/val_init/i32.wgsl.expected.glsl
+++ b/test/var/override/named/val_init/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 1
diff --git a/test/var/override/named/val_init/u32.wgsl.expected.glsl b/test/var/override/named/val_init/u32.wgsl.expected.glsl
index 1e3043f..e1067f0 100644
--- a/test/var/override/named/val_init/u32.wgsl.expected.glsl
+++ b/test/var/override/named/val_init/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 1u
diff --git a/test/var/override/named/zero_init/bool.wgsl.expected.glsl b/test/var/override/named/zero_init/bool.wgsl.expected.glsl
index aa5de1e..1d946b4 100644
--- a/test/var/override/named/zero_init/bool.wgsl.expected.glsl
+++ b/test/var/override/named/zero_init/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 false
diff --git a/test/var/override/named/zero_init/f32.wgsl.expected.glsl b/test/var/override/named/zero_init/f32.wgsl.expected.glsl
index 48eeb64..73ed75b 100644
--- a/test/var/override/named/zero_init/f32.wgsl.expected.glsl
+++ b/test/var/override/named/zero_init/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 0.0f
diff --git a/test/var/override/named/zero_init/i32.wgsl.expected.glsl b/test/var/override/named/zero_init/i32.wgsl.expected.glsl
index 85deaa5..d222d52 100644
--- a/test/var/override/named/zero_init/i32.wgsl.expected.glsl
+++ b/test/var/override/named/zero_init/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 0
diff --git a/test/var/override/named/zero_init/u32.wgsl.expected.glsl b/test/var/override/named/zero_init/u32.wgsl.expected.glsl
index 7b326bd..7663846 100644
--- a/test/var/override/named/zero_init/u32.wgsl.expected.glsl
+++ b/test/var/override/named/zero_init/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_0
 #define WGSL_SPEC_CONSTANT_0 0u
diff --git a/test/var/override/numbered/no_init/bool.wgsl.expected.glsl b/test/var/override/numbered/no_init/bool.wgsl.expected.glsl
index 62e77f2..2e5beb9 100644
--- a/test/var/override/numbered/no_init/bool.wgsl.expected.glsl
+++ b/test/var/override/numbered/no_init/bool.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #error spec constant required for constant id 1234
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 1234  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 1234  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/numbered/no_init/f32.wgsl.expected.glsl b/test/var/override/numbered/no_init/f32.wgsl.expected.glsl
index 07e1b48..ef6bc78 100644
--- a/test/var/override/numbered/no_init/f32.wgsl.expected.glsl
+++ b/test/var/override/numbered/no_init/f32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #error spec constant required for constant id 1234
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 1234  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 1234  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/numbered/no_init/i32.wgsl.expected.glsl b/test/var/override/numbered/no_init/i32.wgsl.expected.glsl
index 58d5bd7..6dabe7f 100644
--- a/test/var/override/numbered/no_init/i32.wgsl.expected.glsl
+++ b/test/var/override/numbered/no_init/i32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #error spec constant required for constant id 1234
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 1234  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 1234  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/numbered/no_init/u32.wgsl.expected.glsl b/test/var/override/numbered/no_init/u32.wgsl.expected.glsl
index dd791dc..fcf949f 100644
--- a/test/var/override/numbered/no_init/u32.wgsl.expected.glsl
+++ b/test/var/override/numbered/no_init/u32.wgsl.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #error spec constant required for constant id 1234
@@ -16,9 +15,10 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '#error' : spec constant required for constant id 1234  
-ERROR: 0:6: '' : missing #endif 
-ERROR: 2 compilation errors.  No code generated.
+ERROR: 0:4: '#error' : spec constant required for constant id 1234  
+ERROR: 0:5: '' : missing #endif 
+ERROR: 0:5: '' : compilation terminated 
+ERROR: 3 compilation errors.  No code generated.
 
 
 
diff --git a/test/var/override/numbered/val_init/bool.wgsl.expected.glsl b/test/var/override/numbered/val_init/bool.wgsl.expected.glsl
index a825483..3b5cc68 100644
--- a/test/var/override/numbered/val_init/bool.wgsl.expected.glsl
+++ b/test/var/override/numbered/val_init/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 true
diff --git a/test/var/override/numbered/val_init/f32.wgsl.expected.glsl b/test/var/override/numbered/val_init/f32.wgsl.expected.glsl
index 805c5f3..5d67c5f 100644
--- a/test/var/override/numbered/val_init/f32.wgsl.expected.glsl
+++ b/test/var/override/numbered/val_init/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 1.0f
diff --git a/test/var/override/numbered/val_init/i32.wgsl.expected.glsl b/test/var/override/numbered/val_init/i32.wgsl.expected.glsl
index dda2ff9..034f0da 100644
--- a/test/var/override/numbered/val_init/i32.wgsl.expected.glsl
+++ b/test/var/override/numbered/val_init/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 1
diff --git a/test/var/override/numbered/val_init/u32.wgsl.expected.glsl b/test/var/override/numbered/val_init/u32.wgsl.expected.glsl
index d5bbf03..2b50d92 100644
--- a/test/var/override/numbered/val_init/u32.wgsl.expected.glsl
+++ b/test/var/override/numbered/val_init/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 1u
diff --git a/test/var/override/numbered/zero_init/bool.wgsl.expected.glsl b/test/var/override/numbered/zero_init/bool.wgsl.expected.glsl
index 7cd240b..072eb92 100644
--- a/test/var/override/numbered/zero_init/bool.wgsl.expected.glsl
+++ b/test/var/override/numbered/zero_init/bool.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 false
diff --git a/test/var/override/numbered/zero_init/f32.wgsl.expected.glsl b/test/var/override/numbered/zero_init/f32.wgsl.expected.glsl
index 7b208ab..fe17e5b 100644
--- a/test/var/override/numbered/zero_init/f32.wgsl.expected.glsl
+++ b/test/var/override/numbered/zero_init/f32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 0.0f
diff --git a/test/var/override/numbered/zero_init/i32.wgsl.expected.glsl b/test/var/override/numbered/zero_init/i32.wgsl.expected.glsl
index d4566cc..a748cb7 100644
--- a/test/var/override/numbered/zero_init/i32.wgsl.expected.glsl
+++ b/test/var/override/numbered/zero_init/i32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 0
diff --git a/test/var/override/numbered/zero_init/u32.wgsl.expected.glsl b/test/var/override/numbered/zero_init/u32.wgsl.expected.glsl
index 117e6bb..85057c1 100644
--- a/test/var/override/numbered/zero_init/u32.wgsl.expected.glsl
+++ b/test/var/override/numbered/zero_init/u32.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 #ifndef WGSL_SPEC_CONSTANT_1234
 #define WGSL_SPEC_CONSTANT_1234 0u
diff --git a/test/var/uses/many_workgroup_vars.wgsl.expected.glsl b/test/var/uses/many_workgroup_vars.wgsl.expected.glsl
index b719fa6..2fafa41 100644
--- a/test/var/uses/many_workgroup_vars.wgsl.expected.glsl
+++ b/test/var/uses/many_workgroup_vars.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared mat2 m00;
 shared mat2 m01;
diff --git a/test/var/uses/private.wgsl.expected.glsl b/test/var/uses/private.wgsl.expected.glsl
index dd7392b..352ce32 100644
--- a/test/var/uses/private.wgsl.expected.glsl
+++ b/test/var/uses/private.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 int a = 0;
 void uses_a() {
@@ -17,7 +16,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 int b = 0;
 void uses_b() {
@@ -35,7 +33,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 int a = 0;
 int b = 0;
@@ -73,7 +70,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void no_uses() {
 }
diff --git a/test/var/uses/workgroup.wgsl.expected.glsl b/test/var/uses/workgroup.wgsl.expected.glsl
index 084d9e2..bd15766 100644
--- a/test/var/uses/workgroup.wgsl.expected.glsl
+++ b/test/var/uses/workgroup.wgsl.expected.glsl
@@ -1,5 +1,4 @@
 #version 310 es
-precision mediump float;
 
 shared int a;
 void uses_a() {
@@ -21,7 +20,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 shared int b;
 void uses_b() {
@@ -43,7 +41,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 shared int a;
 shared int b;
@@ -86,7 +83,6 @@
   return;
 }
 #version 310 es
-precision mediump float;
 
 void no_uses() {
 }
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.glsl
index 0320d9f..c6efb4b 100644
--- a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct doesNotMatter {
   int global_seed;
@@ -60,8 +59,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: '' : array size required 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:5: '' : array size required 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.glsl
index 42be698..3c372c8 100644
--- a/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/barrier-in-loop-with-break/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct doesNotMatter {
   int global_seed;
@@ -64,8 +63,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:6: '' : array size required 
-ERROR: 0:7: '' : compilation terminated 
+ERROR: 0:5: '' : array size required 
+ERROR: 0:6: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.glsl
index a2eeaa9..1c36a9f 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct buf0 {
   vec2 injectionSwitch;
@@ -79,8 +78,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: '' : array size required 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:8: '' : array size required 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.glsl
index cfb7c49..2b2f42b5 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-for-loops-with-barrier-function/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct buf0 {
   vec2 injectionSwitch;
@@ -83,8 +82,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: '' : array size required 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:8: '' : array size required 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.glsl
index 97fd719..9df6e05 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct doesNotMatter {
   float x_compute_data[];
@@ -68,8 +67,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.glsl
index ae1bdf6..a433ae8 100644
--- a/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct doesNotMatter {
   float x_compute_data[];
@@ -72,8 +71,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.glsl
index cdeb375..0766404 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct buf1 {
   vec2 injectionSwitch;
@@ -125,8 +124,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:13: '' : array size required 
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:12: '' : array size required 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.glsl
index a8f1f20..4650ab1 100644
--- a/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/graphicsfuzz/unreachable-barrier-in-loops/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct buf1 {
   vec2 injectionSwitch;
@@ -129,8 +128,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:13: '' : array size required 
-ERROR: 0:14: '' : compilation terminated 
+ERROR: 0:12: '' : array size required 
+ERROR: 0:13: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.glsl
index e32bbf2..7789645 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct Buf1 {
   int result;
@@ -42,8 +41,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: '' : array size required 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:8: '' : array size required 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.glsl
index 73d39e2..a396de9 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct Buf1 {
   int result;
@@ -46,8 +45,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:9: '' : array size required 
-ERROR: 0:10: '' : compilation terminated 
+ERROR: 0:8: '' : array size required 
+ERROR: 0:9: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.glsl
index 1f8e36b..4db18f6 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.glsl
index 40fbe8b..9c005be 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.glsl
index 4bb64eb..82f46db 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.glsl
index e1eeb63..735bcc6 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.glsl
index 5473086..23be66a 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.glsl
index 6745e29..4a16a0a 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.glsl
index f660afa..e4ca0dd 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.glsl
index 2bd3fa2..5500fa3 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.glsl
index 475cb67..7335a19 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   int field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.glsl
index 74eb7fc..88b843f 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_int_uclamp/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   int field0[];
@@ -44,8 +43,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.glsl
index 860700b..0eb6b45 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -32,8 +31,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.glsl
index 78937e9..2928660 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sabs/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.glsl
index 4b2608e..cd3aea5 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.glsl
index 487d319..6225445 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_sclamp/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -44,8 +43,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.glsl
index 31a020a..3edb93d 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.glsl
index 42fdf93..5a257b6 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smax/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.glsl
index 73fef33..83ab583 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.glsl
index 4d329dc..1078c62 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/glsl_uint_smin/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.glsl
index 35a67d64..44d2902 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.glsl
index e623139..a777b12 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -40,8 +39,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.glsl
index a7c893f..6c8f3c5 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -32,8 +31,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.glsl
index bec61b4..3834124 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.glsl
@@ -5,7 +5,6 @@
               ^^^^^^
 
 #version 310 es
-precision mediump float;
 
 struct S {
   uint field0[];
@@ -36,8 +35,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : array size required 
-ERROR: 0:6: '' : compilation terminated 
+ERROR: 0:4: '' : array size required 
+ERROR: 0:5: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
 
diff --git a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.glsl
index 31a1292..832ced1 100644
--- a/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.glsl
+++ b/test/vk-gl-cts/spirv_assembly/instruction/terminate_invocation/no_image_atomic/0-opt.spvasm.expected.glsl
@@ -1,7 +1,6 @@
 SKIP: FAILED
 
 #version 310 es
-precision mediump float;
 
 layout(location = 0) in vec3 x_2_param_1;
 layout(location = 1) flat in int x_3_param_1;
@@ -38,8 +37,8 @@
   return;
 }
 Error parsing GLSL shader:
-ERROR: 0:5: '' : vertex input cannot be further qualified 
-ERROR: 0:5: '' : compilation terminated 
+ERROR: 0:4: '' : vertex input cannot be further qualified 
+ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.