GLSL: fix Select op with a bool vector condition.

The fix is in the mix().

Bug: tint:1429
Change-Id: Id128ead6b124cd364f45a860ad991977be94be5b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/80660
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@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 022ade2..fb4d0ed 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -818,6 +818,24 @@
   auto* expr_false = expr->args[0];
   auto* expr_true = expr->args[1];
   auto* expr_cond = expr->args[2];
+  // GLSL does not support ternary expressions with a bool vector conditional,
+  // but it does support mix() with same.
+  if (TypeOf(expr_cond)->UnwrapRef()->is_bool_vector()) {
+    out << "mix(";
+    if (!EmitExpression(out, expr_false)) {
+      return false;
+    }
+    out << ", ";
+    if (!EmitExpression(out, expr_true)) {
+      return false;
+    }
+    out << ", ";
+    if (!EmitExpression(out, expr_cond)) {
+      return false;
+    }
+    out << ")";
+    return true;
+  }
   ScopedParen paren(out);
   if (!EmitExpression(out, expr_cond)) {
     return false;
diff --git a/src/writer/glsl/generator_impl_builtin_test.cc b/src/writer/glsl/generator_impl_builtin_test.cc
index 8650eb0..eecff52 100644
--- a/src/writer/glsl/generator_impl_builtin_test.cc
+++ b/src/writer/glsl/generator_impl_builtin_test.cc
@@ -287,7 +287,7 @@
   gen.increment_indent();
   std::stringstream out;
   ASSERT_TRUE(gen.EmitExpression(out, call)) << gen.error();
-  EXPECT_EQ(out.str(), "(bvec2(true, false) ? ivec2(3, 4) : ivec2(1, 2))");
+  EXPECT_EQ(out.str(), "mix(ivec2(1, 2), ivec2(3, 4), bvec2(true, false))");
 }
 
 TEST_F(GlslGeneratorImplTest_Builtin, Modf_Scalar) {
diff --git a/test/builtins/gen/select/00b848.wgsl.expected.glsl b/test/builtins/gen/select/00b848.wgsl.expected.glsl
index 5e70f86..d6028c2 100644
--- a/test/builtins/gen/select/00b848.wgsl.expected.glsl
+++ b/test/builtins/gen/select/00b848.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_00b848() {
-  ivec2 res = (bvec2(false, false) ? ivec2(0, 0) : ivec2(0, 0));
+  ivec2 res = mix(ivec2(0, 0), ivec2(0, 0), bvec2(false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_00b848() {
-  ivec2 res = (bvec2(false, false) ? ivec2(0, 0) : ivec2(0, 0));
+  ivec2 res = mix(ivec2(0, 0), ivec2(0, 0), bvec2(false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_00b848() {
-  ivec2 res = (bvec2(false, false) ? ivec2(0, 0) : ivec2(0, 0));
+  ivec2 res = mix(ivec2(0, 0), ivec2(0, 0), bvec2(false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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 3fcc3c7..8003af7 100644
--- a/test/builtins/gen/select/01e2cd.wgsl.expected.glsl
+++ b/test/builtins/gen/select/01e2cd.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_01e2cd() {
-  ivec3 res = (bvec3(false, false, false) ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
+  ivec3 res = mix(ivec3(0, 0, 0), ivec3(0, 0, 0), bvec3(false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_01e2cd() {
-  ivec3 res = (bvec3(false, false, false) ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
+  ivec3 res = mix(ivec3(0, 0, 0), ivec3(0, 0, 0), bvec3(false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_01e2cd() {
-  ivec3 res = (bvec3(false, false, false) ? ivec3(0, 0, 0) : ivec3(0, 0, 0));
+  ivec3 res = mix(ivec3(0, 0, 0), ivec3(0, 0, 0), bvec3(false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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/1e960b.wgsl.expected.glsl b/test/builtins/gen/select/1e960b.wgsl.expected.glsl
index 3046b79..9485034 100644
--- a/test/builtins/gen/select/1e960b.wgsl.expected.glsl
+++ b/test/builtins/gen/select/1e960b.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_1e960b() {
-  uvec2 res = (bvec2(false, false) ? uvec2(0u, 0u) : uvec2(0u, 0u));
+  uvec2 res = mix(uvec2(0u, 0u), uvec2(0u, 0u), bvec2(false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_1e960b() {
-  uvec2 res = (bvec2(false, false) ? uvec2(0u, 0u) : uvec2(0u, 0u));
+  uvec2 res = mix(uvec2(0u, 0u), uvec2(0u, 0u), bvec2(false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_1e960b() {
-  uvec2 res = (bvec2(false, false) ? uvec2(0u, 0u) : uvec2(0u, 0u));
+  uvec2 res = mix(uvec2(0u, 0u), uvec2(0u, 0u), bvec2(false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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 92a2d9a..9095b03 100644
--- a/test/builtins/gen/select/266aff.wgsl.expected.glsl
+++ b/test/builtins/gen/select/266aff.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_266aff() {
-  vec2 res = (bvec2(false, false) ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
+  vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), bvec2(false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_266aff() {
-  vec2 res = (bvec2(false, false) ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
+  vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), bvec2(false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_266aff() {
-  vec2 res = (bvec2(false, false) ? vec2(0.0f, 0.0f) : vec2(0.0f, 0.0f));
+  vec2 res = mix(vec2(0.0f, 0.0f), vec2(0.0f, 0.0f), bvec2(false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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 d9c1e4a..2103574 100644
--- a/test/builtins/gen/select/28a27e.wgsl.expected.glsl
+++ b/test/builtins/gen/select/28a27e.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_28a27e() {
-  uvec3 res = (bvec3(false, false, false) ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
+  uvec3 res = mix(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u), bvec3(false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_28a27e() {
-  uvec3 res = (bvec3(false, false, false) ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
+  uvec3 res = mix(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u), bvec3(false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_28a27e() {
-  uvec3 res = (bvec3(false, false, false) ? uvec3(0u, 0u, 0u) : uvec3(0u, 0u, 0u));
+  uvec3 res = mix(uvec3(0u, 0u, 0u), uvec3(0u, 0u, 0u), bvec3(false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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/80a9a9.wgsl.expected.glsl b/test/builtins/gen/select/80a9a9.wgsl.expected.glsl
index 448ce6c..2b0a383 100644
--- a/test/builtins/gen/select/80a9a9.wgsl.expected.glsl
+++ b/test/builtins/gen/select/80a9a9.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_80a9a9() {
-  bvec3 res = (bvec3(false, false, false) ? bvec3(false, false, false) : bvec3(false, false, false));
+  bvec3 res = mix(bvec3(false, false, false), bvec3(false, false, false), bvec3(false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_80a9a9() {
-  bvec3 res = (bvec3(false, false, false) ? bvec3(false, false, false) : bvec3(false, false, false));
+  bvec3 res = mix(bvec3(false, false, false), bvec3(false, false, false), bvec3(false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_80a9a9() {
-  bvec3 res = (bvec3(false, false, false) ? bvec3(false, false, false) : bvec3(false, false, false));
+  bvec3 res = mix(bvec3(false, false, false), bvec3(false, false, false), bvec3(false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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/a2860e.wgsl.expected.glsl b/test/builtins/gen/select/a2860e.wgsl.expected.glsl
index 82f1419..17f0fc0 100644
--- a/test/builtins/gen/select/a2860e.wgsl.expected.glsl
+++ b/test/builtins/gen/select/a2860e.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_a2860e() {
-  ivec4 res = (bvec4(false, false, false, false) ? ivec4(0, 0, 0, 0) : ivec4(0, 0, 0, 0));
+  ivec4 res = mix(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), bvec4(false, false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #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));
+  ivec4 res = mix(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), bvec4(false, false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_a2860e() {
-  ivec4 res = (bvec4(false, false, false, false) ? ivec4(0, 0, 0, 0) : ivec4(0, 0, 0, 0));
+  ivec4 res = mix(ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), bvec4(false, false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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/bb8aae.wgsl.expected.glsl b/test/builtins/gen/select/bb8aae.wgsl.expected.glsl
index 45e3979..3fd39a1 100644
--- a/test/builtins/gen/select/bb8aae.wgsl.expected.glsl
+++ b/test/builtins/gen/select/bb8aae.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 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));
+  vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), bvec4(false, false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #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));
+  vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), bvec4(false, false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 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));
+  vec4 res = mix(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f), bvec4(false, false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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/c4a4ef.wgsl.expected.glsl b/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl
index 76187f1..8e6f420 100644
--- a/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl
+++ b/test/builtins/gen/select/c4a4ef.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_c4a4ef() {
-  uvec4 res = (bvec4(false, false, false, false) ? uvec4(0u, 0u, 0u, 0u) : uvec4(0u, 0u, 0u, 0u));
+  uvec4 res = mix(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u), bvec4(false, false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #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));
+  uvec4 res = mix(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u), bvec4(false, false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_c4a4ef() {
-  uvec4 res = (bvec4(false, false, false, false) ? uvec4(0u, 0u, 0u, 0u) : uvec4(0u, 0u, 0u, 0u));
+  uvec4 res = mix(uvec4(0u, 0u, 0u, 0u), uvec4(0u, 0u, 0u, 0u), bvec4(false, false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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 5792eed..c5c5a71 100644
--- a/test/builtins/gen/select/cb9301.wgsl.expected.glsl
+++ b/test/builtins/gen/select/cb9301.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_cb9301() {
-  bvec2 res = (bvec2(false, false) ? bvec2(false, false) : bvec2(false, false));
+  bvec2 res = mix(bvec2(false, false), bvec2(false, false), bvec2(false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 void select_cb9301() {
-  bvec2 res = (bvec2(false, false) ? bvec2(false, false) : bvec2(false, false));
+  bvec2 res = mix(bvec2(false, false), bvec2(false, false), bvec2(false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_cb9301() {
-  bvec2 res = (bvec2(false, false) ? bvec2(false, false) : bvec2(false, false));
+  bvec2 res = mix(bvec2(false, false), bvec2(false, false), bvec2(false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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 372d40f..59f7187 100644
--- a/test/builtins/gen/select/e3e028.wgsl.expected.glsl
+++ b/test/builtins/gen/select/e3e028.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_e3e028() {
-  bvec4 res = (bvec4(false, false, false, false) ? bvec4(false, false, false, false) : bvec4(false, false, false, false));
+  bvec4 res = mix(bvec4(false, false, false, false), bvec4(false, false, false, false), bvec4(false, false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #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));
+  bvec4 res = mix(bvec4(false, false, false, false), bvec4(false, false, false, false), bvec4(false, false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_e3e028() {
-  bvec4 res = (bvec4(false, false, false, false) ? bvec4(false, false, false, false) : bvec4(false, false, false, false));
+  bvec4 res = mix(bvec4(false, false, false, false), bvec4(false, false, false, false), bvec4(false, false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-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 e2174eb..5398597 100644
--- a/test/builtins/gen/select/ebfea2.wgsl.expected.glsl
+++ b/test/builtins/gen/select/ebfea2.wgsl.expected.glsl
@@ -1,9 +1,7 @@
-SKIP: FAILED
-
 #version 310 es
 
 void select_ebfea2() {
-  vec3 res = (bvec3(false, false, false) ? vec3(0.0f, 0.0f, 0.0f) : vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), bvec3(false, false, false));
 }
 
 vec4 vertex_main() {
@@ -18,18 +16,11 @@
   gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w);
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #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));
+  vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), bvec3(false, false, false));
 }
 
 void fragment_main() {
@@ -40,17 +31,10 @@
   fragment_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 
 void select_ebfea2() {
-  vec3 res = (bvec3(false, false, false) ? vec3(0.0f, 0.0f, 0.0f) : vec3(0.0f, 0.0f, 0.0f));
+  vec3 res = mix(vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f), bvec3(false, false, false));
 }
 
 void compute_main() {
@@ -62,10 +46,3 @@
   compute_main();
   return;
 }
-Error parsing GLSL shader:
-ERROR: 0:4: '' : boolean expression expected 
-ERROR: 0:4: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/unittest/reader/spirv/SpvLogicalTest_Select_VecBoolCond_VectorParams.spvasm.expected.glsl b/test/unittest/reader/spirv/SpvLogicalTest_Select_VecBoolCond_VectorParams.spvasm.expected.glsl
deleted file mode 100644
index 19e5f94..0000000
--- a/test/unittest/reader/spirv/SpvLogicalTest_Select_VecBoolCond_VectorParams.spvasm.expected.glsl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-void main_1() {
-  uvec2 x_1 = (bvec2(true, false) ? uvec2(10u, 20u) : uvec2(20u, 10u));
-  return;
-}
-
-void tint_symbol() {
-  main_1();
-}
-
-void main() {
-  tint_symbol();
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:5: '' : boolean expression expected 
-ERROR: 0:5: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.glsl
deleted file mode 100644
index bffa90b..0000000
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.spvasm.expected.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) out vec4 x_GLF_color_1_1;
-struct buf0 {
-  vec2 injectionSwitch;
-};
-
-layout(binding = 0) uniform buf0_1 {
-  vec2 injectionSwitch;
-} x_5;
-
-vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-void main_1() {
-  vec2 x_29 = x_5.injectionSwitch;
-  if (((bvec2(false, false) ? vec2(1.0f, 1.0f) : x_29).x == 0.0f)) {
-    x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
-  } else {
-    x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  }
-  return;
-}
-
-struct main_out {
-  vec4 x_GLF_color_1;
-};
-
-main_out tint_symbol() {
-  main_1();
-  main_out tint_symbol_1 = main_out(x_GLF_color);
-  return tint_symbol_1;
-}
-
-void main() {
-  main_out inner_result = tint_symbol();
-  x_GLF_color_1_1 = inner_result.x_GLF_color_1;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:16: '' : boolean expression expected 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.glsl
deleted file mode 100644
index bffa90b..0000000
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-extract/0-opt.wgsl.expected.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) out vec4 x_GLF_color_1_1;
-struct buf0 {
-  vec2 injectionSwitch;
-};
-
-layout(binding = 0) uniform buf0_1 {
-  vec2 injectionSwitch;
-} x_5;
-
-vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-void main_1() {
-  vec2 x_29 = x_5.injectionSwitch;
-  if (((bvec2(false, false) ? vec2(1.0f, 1.0f) : x_29).x == 0.0f)) {
-    x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
-  } else {
-    x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  }
-  return;
-}
-
-struct main_out {
-  vec4 x_GLF_color_1;
-};
-
-main_out tint_symbol() {
-  main_1();
-  main_out tint_symbol_1 = main_out(x_GLF_color);
-  return tint_symbol_1;
-}
-
-void main() {
-  main_out inner_result = tint_symbol();
-  x_GLF_color_1_1 = inner_result.x_GLF_color_1;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:16: '' : boolean expression expected 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.glsl
deleted file mode 100644
index a6f3655..0000000
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.spvasm.expected.glsl
+++ /dev/null
@@ -1,52 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) out vec4 x_GLF_color_1_1;
-struct buf0 {
-  vec2 threeandfour;
-};
-
-layout(binding = 0) uniform buf0_1 {
-  vec2 threeandfour;
-} x_6;
-
-vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-void main_1() {
-  vec4 v = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  v = vec4(2.0f, 3.0f, 4.0f, 5.0f);
-  float x_40 = x_6.threeandfour.y;
-  vec2 x_42 = (bvec2(true, false) ? vec2(1.0f, x_40) : vec2(2.0f, 6.0f));
-  vec4 x_43 = v;
-  v = vec4(x_42.x, x_42.y, x_43.z, x_43.w);
-  if (all(equal(v, vec4(1.0f, 6.0f, 4.0f, 5.0f)))) {
-    x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
-  } else {
-    x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  }
-  return;
-}
-
-struct main_out {
-  vec4 x_GLF_color_1;
-};
-
-main_out tint_symbol() {
-  main_1();
-  main_out tint_symbol_1 = main_out(x_GLF_color);
-  return tint_symbol_1;
-}
-
-void main() {
-  main_out inner_result = tint_symbol();
-  x_GLF_color_1_1 = inner_result.x_GLF_color_1;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:18: '' : boolean expression expected 
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.glsl
deleted file mode 100644
index a6f3655..0000000
--- a/test/vk-gl-cts/graphicsfuzz/cov-folding-rules-shuffle-mix/0-opt.wgsl.expected.glsl
+++ /dev/null
@@ -1,52 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) out vec4 x_GLF_color_1_1;
-struct buf0 {
-  vec2 threeandfour;
-};
-
-layout(binding = 0) uniform buf0_1 {
-  vec2 threeandfour;
-} x_6;
-
-vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-void main_1() {
-  vec4 v = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  v = vec4(2.0f, 3.0f, 4.0f, 5.0f);
-  float x_40 = x_6.threeandfour.y;
-  vec2 x_42 = (bvec2(true, false) ? vec2(1.0f, x_40) : vec2(2.0f, 6.0f));
-  vec4 x_43 = v;
-  v = vec4(x_42.x, x_42.y, x_43.z, x_43.w);
-  if (all(equal(v, vec4(1.0f, 6.0f, 4.0f, 5.0f)))) {
-    x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
-  } else {
-    x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-  }
-  return;
-}
-
-struct main_out {
-  vec4 x_GLF_color_1;
-};
-
-main_out tint_symbol() {
-  main_1();
-  main_out tint_symbol_1 = main_out(x_GLF_color);
-  return tint_symbol_1;
-}
-
-void main() {
-  main_out inner_result = tint_symbol();
-  x_GLF_color_1_1 = inner_result.x_GLF_color_1;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:18: '' : boolean expression expected 
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.glsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.glsl
deleted file mode 100644
index 4d706b5..0000000
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.spvasm.expected.glsl
+++ /dev/null
@@ -1,115 +0,0 @@
-SKIP: FAILED
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) out vec4 x_GLF_color_1_1;
-struct strided_arr {
-  int el;
-};
-
-struct buf1 {
-  strided_arr x_GLF_uniform_int_values[3];
-};
-
-struct strided_arr_1 {
-  float el;
-};
-
-struct buf0 {
-  strided_arr_1 x_GLF_uniform_float_values[2];
-};
-
-layout(binding = 1) uniform buf1_1 {
-  strided_arr x_GLF_uniform_int_values[3];
-} x_6;
-
-layout(binding = 0) uniform buf0_1 {
-  strided_arr_1 x_GLF_uniform_float_values[2];
-} x_10;
-
-vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-void main_1() {
-  int A[2] = int[2](0, 0);
-  int i = 0;
-  int a = 0;
-  vec2 v1 = vec2(0.0f, 0.0f);
-  vec2 v2 = vec2(0.0f, 0.0f);
-  int b = 0;
-  int x_46 = x_6.x_GLF_uniform_int_values[2].el;
-  int x_48 = x_6.x_GLF_uniform_int_values[0].el;
-  A[x_46] = x_48;
-  int x_51 = x_6.x_GLF_uniform_int_values[0].el;
-  int x_53 = x_6.x_GLF_uniform_int_values[1].el;
-  A[x_51] = x_53;
-  int x_56 = x_6.x_GLF_uniform_int_values[0].el;
-  i = x_56;
-  while (true) {
-    int x_61 = i;
-    int x_63 = x_6.x_GLF_uniform_int_values[2].el;
-    if ((x_61 > x_63)) {
-    } else {
-      break;
-    }
-    i = (i - 1);
-  }
-  float x_69 = x_10.x_GLF_uniform_float_values[1].el;
-  float x_71 = x_10.x_GLF_uniform_float_values[1].el;
-  int x_76 = A[((x_69 >= x_71) ? 1 : i)];
-  a = x_76;
-  int x_78 = x_6.x_GLF_uniform_int_values[0].el;
-  int x_80 = a;
-  int x_84 = x_6.x_GLF_uniform_int_values[0].el;
-  int x_87 = x_6.x_GLF_uniform_int_values[0].el;
-  float x_91 = x_10.x_GLF_uniform_float_values[1].el;
-  float x_93 = x_10.x_GLF_uniform_float_values[0].el;
-  v1 = (bvec2((x_91 < x_93), true) ? vec2(float(x_84), float(x_87)) : vec2(float(x_78), float(x_80)));
-  int x_98 = x_6.x_GLF_uniform_int_values[2].el;
-  float x_100 = v1[x_98];
-  int x_103 = x_6.x_GLF_uniform_int_values[0].el;
-  float x_105 = v1[x_103];
-  v2 = (bvec2(false, false) ? vec2(x_105, x_105) : vec2(x_100, x_100));
-  int x_109 = x_6.x_GLF_uniform_int_values[1].el;
-  float x_110 = float(x_109);
-  int x_113 = x_6.x_GLF_uniform_int_values[0].el;
-  float x_114 = float(x_113);
-  int x_121 = A[int(clamp(vec2(x_110, x_110), vec2(x_114, x_114), v2).x)];
-  b = x_121;
-  int x_122 = b;
-  int x_124 = x_6.x_GLF_uniform_int_values[1].el;
-  if ((x_122 == x_124)) {
-    int x_130 = x_6.x_GLF_uniform_int_values[0].el;
-    int x_133 = x_6.x_GLF_uniform_int_values[2].el;
-    int x_136 = x_6.x_GLF_uniform_int_values[2].el;
-    int x_139 = x_6.x_GLF_uniform_int_values[0].el;
-    x_GLF_color = vec4(float(x_130), float(x_133), float(x_136), float(x_139));
-  } else {
-    int x_143 = x_6.x_GLF_uniform_int_values[2].el;
-    float x_144 = float(x_143);
-    x_GLF_color = vec4(x_144, x_144, x_144, x_144);
-  }
-  return;
-}
-
-struct main_out {
-  vec4 x_GLF_color_1;
-};
-
-main_out tint_symbol() {
-  main_1();
-  main_out tint_symbol_1 = main_out(x_GLF_color);
-  return tint_symbol_1;
-}
-
-void main() {
-  main_out inner_result = tint_symbol();
-  x_GLF_color_1_1 = inner_result.x_GLF_color_1;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:64: '' : boolean expression expected 
-ERROR: 0:64: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.glsl b/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.glsl
deleted file mode 100644
index 1e4b69d..0000000
--- a/test/vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl.expected.glsl
+++ /dev/null
@@ -1,123 +0,0 @@
-SKIP: FAILED
-
-vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl:1:13 warning: use of deprecated language feature: the @stride attribute is deprecated; use a larger type if necessary
-type Arr = @stride(16) array<i32, 3>;
-            ^^^^^^
-
-vk-gl-cts/graphicsfuzz/cov-inst-combine-shifts-mix-mix-clamp/0-opt.wgsl:7:15 warning: use of deprecated language feature: the @stride attribute is deprecated; use a larger type if necessary
-type Arr_1 = @stride(16) array<f32, 2>;
-              ^^^^^^
-
-#version 310 es
-precision mediump float;
-
-layout(location = 0) out vec4 x_GLF_color_1_1;
-struct tint_padded_array_element {
-  int el;
-};
-
-struct buf1 {
-  tint_padded_array_element x_GLF_uniform_int_values[3];
-};
-
-struct tint_padded_array_element_1 {
-  float el;
-};
-
-struct buf0 {
-  tint_padded_array_element_1 x_GLF_uniform_float_values[2];
-};
-
-layout(binding = 1) uniform buf1_1 {
-  tint_padded_array_element x_GLF_uniform_int_values[3];
-} x_6;
-
-layout(binding = 0) uniform buf0_1 {
-  tint_padded_array_element_1 x_GLF_uniform_float_values[2];
-} x_10;
-
-vec4 x_GLF_color = vec4(0.0f, 0.0f, 0.0f, 0.0f);
-void main_1() {
-  int A[2] = int[2](0, 0);
-  int i = 0;
-  int a = 0;
-  vec2 v1 = vec2(0.0f, 0.0f);
-  vec2 v2 = vec2(0.0f, 0.0f);
-  int b = 0;
-  int x_46 = x_6.x_GLF_uniform_int_values[2].el;
-  int x_48 = x_6.x_GLF_uniform_int_values[0].el;
-  A[x_46] = x_48;
-  int x_51 = x_6.x_GLF_uniform_int_values[0].el;
-  int x_53 = x_6.x_GLF_uniform_int_values[1].el;
-  A[x_51] = x_53;
-  int x_56 = x_6.x_GLF_uniform_int_values[0].el;
-  i = x_56;
-  while (true) {
-    int x_61 = i;
-    int x_63 = x_6.x_GLF_uniform_int_values[2].el;
-    if ((x_61 > x_63)) {
-    } else {
-      break;
-    }
-    i = (i - 1);
-  }
-  float x_69 = x_10.x_GLF_uniform_float_values[1].el;
-  float x_71 = x_10.x_GLF_uniform_float_values[1].el;
-  int x_76 = A[((x_69 >= x_71) ? 1 : i)];
-  a = x_76;
-  int x_78 = x_6.x_GLF_uniform_int_values[0].el;
-  int x_80 = a;
-  int x_84 = x_6.x_GLF_uniform_int_values[0].el;
-  int x_87 = x_6.x_GLF_uniform_int_values[0].el;
-  float x_91 = x_10.x_GLF_uniform_float_values[1].el;
-  float x_93 = x_10.x_GLF_uniform_float_values[0].el;
-  v1 = (bvec2((x_91 < x_93), true) ? vec2(float(x_84), float(x_87)) : vec2(float(x_78), float(x_80)));
-  int x_98 = x_6.x_GLF_uniform_int_values[2].el;
-  float x_100 = v1[x_98];
-  int x_103 = x_6.x_GLF_uniform_int_values[0].el;
-  float x_105 = v1[x_103];
-  v2 = (bvec2(false, false) ? vec2(x_105, x_105) : vec2(x_100, x_100));
-  int x_109 = x_6.x_GLF_uniform_int_values[1].el;
-  float x_110 = float(x_109);
-  int x_113 = x_6.x_GLF_uniform_int_values[0].el;
-  float x_114 = float(x_113);
-  int x_121 = A[int(clamp(vec2(x_110, x_110), vec2(x_114, x_114), v2).x)];
-  b = x_121;
-  int x_122 = b;
-  int x_124 = x_6.x_GLF_uniform_int_values[1].el;
-  if ((x_122 == x_124)) {
-    int x_130 = x_6.x_GLF_uniform_int_values[0].el;
-    int x_133 = x_6.x_GLF_uniform_int_values[2].el;
-    int x_136 = x_6.x_GLF_uniform_int_values[2].el;
-    int x_139 = x_6.x_GLF_uniform_int_values[0].el;
-    x_GLF_color = vec4(float(x_130), float(x_133), float(x_136), float(x_139));
-  } else {
-    int x_143 = x_6.x_GLF_uniform_int_values[2].el;
-    float x_144 = float(x_143);
-    x_GLF_color = vec4(x_144, x_144, x_144, x_144);
-  }
-  return;
-}
-
-struct main_out {
-  vec4 x_GLF_color_1;
-};
-
-main_out tint_symbol() {
-  main_1();
-  main_out tint_symbol_1 = main_out(x_GLF_color);
-  return tint_symbol_1;
-}
-
-void main() {
-  main_out inner_result = tint_symbol();
-  x_GLF_color_1_1 = inner_result.x_GLF_color_1;
-  return;
-}
-Error parsing GLSL shader:
-ERROR: 0:64: '' : boolean expression expected 
-ERROR: 0:64: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-