tint/writer/glsl: Fix vector `select`
mix of ivec is not core until later GLSL versions.
Just polyfill in the writer with ternary ops.
Change-Id: Ia0c35bf95842e03ef8447019f3264d01c11fd384
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/123240
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Kokoro: Ben Clayton <bclayton@google.com>
diff --git a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl
index 50390aa..273445c 100644
--- a/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/1bfdfb.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -49,7 +54,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, uvec2 coord, ExternalTextureParams params) {
@@ -99,6 +104,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -148,7 +158,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, uvec2 coord, ExternalTextureParams params) {
@@ -192,6 +202,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -241,7 +256,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, uvec2 coord, ExternalTextureParams params) {
diff --git a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
index ef39bd8..5760501 100644
--- a/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureLoad/8acf41.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -49,7 +54,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
@@ -99,6 +104,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -148,7 +158,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
@@ -192,6 +202,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -241,7 +256,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
diff --git a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
index df288db..b348446 100644
--- a/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -49,7 +54,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
@@ -108,6 +113,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -157,7 +167,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
@@ -210,6 +220,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -259,7 +274,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl
index d27deec..8f8fece 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
f16vec2 tint_acosh(f16vec2 x) {
- return mix(acosh(x), f16vec2(0.0hf), lessThan(x, f16vec2(1.0hf)));
+ return tint_select(acosh(x), f16vec2(0.0hf), lessThan(x, f16vec2(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -32,8 +37,13 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
f16vec2 tint_acosh(f16vec2 x) {
- return mix(acosh(x), f16vec2(0.0hf), lessThan(x, f16vec2(1.0hf)));
+ return tint_select(acosh(x), f16vec2(0.0hf), lessThan(x, f16vec2(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -57,8 +67,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
f16vec2 tint_acosh(f16vec2 x) {
- return mix(acosh(x), f16vec2(0.0hf), lessThan(x, f16vec2(1.0hf)));
+ return tint_select(acosh(x), f16vec2(0.0hf), lessThan(x, f16vec2(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl
index 3d6f927..7ea82c5 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl
@@ -1,7 +1,12 @@
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
vec2 tint_acosh(vec2 x) {
- return mix(acosh(x), vec2(0.0f), lessThan(x, vec2(1.0f)));
+ return tint_select(acosh(x), vec2(0.0f), lessThan(x, vec2(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -30,8 +35,13 @@
#version 310 es
precision mediump float;
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
vec2 tint_acosh(vec2 x) {
- return mix(acosh(x), vec2(0.0f), lessThan(x, vec2(1.0f)));
+ return tint_select(acosh(x), vec2(0.0f), lessThan(x, vec2(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -54,8 +64,13 @@
}
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
vec2 tint_acosh(vec2 x) {
- return mix(acosh(x), vec2(0.0f), lessThan(x, vec2(1.0f)));
+ return tint_select(acosh(x), vec2(0.0f), lessThan(x, vec2(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl
index 51cf439..a454f98 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl
@@ -1,7 +1,12 @@
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
vec4 tint_acosh(vec4 x) {
- return mix(acosh(x), vec4(0.0f), lessThan(x, vec4(1.0f)));
+ return tint_select(acosh(x), vec4(0.0f), lessThan(x, vec4(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -30,8 +35,13 @@
#version 310 es
precision mediump float;
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
vec4 tint_acosh(vec4 x) {
- return mix(acosh(x), vec4(0.0f), lessThan(x, vec4(1.0f)));
+ return tint_select(acosh(x), vec4(0.0f), lessThan(x, vec4(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -54,8 +64,13 @@
}
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
vec4 tint_acosh(vec4 x) {
- return mix(acosh(x), vec4(0.0f), lessThan(x, vec4(1.0f)));
+ return tint_select(acosh(x), vec4(0.0f), lessThan(x, vec4(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl
index 711447d..95d73e9 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
f16vec4 tint_acosh(f16vec4 x) {
- return mix(acosh(x), f16vec4(0.0hf), lessThan(x, f16vec4(1.0hf)));
+ return tint_select(acosh(x), f16vec4(0.0hf), lessThan(x, f16vec4(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -32,8 +37,13 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
f16vec4 tint_acosh(f16vec4 x) {
- return mix(acosh(x), f16vec4(0.0hf), lessThan(x, f16vec4(1.0hf)));
+ return tint_select(acosh(x), f16vec4(0.0hf), lessThan(x, f16vec4(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -57,8 +67,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
f16vec4 tint_acosh(f16vec4 x) {
- return mix(acosh(x), f16vec4(0.0hf), lessThan(x, f16vec4(1.0hf)));
+ return tint_select(acosh(x), f16vec4(0.0hf), lessThan(x, f16vec4(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl
index fdf33f8..a604103 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl
@@ -1,7 +1,12 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
vec3 tint_acosh(vec3 x) {
- return mix(acosh(x), vec3(0.0f), lessThan(x, vec3(1.0f)));
+ return tint_select(acosh(x), vec3(0.0f), lessThan(x, vec3(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -30,8 +35,13 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
vec3 tint_acosh(vec3 x) {
- return mix(acosh(x), vec3(0.0f), lessThan(x, vec3(1.0f)));
+ return tint_select(acosh(x), vec3(0.0f), lessThan(x, vec3(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -54,8 +64,13 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
vec3 tint_acosh(vec3 x) {
- return mix(acosh(x), vec3(0.0f), lessThan(x, vec3(1.0f)));
+ return tint_select(acosh(x), vec3(0.0f), lessThan(x, vec3(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl
index 80c879a..e270d08 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
f16vec3 tint_acosh(f16vec3 x) {
- return mix(acosh(x), f16vec3(0.0hf), lessThan(x, f16vec3(1.0hf)));
+ return tint_select(acosh(x), f16vec3(0.0hf), lessThan(x, f16vec3(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -32,8 +37,13 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
f16vec3 tint_acosh(f16vec3 x) {
- return mix(acosh(x), f16vec3(0.0hf), lessThan(x, f16vec3(1.0hf)));
+ return tint_select(acosh(x), f16vec3(0.0hf), lessThan(x, f16vec3(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -57,8 +67,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
f16vec3 tint_acosh(f16vec3 x) {
- return mix(acosh(x), f16vec3(0.0hf), lessThan(x, f16vec3(1.0hf)));
+ return tint_select(acosh(x), f16vec3(0.0hf), lessThan(x, f16vec3(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.glsl
index 256f348..cf1cfda 100644
--- a/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/440cca.wgsl.expected.glsl
@@ -1,7 +1,12 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
vec3 tint_atanh(vec3 x) {
- return mix(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f)));
+ return tint_select(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -30,8 +35,13 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
vec3 tint_atanh(vec3 x) {
- return mix(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f)));
+ return tint_select(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -54,8 +64,13 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
vec3 tint_atanh(vec3 x) {
- return mix(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f)));
+ return tint_select(atanh(x), vec3(0.0f), greaterThanEqual(x, vec3(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.glsl
index f8fd950..dc8f579 100644
--- a/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/5bf88d.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
f16vec2 tint_atanh(f16vec2 x) {
- return mix(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf)));
+ return tint_select(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -32,8 +37,13 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
f16vec2 tint_atanh(f16vec2 x) {
- return mix(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf)));
+ return tint_select(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -57,8 +67,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
f16vec2 tint_atanh(f16vec2 x) {
- return mix(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf)));
+ return tint_select(atanh(x), f16vec2(0.0hf), greaterThanEqual(x, f16vec2(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.glsl
index a4da60c..c6a4bc5 100644
--- a/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/c0e634.wgsl.expected.glsl
@@ -1,7 +1,12 @@
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
vec2 tint_atanh(vec2 x) {
- return mix(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f)));
+ return tint_select(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -30,8 +35,13 @@
#version 310 es
precision mediump float;
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
vec2 tint_atanh(vec2 x) {
- return mix(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f)));
+ return tint_select(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -54,8 +64,13 @@
}
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
vec2 tint_atanh(vec2 x) {
- return mix(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f)));
+ return tint_select(atanh(x), vec2(0.0f), greaterThanEqual(x, vec2(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.glsl
index 2c42b55..5de83b1 100644
--- a/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/e3b450.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
f16vec4 tint_atanh(f16vec4 x) {
- return mix(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf)));
+ return tint_select(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -32,8 +37,13 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
f16vec4 tint_atanh(f16vec4 x) {
- return mix(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf)));
+ return tint_select(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -57,8 +67,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
f16vec4 tint_atanh(f16vec4 x) {
- return mix(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf)));
+ return tint_select(atanh(x), f16vec4(0.0hf), greaterThanEqual(x, f16vec4(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.glsl
index 84c1bc5..799000e 100644
--- a/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/ec4b06.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
f16vec3 tint_atanh(f16vec3 x) {
- return mix(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf)));
+ return tint_select(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -32,8 +37,13 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
f16vec3 tint_atanh(f16vec3 x) {
- return mix(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf)));
+ return tint_select(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -57,8 +67,13 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
f16vec3 tint_atanh(f16vec3 x) {
- return mix(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf)));
+ return tint_select(atanh(x), f16vec3(0.0hf), greaterThanEqual(x, f16vec3(1.0hf)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.glsl
index 480d3d3..de6a26b 100644
--- a/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/f3e01b.wgsl.expected.glsl
@@ -1,7 +1,12 @@
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
vec4 tint_atanh(vec4 x) {
- return mix(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f)));
+ return tint_select(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -30,8 +35,13 @@
#version 310 es
precision mediump float;
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
vec4 tint_atanh(vec4 x) {
- return mix(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f)));
+ return tint_select(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
@@ -54,8 +64,13 @@
}
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
vec4 tint_atanh(vec4 x) {
- return mix(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f)));
+ return tint_select(atanh(x), vec4(0.0f), greaterThanEqual(x, vec4(1.0f)));
}
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.glsl b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.glsl
index bdf6581..f9cd059 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/70783f.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_count_leading_zeros(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
x = (x << b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
x = (x << b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
x = (x << b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
x = (x << b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_count_leading_zeros(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
x = (x << b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
x = (x << b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
x = (x << b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
x = (x << b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_count_leading_zeros(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
x = (x << b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
x = (x << b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
x = (x << b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
x = (x << b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.glsl b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.glsl
index a54c6d2..8a13b93 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/7c38a6.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_count_leading_zeros(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
x = (x << b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
x = (x << b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
x = (x << b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
x = (x << b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_count_leading_zeros(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
x = (x << b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
x = (x << b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
x = (x << b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
x = (x << b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_count_leading_zeros(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
x = (x << b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
x = (x << b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
x = (x << b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
x = (x << b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.glsl b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.glsl
index 3d418d3..5d0dbea 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/858d40.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_count_leading_zeros(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
x = (x << b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
x = (x << b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
x = (x << b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
x = (x << b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_count_leading_zeros(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
x = (x << b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
x = (x << b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
x = (x << b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
x = (x << b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_count_leading_zeros(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), lessThanEqual(x, uvec2(65535u)));
x = (x << b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), lessThanEqual(x, uvec2(16777215u)));
x = (x << b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), lessThanEqual(x, uvec2(268435455u)));
x = (x << b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), lessThanEqual(x, uvec2(1073741823u)));
x = (x << b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), lessThanEqual(x, uvec2(2147483647u)));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.glsl b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.glsl
index 9bb06c3..500ced0 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/ab6345.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_count_leading_zeros(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
x = (x << b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
x = (x << b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
x = (x << b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
x = (x << b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_count_leading_zeros(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
x = (x << b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
x = (x << b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
x = (x << b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
x = (x << b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_count_leading_zeros(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), lessThanEqual(x, uvec3(65535u)));
x = (x << b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), lessThanEqual(x, uvec3(16777215u)));
x = (x << b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), lessThanEqual(x, uvec3(268435455u)));
x = (x << b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), lessThanEqual(x, uvec3(1073741823u)));
x = (x << b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), lessThanEqual(x, uvec3(2147483647u)));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.glsl b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.glsl
index 346e9bb..9ff99e5 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/eab32b.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_count_leading_zeros(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
x = (x << b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
x = (x << b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
x = (x << b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
x = (x << b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_count_leading_zeros(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
x = (x << b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
x = (x << b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
x = (x << b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
x = (x << b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_count_leading_zeros(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
x = (x << b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
x = (x << b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
x = (x << b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
x = (x << b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.glsl b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.glsl
index 2ba9bb6..6a6fc4a 100644
--- a/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countLeadingZeros/f70103.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_count_leading_zeros(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
x = (x << b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
x = (x << b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
x = (x << b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
x = (x << b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_count_leading_zeros(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
x = (x << b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
x = (x << b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
x = (x << b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
x = (x << b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_count_leading_zeros(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), lessThanEqual(x, uvec4(65535u)));
x = (x << b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), lessThanEqual(x, uvec4(16777215u)));
x = (x << b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), lessThanEqual(x, uvec4(268435455u)));
x = (x << b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), lessThanEqual(x, uvec4(1073741823u)));
x = (x << b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), lessThanEqual(x, uvec4(2147483647u)));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.glsl b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.glsl
index 94b429f..dc7e94f 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1ad138.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_count_trailing_zeros(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_count_trailing_zeros(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_count_trailing_zeros(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.glsl b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.glsl
index 70f5d7e..dcecc37 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/1dc84a.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_count_trailing_zeros(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_count_trailing_zeros(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_count_trailing_zeros(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.glsl b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.glsl
index 297d6da..a433a86 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/327c37.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_count_trailing_zeros(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_count_trailing_zeros(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_count_trailing_zeros(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(1u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.glsl b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.glsl
index 6e7954b..d349d93 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/8ed26f.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_count_trailing_zeros(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_count_trailing_zeros(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_count_trailing_zeros(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.glsl b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.glsl
index 3f285e7..1eb0bbc 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/acfacb.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_count_trailing_zeros(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_count_trailing_zeros(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_count_trailing_zeros(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(1u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.glsl b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.glsl
index 0e62166..f558abd 100644
--- a/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/countTrailingZeros/d2b4a0.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_count_trailing_zeros(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_count_trailing_zeros(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_count_trailing_zeros(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(1u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) + is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.glsl
index a88db52..c168581 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/000ff3.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_first_leading_bit(uvec4 v) {
uvec4 x = v;
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_first_leading_bit(uvec4 v) {
uvec4 x = v;
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_first_leading_bit(uvec4 v) {
uvec4 x = v;
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.glsl
index ffe0d7b..0404a8f 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/35053e.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_first_leading_bit(ivec3 v) {
- uvec3 x = mix(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0)));
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
+ uvec3 x = tint_select(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_first_leading_bit(ivec3 v) {
- uvec3 x = mix(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0)));
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
+ uvec3 x = tint_select(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_first_leading_bit(ivec3 v) {
- uvec3 x = mix(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0)));
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
+ uvec3 x = tint_select(uvec3(v), uvec3(~(v)), lessThan(v, ivec3(0)));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.glsl
index d2240c7..e290636 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/3fd7d0.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_first_leading_bit(uvec3 v) {
uvec3 x = v;
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_first_leading_bit(uvec3 v) {
uvec3 x = v;
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_first_leading_bit(uvec3 v) {
uvec3 x = v;
- uvec3 b16 = mix(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
+ uvec3 b16 = tint_select(uvec3(0u), uvec3(16u), bvec3((x & uvec3(4294901760u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
+ uvec3 b8 = tint_select(uvec3(0u), uvec3(8u), bvec3((x & uvec3(65280u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
+ uvec3 b4 = tint_select(uvec3(0u), uvec3(4u), bvec3((x & uvec3(240u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
+ uvec3 b2 = tint_select(uvec3(0u), uvec3(2u), bvec3((x & uvec3(12u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(0u), uvec3(1u), bvec3((x & uvec3(2u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.glsl
index 21961cb..2a81d48 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/6fe804.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_first_leading_bit(uvec2 v) {
uvec2 x = v;
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_first_leading_bit(uvec2 v) {
uvec2 x = v;
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_first_leading_bit(uvec2 v) {
uvec2 x = v;
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.glsl
index ec78a1e..c9b0fea 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/a622c2.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_first_leading_bit(ivec2 v) {
- uvec2 x = mix(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0)));
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
+ uvec2 x = tint_select(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_first_leading_bit(ivec2 v) {
- uvec2 x = mix(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0)));
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
+ uvec2 x = tint_select(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_first_leading_bit(ivec2 v) {
- uvec2 x = mix(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0)));
- uvec2 b16 = mix(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
+ uvec2 x = tint_select(uvec2(v), uvec2(~(v)), lessThan(v, ivec2(0)));
+ uvec2 b16 = tint_select(uvec2(0u), uvec2(16u), bvec2((x & uvec2(4294901760u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
+ uvec2 b8 = tint_select(uvec2(0u), uvec2(8u), bvec2((x & uvec2(65280u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
+ uvec2 b4 = tint_select(uvec2(0u), uvec2(4u), bvec2((x & uvec2(240u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
+ uvec2 b2 = tint_select(uvec2(0u), uvec2(2u), bvec2((x & uvec2(12u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(0u), uvec2(1u), bvec2((x & uvec2(2u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.glsl
index 45f044a..0ddc1e9 100644
--- a/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstLeadingBit/c1f940.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_first_leading_bit(ivec4 v) {
- uvec4 x = mix(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0)));
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
+ uvec4 x = tint_select(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_first_leading_bit(ivec4 v) {
- uvec4 x = mix(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0)));
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
+ uvec4 x = tint_select(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_first_leading_bit(ivec4 v) {
- uvec4 x = mix(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0)));
- uvec4 b16 = mix(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
+ uvec4 x = tint_select(uvec4(v), uvec4(~(v)), lessThan(v, ivec4(0)));
+ uvec4 b16 = tint_select(uvec4(0u), uvec4(16u), bvec4((x & uvec4(4294901760u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
+ uvec4 b8 = tint_select(uvec4(0u), uvec4(8u), bvec4((x & uvec4(65280u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
+ uvec4 b4 = tint_select(uvec4(0u), uvec4(4u), bvec4((x & uvec4(240u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
+ uvec4 b2 = tint_select(uvec4(0u), uvec4(2u), bvec4((x & uvec4(12u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(0u), uvec4(1u), bvec4((x & uvec4(2u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.glsl
index a6c5431..8c9092f 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/110f2c.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_first_trailing_bit(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_first_trailing_bit(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
uvec4 tint_first_trailing_bit(uvec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return uvec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.glsl
index c4c367d..67e55e8 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/45eb10.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_first_trailing_bit(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_first_trailing_bit(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
uvec2 tint_first_trailing_bit(uvec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return uvec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.glsl
index f46b39f..ddb8997 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/50c072.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_first_trailing_bit(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_first_trailing_bit(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
ivec2 tint_first_trailing_bit(ivec2 v) {
uvec2 x = uvec2(v);
- uvec2 b16 = mix(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
+ uvec2 b16 = tint_select(uvec2(16u), uvec2(0u), bvec2((x & uvec2(65535u))));
x = (x >> b16);
- uvec2 b8 = mix(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
+ uvec2 b8 = tint_select(uvec2(8u), uvec2(0u), bvec2((x & uvec2(255u))));
x = (x >> b8);
- uvec2 b4 = mix(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
+ uvec2 b4 = tint_select(uvec2(4u), uvec2(0u), bvec2((x & uvec2(15u))));
x = (x >> b4);
- uvec2 b2 = mix(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
+ uvec2 b2 = tint_select(uvec2(2u), uvec2(0u), bvec2((x & uvec2(3u))));
x = (x >> b2);
- uvec2 b1 = mix(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
- uvec2 is_zero = mix(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
+ uvec2 b1 = tint_select(uvec2(1u), uvec2(0u), bvec2((x & uvec2(1u))));
+ uvec2 is_zero = tint_select(uvec2(0u), uvec2(4294967295u), equal(x, uvec2(0u)));
return ivec2((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.glsl
index 62b124a..822977a 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/7496d6.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_first_trailing_bit(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_first_trailing_bit(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
ivec3 tint_first_trailing_bit(ivec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return ivec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.glsl
index 2921255..e491ac2 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/86551b.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_first_trailing_bit(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_first_trailing_bit(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
ivec4 tint_first_trailing_bit(ivec4 v) {
uvec4 x = uvec4(v);
- uvec4 b16 = mix(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
+ uvec4 b16 = tint_select(uvec4(16u), uvec4(0u), bvec4((x & uvec4(65535u))));
x = (x >> b16);
- uvec4 b8 = mix(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
+ uvec4 b8 = tint_select(uvec4(8u), uvec4(0u), bvec4((x & uvec4(255u))));
x = (x >> b8);
- uvec4 b4 = mix(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
+ uvec4 b4 = tint_select(uvec4(4u), uvec4(0u), bvec4((x & uvec4(15u))));
x = (x >> b4);
- uvec4 b2 = mix(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
+ uvec4 b2 = tint_select(uvec4(2u), uvec4(0u), bvec4((x & uvec4(3u))));
x = (x >> b2);
- uvec4 b1 = mix(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
- uvec4 is_zero = mix(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
+ uvec4 b1 = tint_select(uvec4(1u), uvec4(0u), bvec4((x & uvec4(1u))));
+ uvec4 is_zero = tint_select(uvec4(0u), uvec4(4294967295u), equal(x, uvec4(0u)));
return ivec4((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.glsl b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.glsl
index d86aa92..b57b5e4 100644
--- a/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/firstTrailingBit/cb51ce.wgsl.expected.glsl
@@ -1,17 +1,22 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_first_trailing_bit(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -41,18 +46,23 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_first_trailing_bit(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
@@ -76,18 +86,23 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
uvec3 tint_first_trailing_bit(uvec3 v) {
uvec3 x = uvec3(v);
- uvec3 b16 = mix(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
+ uvec3 b16 = tint_select(uvec3(16u), uvec3(0u), bvec3((x & uvec3(65535u))));
x = (x >> b16);
- uvec3 b8 = mix(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
+ uvec3 b8 = tint_select(uvec3(8u), uvec3(0u), bvec3((x & uvec3(255u))));
x = (x >> b8);
- uvec3 b4 = mix(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
+ uvec3 b4 = tint_select(uvec3(4u), uvec3(0u), bvec3((x & uvec3(15u))));
x = (x >> b4);
- uvec3 b2 = mix(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
+ uvec3 b2 = tint_select(uvec3(2u), uvec3(0u), bvec3((x & uvec3(3u))));
x = (x >> b2);
- uvec3 b1 = mix(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
- uvec3 is_zero = mix(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
+ uvec3 b1 = tint_select(uvec3(1u), uvec3(0u), bvec3((x & uvec3(1u))));
+ uvec3 is_zero = tint_select(uvec3(0u), uvec3(4294967295u), equal(x, uvec3(0u)));
return uvec3((((((b16 | b8) | b4) | b2) | b1) | is_zero));
}
diff --git a/test/tint/builtins/gen/var/select/00b848.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/00b848.wgsl.expected.glsl
index 8336837..34f6617 100644
--- a/test/tint/builtins/gen/var/select/00b848.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/00b848.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+ivec2 tint_select(ivec2 param_0, ivec2 param_1, bvec2 param_2) {
+ return ivec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec2 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
ivec2 arg_0 = ivec2(1);
ivec2 arg_1 = ivec2(1);
bvec2 arg_2 = bvec2(true);
- ivec2 res = mix(arg_0, arg_1, arg_2);
+ ivec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+ivec2 tint_select(ivec2 param_0, ivec2 param_1, bvec2 param_2) {
+ return ivec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec2 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
ivec2 arg_0 = ivec2(1);
ivec2 arg_1 = ivec2(1);
bvec2 arg_2 = bvec2(true);
- ivec2 res = mix(arg_0, arg_1, arg_2);
+ ivec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+ivec2 tint_select(ivec2 param_0, ivec2 param_1, bvec2 param_2) {
+ return ivec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec2 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
ivec2 arg_0 = ivec2(1);
ivec2 arg_1 = ivec2(1);
bvec2 arg_2 = bvec2(true);
- ivec2 res = mix(arg_0, arg_1, arg_2);
+ ivec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.glsl
index 0eac9de..ca70929 100644
--- a/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/01e2cd.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+ivec3 tint_select(ivec3 param_0, ivec3 param_1, bvec3 param_2) {
+ return ivec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec3 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
ivec3 arg_0 = ivec3(1);
ivec3 arg_1 = ivec3(1);
bvec3 arg_2 = bvec3(true);
- ivec3 res = mix(arg_0, arg_1, arg_2);
+ ivec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+ivec3 tint_select(ivec3 param_0, ivec3 param_1, bvec3 param_2) {
+ return ivec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec3 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
ivec3 arg_0 = ivec3(1);
ivec3 arg_1 = ivec3(1);
bvec3 arg_2 = bvec3(true);
- ivec3 res = mix(arg_0, arg_1, arg_2);
+ ivec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+ivec3 tint_select(ivec3 param_0, ivec3 param_1, bvec3 param_2) {
+ return ivec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec3 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
ivec3 arg_0 = ivec3(1);
ivec3 arg_1 = ivec3(1);
bvec3 arg_2 = bvec3(true);
- ivec3 res = mix(arg_0, arg_1, arg_2);
+ ivec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.glsl
index 142c5af..ed90de5 100644
--- a/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/1e960b.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec2 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
uvec2 arg_0 = uvec2(1u);
uvec2 arg_1 = uvec2(1u);
bvec2 arg_2 = bvec2(true);
- uvec2 res = mix(arg_0, arg_1, arg_2);
+ uvec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec2 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
uvec2 arg_0 = uvec2(1u);
uvec2 arg_1 = uvec2(1u);
bvec2 arg_2 = bvec2(true);
- uvec2 res = mix(arg_0, arg_1, arg_2);
+ uvec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+uvec2 tint_select(uvec2 param_0, uvec2 param_1, bvec2 param_2) {
+ return uvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec2 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
uvec2 arg_0 = uvec2(1u);
uvec2 arg_1 = uvec2(1u);
bvec2 arg_2 = bvec2(true);
- uvec2 res = mix(arg_0, arg_1, arg_2);
+ uvec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.glsl
index 406d203..68e04ae 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
void select_1f4d93() {
bvec2 arg_2 = bvec2(true);
- vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
+ vec2 res = tint_select(vec2(1.0f), vec2(1.0f), arg_2);
}
vec4 vertex_main() {
@@ -21,9 +26,14 @@
#version 310 es
precision mediump float;
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
void select_1f4d93() {
bvec2 arg_2 = bvec2(true);
- vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
+ vec2 res = tint_select(vec2(1.0f), vec2(1.0f), arg_2);
}
void fragment_main() {
@@ -36,9 +46,14 @@
}
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
void select_1f4d93() {
bvec2 arg_2 = bvec2(true);
- vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
+ vec2 res = tint_select(vec2(1.0f), vec2(1.0f), arg_2);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/266aff.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/266aff.wgsl.expected.glsl
index f922003..2143720 100644
--- a/test/tint/builtins/gen/var/select/266aff.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/266aff.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec2 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
vec2 arg_0 = vec2(1.0f);
vec2 arg_1 = vec2(1.0f);
bvec2 arg_2 = bvec2(true);
- vec2 res = mix(arg_0, arg_1, arg_2);
+ vec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec2 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
vec2 arg_0 = vec2(1.0f);
vec2 arg_1 = vec2(1.0f);
bvec2 arg_2 = bvec2(true);
- vec2 res = mix(arg_0, arg_1, arg_2);
+ vec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+vec2 tint_select(vec2 param_0, vec2 param_1, bvec2 param_2) {
+ return vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec2 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
vec2 arg_0 = vec2(1.0f);
vec2 arg_1 = vec2(1.0f);
bvec2 arg_2 = bvec2(true);
- vec2 res = mix(arg_0, arg_1, arg_2);
+ vec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.glsl
index 2f8093b..6802318 100644
--- a/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/28a27e.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec3 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
uvec3 arg_0 = uvec3(1u);
uvec3 arg_1 = uvec3(1u);
bvec3 arg_2 = bvec3(true);
- uvec3 res = mix(arg_0, arg_1, arg_2);
+ uvec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec3 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
uvec3 arg_0 = uvec3(1u);
uvec3 arg_1 = uvec3(1u);
bvec3 arg_2 = bvec3(true);
- uvec3 res = mix(arg_0, arg_1, arg_2);
+ uvec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+uvec3 tint_select(uvec3 param_0, uvec3 param_1, bvec3 param_2) {
+ return uvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec3 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
uvec3 arg_0 = uvec3(1u);
uvec3 arg_1 = uvec3(1u);
bvec3 arg_2 = bvec3(true);
- uvec3 res = mix(arg_0, arg_1, arg_2);
+ uvec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.glsl
index 12eb956..31d3ede 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
void select_2c96d4() {
bvec3 arg_2 = bvec3(true);
- vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
+ vec3 res = tint_select(vec3(1.0f), vec3(1.0f), arg_2);
}
vec4 vertex_main() {
@@ -21,9 +26,14 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
void select_2c96d4() {
bvec3 arg_2 = bvec3(true);
- vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
+ vec3 res = tint_select(vec3(1.0f), vec3(1.0f), arg_2);
}
void fragment_main() {
@@ -36,9 +46,14 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
void select_2c96d4() {
bvec3 arg_2 = bvec3(true);
- vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
+ vec3 res = tint_select(vec3(1.0f), vec3(1.0f), arg_2);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.glsl
index 2809a08..ce206d6 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
+ivec2 tint_select(ivec2 param_0, ivec2 param_1, bvec2 param_2) {
+ return ivec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
void select_431dfb() {
bvec2 arg_2 = bvec2(true);
- ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
+ ivec2 res = tint_select(ivec2(1), ivec2(1), arg_2);
}
vec4 vertex_main() {
@@ -21,9 +26,14 @@
#version 310 es
precision mediump float;
+ivec2 tint_select(ivec2 param_0, ivec2 param_1, bvec2 param_2) {
+ return ivec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
void select_431dfb() {
bvec2 arg_2 = bvec2(true);
- ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
+ ivec2 res = tint_select(ivec2(1), ivec2(1), arg_2);
}
void fragment_main() {
@@ -36,9 +46,14 @@
}
#version 310 es
+ivec2 tint_select(ivec2 param_0, ivec2 param_1, bvec2 param_2) {
+ return ivec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
void select_431dfb() {
bvec2 arg_2 = bvec2(true);
- ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
+ ivec2 res = tint_select(ivec2(1), ivec2(1), arg_2);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.glsl
index ad6e80e..f709f8a 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
void select_43741e() {
bvec4 arg_2 = bvec4(true);
- vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
+ vec4 res = tint_select(vec4(1.0f), vec4(1.0f), arg_2);
}
vec4 vertex_main() {
@@ -21,9 +26,14 @@
#version 310 es
precision mediump float;
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
void select_43741e() {
bvec4 arg_2 = bvec4(true);
- vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
+ vec4 res = tint_select(vec4(1.0f), vec4(1.0f), arg_2);
}
void fragment_main() {
@@ -36,9 +46,14 @@
}
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
void select_43741e() {
bvec4 arg_2 = bvec4(true);
- vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
+ vec4 res = tint_select(vec4(1.0f), vec4(1.0f), arg_2);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.glsl
index 699889b..88de1f6 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
+ivec4 tint_select(ivec4 param_0, ivec4 param_1, bvec4 param_2) {
+ return ivec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
void select_4c4738() {
bvec4 arg_2 = bvec4(true);
- ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
+ ivec4 res = tint_select(ivec4(1), ivec4(1), arg_2);
}
vec4 vertex_main() {
@@ -21,9 +26,14 @@
#version 310 es
precision mediump float;
+ivec4 tint_select(ivec4 param_0, ivec4 param_1, bvec4 param_2) {
+ return ivec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
void select_4c4738() {
bvec4 arg_2 = bvec4(true);
- ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
+ ivec4 res = tint_select(ivec4(1), ivec4(1), arg_2);
}
void fragment_main() {
@@ -36,9 +46,14 @@
}
#version 310 es
+ivec4 tint_select(ivec4 param_0, ivec4 param_1, bvec4 param_2) {
+ return ivec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
void select_4c4738() {
bvec4 arg_2 = bvec4(true);
- ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
+ ivec4 res = tint_select(ivec4(1), ivec4(1), arg_2);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/53d518.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.glsl
index a35f1dd..5d50641 100644
--- a/test/tint/builtins/gen/var/select/53d518.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/53d518.wgsl.expected.glsl
@@ -1,6 +1,11 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec3 inner;
} prevent_dce;
@@ -9,7 +14,7 @@
f16vec3 arg_0 = f16vec3(1.0hf);
f16vec3 arg_1 = f16vec3(1.0hf);
bvec3 arg_2 = bvec3(true);
- f16vec3 res = mix(arg_0, arg_1, arg_2);
+ f16vec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -30,6 +35,11 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec3 inner;
} prevent_dce;
@@ -38,7 +48,7 @@
f16vec3 arg_0 = f16vec3(1.0hf);
f16vec3 arg_1 = f16vec3(1.0hf);
bvec3 arg_2 = bvec3(true);
- f16vec3 res = mix(arg_0, arg_1, arg_2);
+ f16vec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -53,6 +63,11 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec3 tint_select(f16vec3 param_0, f16vec3 param_1, bvec3 param_2) {
+ return f16vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec3 inner;
} prevent_dce;
@@ -61,7 +76,7 @@
f16vec3 arg_0 = f16vec3(1.0hf);
f16vec3 arg_1 = f16vec3(1.0hf);
bvec3 arg_2 = bvec3(true);
- f16vec3 res = mix(arg_0, arg_1, arg_2);
+ f16vec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.glsl
index ae911fe..b6bce8a 100644
--- a/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/80a9a9.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+bvec3 tint_select(bvec3 param_0, bvec3 param_1, bvec3 param_2) {
+ return bvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -8,7 +13,7 @@
bvec3 arg_0 = bvec3(true);
bvec3 arg_1 = bvec3(true);
bvec3 arg_2 = bvec3(true);
- bvec3 res = mix(arg_0, arg_1, arg_2);
+ bvec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec3(false))) ? 1 : 0);
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+bvec3 tint_select(bvec3 param_0, bvec3 param_1, bvec3 param_2) {
+ return bvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -36,7 +46,7 @@
bvec3 arg_0 = bvec3(true);
bvec3 arg_1 = bvec3(true);
bvec3 arg_2 = bvec3(true);
- bvec3 res = mix(arg_0, arg_1, arg_2);
+ bvec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec3(false))) ? 1 : 0);
}
@@ -50,6 +60,11 @@
}
#version 310 es
+bvec3 tint_select(bvec3 param_0, bvec3 param_1, bvec3 param_2) {
+ return bvec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -58,7 +73,7 @@
bvec3 arg_0 = bvec3(true);
bvec3 arg_1 = bvec3(true);
bvec3 arg_2 = bvec3(true);
- bvec3 res = mix(arg_0, arg_1, arg_2);
+ bvec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec3(false))) ? 1 : 0);
}
diff --git a/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.glsl
index e3122b2..be587c1 100644
--- a/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/a081f1.wgsl.expected.glsl
@@ -1,6 +1,11 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec4 inner;
} prevent_dce;
@@ -9,7 +14,7 @@
f16vec4 arg_0 = f16vec4(1.0hf);
f16vec4 arg_1 = f16vec4(1.0hf);
bvec4 arg_2 = bvec4(true);
- f16vec4 res = mix(arg_0, arg_1, arg_2);
+ f16vec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -30,6 +35,11 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec4 inner;
} prevent_dce;
@@ -38,7 +48,7 @@
f16vec4 arg_0 = f16vec4(1.0hf);
f16vec4 arg_1 = f16vec4(1.0hf);
bvec4 arg_2 = bvec4(true);
- f16vec4 res = mix(arg_0, arg_1, arg_2);
+ f16vec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -53,6 +63,11 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec4 tint_select(f16vec4 param_0, f16vec4 param_1, bvec4 param_2) {
+ return f16vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec4 inner;
} prevent_dce;
@@ -61,7 +76,7 @@
f16vec4 arg_0 = f16vec4(1.0hf);
f16vec4 arg_1 = f16vec4(1.0hf);
bvec4 arg_2 = bvec4(true);
- f16vec4 res = mix(arg_0, arg_1, arg_2);
+ f16vec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.glsl
index 7700faa..f71683a 100644
--- a/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/a2860e.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+ivec4 tint_select(ivec4 param_0, ivec4 param_1, bvec4 param_2) {
+ return ivec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec4 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
ivec4 arg_0 = ivec4(1);
ivec4 arg_1 = ivec4(1);
bvec4 arg_2 = bvec4(true);
- ivec4 res = mix(arg_0, arg_1, arg_2);
+ ivec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+ivec4 tint_select(ivec4 param_0, ivec4 param_1, bvec4 param_2) {
+ return ivec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec4 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
ivec4 arg_0 = ivec4(1);
ivec4 arg_1 = ivec4(1);
bvec4 arg_2 = bvec4(true);
- ivec4 res = mix(arg_0, arg_1, arg_2);
+ ivec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+ivec4 tint_select(ivec4 param_0, ivec4 param_1, bvec4 param_2) {
+ return ivec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
ivec4 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
ivec4 arg_0 = ivec4(1);
ivec4 arg_1 = ivec4(1);
bvec4 arg_2 = bvec4(true);
- ivec4 res = mix(arg_0, arg_1, arg_2);
+ ivec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.glsl
index a3b90cd..e307458 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.glsl
@@ -1,8 +1,13 @@
#version 310 es
+ivec3 tint_select(ivec3 param_0, ivec3 param_1, bvec3 param_2) {
+ return ivec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
void select_b93806() {
bvec3 arg_2 = bvec3(true);
- ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
+ ivec3 res = tint_select(ivec3(1), ivec3(1), arg_2);
}
vec4 vertex_main() {
@@ -21,9 +26,14 @@
#version 310 es
precision mediump float;
+ivec3 tint_select(ivec3 param_0, ivec3 param_1, bvec3 param_2) {
+ return ivec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
void select_b93806() {
bvec3 arg_2 = bvec3(true);
- ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
+ ivec3 res = tint_select(ivec3(1), ivec3(1), arg_2);
}
void fragment_main() {
@@ -36,9 +46,14 @@
}
#version 310 es
+ivec3 tint_select(ivec3 param_0, ivec3 param_1, bvec3 param_2) {
+ return ivec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
void select_b93806() {
bvec3 arg_2 = bvec3(true);
- ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
+ ivec3 res = tint_select(ivec3(1), ivec3(1), arg_2);
}
void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.glsl
index fa4c216..41dcfae 100644
--- a/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/bb8aae.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec4 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
vec4 arg_0 = vec4(1.0f);
vec4 arg_1 = vec4(1.0f);
bvec4 arg_2 = bvec4(true);
- vec4 res = mix(arg_0, arg_1, arg_2);
+ vec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec4 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
vec4 arg_0 = vec4(1.0f);
vec4 arg_1 = vec4(1.0f);
bvec4 arg_2 = bvec4(true);
- vec4 res = mix(arg_0, arg_1, arg_2);
+ vec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+vec4 tint_select(vec4 param_0, vec4 param_1, bvec4 param_2) {
+ return vec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec4 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
vec4 arg_0 = vec4(1.0f);
vec4 arg_1 = vec4(1.0f);
bvec4 arg_2 = bvec4(true);
- vec4 res = mix(arg_0, arg_1, arg_2);
+ vec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.glsl
index eea27e0..34cd123 100644
--- a/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/c4a4ef.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec4 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
uvec4 arg_0 = uvec4(1u);
uvec4 arg_1 = uvec4(1u);
bvec4 arg_2 = bvec4(true);
- uvec4 res = mix(arg_0, arg_1, arg_2);
+ uvec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec4 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
uvec4 arg_0 = uvec4(1u);
uvec4 arg_1 = uvec4(1u);
bvec4 arg_2 = bvec4(true);
- uvec4 res = mix(arg_0, arg_1, arg_2);
+ uvec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+uvec4 tint_select(uvec4 param_0, uvec4 param_1, bvec4 param_2) {
+ return uvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
uvec4 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
uvec4 arg_0 = uvec4(1u);
uvec4 arg_1 = uvec4(1u);
bvec4 arg_2 = bvec4(true);
- uvec4 res = mix(arg_0, arg_1, arg_2);
+ uvec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.glsl
index d8a9f13..27d8377 100644
--- a/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/cb9301.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+bvec2 tint_select(bvec2 param_0, bvec2 param_1, bvec2 param_2) {
+ return bvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -8,7 +13,7 @@
bvec2 arg_0 = bvec2(true);
bvec2 arg_1 = bvec2(true);
bvec2 arg_2 = bvec2(true);
- bvec2 res = mix(arg_0, arg_1, arg_2);
+ bvec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec2(false))) ? 1 : 0);
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+bvec2 tint_select(bvec2 param_0, bvec2 param_1, bvec2 param_2) {
+ return bvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -36,7 +46,7 @@
bvec2 arg_0 = bvec2(true);
bvec2 arg_1 = bvec2(true);
bvec2 arg_2 = bvec2(true);
- bvec2 res = mix(arg_0, arg_1, arg_2);
+ bvec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec2(false))) ? 1 : 0);
}
@@ -50,6 +60,11 @@
}
#version 310 es
+bvec2 tint_select(bvec2 param_0, bvec2 param_1, bvec2 param_2) {
+ return bvec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -58,7 +73,7 @@
bvec2 arg_0 = bvec2(true);
bvec2 arg_1 = bvec2(true);
bvec2 arg_2 = bvec2(true);
- bvec2 res = mix(arg_0, arg_1, arg_2);
+ bvec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec2(false))) ? 1 : 0);
}
diff --git a/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.glsl
index 8e52828..38837aa 100644
--- a/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/e3e028.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+bvec4 tint_select(bvec4 param_0, bvec4 param_1, bvec4 param_2) {
+ return bvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -8,7 +13,7 @@
bvec4 arg_0 = bvec4(true);
bvec4 arg_1 = bvec4(true);
bvec4 arg_2 = bvec4(true);
- bvec4 res = mix(arg_0, arg_1, arg_2);
+ bvec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec4(false))) ? 1 : 0);
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+bvec4 tint_select(bvec4 param_0, bvec4 param_1, bvec4 param_2) {
+ return bvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -36,7 +46,7 @@
bvec4 arg_0 = bvec4(true);
bvec4 arg_1 = bvec4(true);
bvec4 arg_2 = bvec4(true);
- bvec4 res = mix(arg_0, arg_1, arg_2);
+ bvec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec4(false))) ? 1 : 0);
}
@@ -50,6 +60,11 @@
}
#version 310 es
+bvec4 tint_select(bvec4 param_0, bvec4 param_1, bvec4 param_2) {
+ return bvec4(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2], param_2[3] ? param_1[3] : param_0[3]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
int inner;
} prevent_dce;
@@ -58,7 +73,7 @@
bvec4 arg_0 = bvec4(true);
bvec4 arg_1 = bvec4(true);
bvec4 arg_2 = bvec4(true);
- bvec4 res = mix(arg_0, arg_1, arg_2);
+ bvec4 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = (all(equal(res, bvec4(false))) ? 1 : 0);
}
diff --git a/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.glsl
index 3b4a3fe..94aa569 100644
--- a/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/ebfea2.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec3 inner;
} prevent_dce;
@@ -8,7 +13,7 @@
vec3 arg_0 = vec3(1.0f);
vec3 arg_1 = vec3(1.0f);
bvec3 arg_2 = bvec3(true);
- vec3 res = mix(arg_0, arg_1, arg_2);
+ vec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -28,6 +33,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec3 inner;
} prevent_dce;
@@ -36,7 +46,7 @@
vec3 arg_0 = vec3(1.0f);
vec3 arg_1 = vec3(1.0f);
bvec3 arg_2 = bvec3(true);
- vec3 res = mix(arg_0, arg_1, arg_2);
+ vec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -50,6 +60,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
vec3 inner;
} prevent_dce;
@@ -58,7 +73,7 @@
vec3 arg_0 = vec3(1.0f);
vec3 arg_1 = vec3(1.0f);
bvec3 arg_2 = bvec3(true);
- vec3 res = mix(arg_0, arg_1, arg_2);
+ vec3 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.glsl
index a63a36e..0d186fb 100644
--- a/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/ed7c13.wgsl.expected.glsl
@@ -1,6 +1,11 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec2 inner;
} prevent_dce;
@@ -9,7 +14,7 @@
f16vec2 arg_0 = f16vec2(1.0hf);
f16vec2 arg_1 = f16vec2(1.0hf);
bvec2 arg_2 = bvec2(true);
- f16vec2 res = mix(arg_0, arg_1, arg_2);
+ f16vec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -30,6 +35,11 @@
#extension GL_AMD_gpu_shader_half_float : require
precision mediump float;
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec2 inner;
} prevent_dce;
@@ -38,7 +48,7 @@
f16vec2 arg_0 = f16vec2(1.0hf);
f16vec2 arg_1 = f16vec2(1.0hf);
bvec2 arg_2 = bvec2(true);
- f16vec2 res = mix(arg_0, arg_1, arg_2);
+ f16vec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
@@ -53,6 +63,11 @@
#version 310 es
#extension GL_AMD_gpu_shader_half_float : require
+f16vec2 tint_select(f16vec2 param_0, f16vec2 param_1, bvec2 param_2) {
+ return f16vec2(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1]);
+}
+
+
layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
f16vec2 inner;
} prevent_dce;
@@ -61,7 +76,7 @@
f16vec2 arg_0 = f16vec2(1.0hf);
f16vec2 arg_1 = f16vec2(1.0hf);
bvec2 arg_2 = bvec2(true);
- f16vec2 res = mix(arg_0, arg_1, arg_2);
+ f16vec2 res = tint_select(arg_0, arg_1, arg_2);
prevent_dce.inner = res;
}
diff --git a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl
index fc212c8..8f1e2bf 100644
--- a/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/1bfdfb.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -49,7 +54,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, uvec2 coord, ExternalTextureParams params) {
@@ -100,6 +105,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -149,7 +159,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, uvec2 coord, ExternalTextureParams params) {
@@ -194,6 +204,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -243,7 +258,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, uvec2 coord, ExternalTextureParams params) {
diff --git a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
index 41ee7e5..71e9f39 100644
--- a/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureLoad/8acf41.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -49,7 +54,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
@@ -100,6 +105,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -149,7 +159,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
@@ -194,6 +204,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -243,7 +258,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
vec4 textureLoadExternal(highp sampler2D plane0_1, highp sampler2D plane1_1, ivec2 coord, ExternalTextureParams params) {
diff --git a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
index 6b17300..cf69f93 100644
--- a/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/textureSampleBaseClampToEdge/7c04e6.wgsl.expected.glsl
@@ -1,5 +1,10 @@
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -49,7 +54,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
@@ -109,6 +114,11 @@
#version 310 es
precision mediump float;
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -158,7 +168,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}
@@ -212,6 +222,11 @@
}
#version 310 es
+vec3 tint_select(vec3 param_0, vec3 param_1, bvec3 param_2) {
+ return vec3(param_2[0] ? param_1[0] : param_0[0], param_2[1] ? param_1[1] : param_0[1], param_2[2] ? param_1[2] : param_0[2]);
+}
+
+
struct GammaTransferParams {
float G;
float A;
@@ -261,7 +276,7 @@
bvec3 cond = lessThan(abs(v), vec3(params.D));
vec3 t = (sign(v) * ((params.C * abs(v)) + params.F));
vec3 f = (sign(v) * (pow(((params.A * abs(v)) + params.B), vec3(params.G)) + params.E));
- return mix(f, t, cond);
+ return tint_select(f, t, cond);
}