diff --git a/test/tint/builtins/gen/gen.wgsl.tmpl b/test/tint/builtins/gen/gen.wgsl.tmpl
index 3c30474..f0cbd4a 100644
--- a/test/tint/builtins/gen/gen.wgsl.tmpl
+++ b/test/tint/builtins/gen/gen.wgsl.tmpl
@@ -273,8 +273,8 @@
 {{-   if      eq $ty.Target.Name "i32"  -}}{{$value}}i
 {{-   else if eq $ty.Target.Name "u32"  -}}{{$value}}u
 {{-   else if eq $ty.Target.Name "f32"  -}}{{$float_value}}f
-{{-   else if eq $ty.Target.Name "fa"   -}}{{$value}}
-{{-   else if eq $ty.Target.Name "ia"   -}}{{$float_value}}0
+{{-   else if eq $ty.Target.Name "fa"   -}}{{$float_value}}
+{{-   else if eq $ty.Target.Name "ia"   -}}{{$value}}
 {{-   else if eq $ty.Target.Name "bool" -}}true
 {{-   else if eq $ty.Target.Name "vec"  -}}
 {{-     $el := Eval "ArgumentValue" "Type" (ElementType .Type) "Name" "" "TestValue" .TestValue }}
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl
index 9a01ee4..be8f698 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<3, fa>) -> vec<3, fa>
 fn abs_2f861b() {
-  var res = abs(vec3(1));
+  var res = abs(vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.dxc.hlsl
index 6315af3..d3dc754 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_2f861b() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.fxc.hlsl
index 6315af3..d3dc754 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_2f861b() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.glsl
index b669674..b068d2d 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_2f861b() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_2f861b() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_2f861b() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.msl
index d985285..3fef020 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_2f861b() {
-  int3 res = int3(1);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.spvasm
index b10efe2..2060ef1 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %19 = OpConstantNull %v3int
-         %20 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+         %19 = OpTypeFunction %v4float
  %abs_2f861b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v3float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %abs_2f861b
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %abs_2f861b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_2f861b
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_2f861b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %abs_2f861b
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_2f861b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.wgsl
index 5d6095f..576b78c 100644
--- a/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/2f861b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_2f861b() {
-  var res = abs(vec3(1));
+  var res = abs(vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl
index 0a1d61f..31f2110 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<2, ia>) -> vec<2, ia>
 fn abs_577d6e() {
-  var res = abs(vec2(1.0));
+  var res = abs(vec2(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.dxc.hlsl
index b4f3ce7..d24e2b9 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_577d6e() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.fxc.hlsl
index b4f3ce7..d24e2b9 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_577d6e() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.glsl
index 096262c..43a48a3 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_577d6e() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_577d6e() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_577d6e() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.msl
index 4e92bd1..2d6f835 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_577d6e() {
-  float2 res = float2(1.0f);
+  int2 res = int2(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.spvasm
index 648166a..684510a 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %18 = OpConstantNull %v2float
-         %19 = OpTypeFunction %v4float
  %abs_577d6e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %abs_577d6e
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_577d6e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_577d6e
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_577d6e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_577d6e
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_577d6e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.wgsl
index 776e79a..083730e 100644
--- a/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/577d6e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_577d6e() {
-  var res = abs(vec2(1.0));
+  var res = abs(vec2(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl
index 8410ba1..334c793 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(ia) -> ia
 fn abs_5a8af1() {
-  var res = abs(1.0);
+  var res = abs(1);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.dxc.hlsl
index d571cd6..86901c6 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.fxc.hlsl
index d571cd6..86901c6 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.glsl
index 98ca290..d454d02 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.msl
index 6ef8f36..a3468f9 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.spvasm
index 5027752..6201ee3 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 29
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,34 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%_ptr_Function_float = OpTypePointer Function %float
-         %16 = OpTypeFunction %v4float
  %abs_5a8af1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1
+        %res = OpVariable %_ptr_Function_int Function %17
+               OpStore %res %int_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %16
-         %18 = OpLabel
-         %19 = OpFunctionCall %void %abs_5a8af1
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %abs_5a8af1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %21 = OpLabel
-         %22 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %22
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %abs_5a8af1
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_5a8af1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_5a8af1
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_5a8af1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.wgsl
index 2af33ab..1a0ff09 100644
--- a/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/5a8af1.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_5a8af1() {
-  var res = abs(1.0);
+  var res = abs(1);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl
index fe0ea5d..2605964 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<2, fa>) -> vec<2, fa>
 fn abs_82ff9d() {
-  var res = abs(vec2(1));
+  var res = abs(vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.dxc.hlsl
index 60243f7..558b2e3 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_82ff9d() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.fxc.hlsl
index 60243f7..558b2e3 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_82ff9d() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.glsl
index f1cc268..7eeff32 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_82ff9d() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_82ff9d() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_82ff9d() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.msl
index 43cd910..d82882e 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_82ff9d() {
-  int2 res = int2(1);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.spvasm
index ad5dc10..71a0bed 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %19 = OpConstantNull %v2int
-         %20 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+         %19 = OpTypeFunction %v4float
  %abs_82ff9d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v2float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %abs_82ff9d
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %abs_82ff9d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_82ff9d
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_82ff9d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %abs_82ff9d
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_82ff9d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.wgsl
index 9bd3f7c..264b26b 100644
--- a/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/82ff9d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_82ff9d() {
-  var res = abs(vec2(1));
+  var res = abs(vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl
index f99c3c8..c74fefe 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<4, ia>) -> vec<4, ia>
 fn abs_8ca9b1() {
-  var res = abs(vec4(1.0));
+  var res = abs(vec4(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.dxc.hlsl
index 254e652..ded6c62 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_8ca9b1() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.fxc.hlsl
index 254e652..ded6c62 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_8ca9b1() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.glsl
index 3e153f7..c3fce66 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_8ca9b1() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_8ca9b1() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_8ca9b1() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.msl
index 8dd66e4..4681936 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_8ca9b1() {
-  float4 res = float4(1.0f);
+  int4 res = int4(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.spvasm
index 967646f..447b039 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,35 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %17 = OpTypeFunction %v4float
  %abs_8ca9b1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_v4int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %abs_8ca9b1
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_8ca9b1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %abs_8ca9b1
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_8ca9b1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %abs_8ca9b1
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_8ca9b1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.wgsl
index 6817228..c9af059 100644
--- a/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/8ca9b1.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_8ca9b1() {
-  var res = abs(vec4(1.0));
+  var res = abs(vec4(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl
index b9167db..47d2310 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(fa) -> fa
 fn abs_aedb6d() {
-  var res = abs(1);
+  var res = abs(1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.dxc.hlsl
index c6333ed..1de84a5 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.fxc.hlsl
index c6333ed..1de84a5 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.glsl
index 8f21da4..a7d37b0 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.msl
index e27ed9f..3434978 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.spvasm
index f52b339..f41bcf1 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,34 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
-%_ptr_Function_int = OpTypePointer Function %int
-         %17 = OpConstantNull %int
-         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpTypeFunction %v4float
  %abs_aedb6d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %17
-               OpStore %res %int_1
+        %res = OpVariable %_ptr_Function_float Function %8
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %abs_aedb6d
+%vertex_main_inner = OpFunction %v4float None %16
+         %18 = OpLabel
+         %19 = OpFunctionCall %void %abs_aedb6d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %21 = OpLabel
+         %22 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %22
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_aedb6d
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %abs_aedb6d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_aedb6d
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_aedb6d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.wgsl
index 21a2cd9..7d26e94 100644
--- a/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/aedb6d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_aedb6d() {
-  var res = abs(1);
+  var res = abs(1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl
index 4276e5b..02f8b1e 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<3, ia>) -> vec<3, ia>
 fn abs_c3321c() {
-  var res = abs(vec3(1.0));
+  var res = abs(vec3(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.dxc.hlsl
index d56d57a..0aa2ad9 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_c3321c() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.fxc.hlsl
index d56d57a..0aa2ad9 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_c3321c() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.glsl
index 6b1cea3..d9a6e95 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_c3321c() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_c3321c() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_c3321c() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.msl
index eed8424..ffdb7d7 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_c3321c() {
-  float3 res = float3(1.0f);
+  int3 res = int3(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.spvasm
index 92db6e9..c8fed58 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %19 = OpConstantNull %v3int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %18 = OpConstantNull %v3float
-         %19 = OpTypeFunction %v4float
  %abs_c3321c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %abs_c3321c
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_c3321c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_c3321c
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_c3321c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_c3321c
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_c3321c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.wgsl
index db49261..530331b 100644
--- a/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/c3321c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_c3321c() {
-  var res = abs(vec3(1.0));
+  var res = abs(vec3(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl b/test/tint/builtins/gen/literal/abs/e28785.wgsl
index 714f3e1..fef7ec2 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<4, fa>) -> vec<4, fa>
 fn abs_e28785() {
-  var res = abs(vec4(1));
+  var res = abs(vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.dxc.hlsl
index 0c83f68..46f6f3f 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_e28785() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.fxc.hlsl
index 0c83f68..46f6f3f 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_e28785() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.glsl
index ef86df6..4255eda 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_e28785() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_e28785() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_e28785() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.msl
index f88e571..3f089fb 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_e28785() {
-  int4 res = int4(1);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.spvasm
index fb64961..556e68f 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,35 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %19 = OpConstantNull %v4int
-         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %17 = OpTypeFunction %v4float
  %abs_e28785 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %res %14
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %abs_e28785
+%vertex_main_inner = OpFunction %v4float None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %void %abs_e28785
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %22 = OpLabel
+         %23 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %23
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_e28785
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %abs_e28785
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %abs_e28785
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %abs_e28785
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.wgsl
index 3bc8faa..daeba6b 100644
--- a/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/e28785.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_e28785() {
-  var res = abs(vec4(1));
+  var res = abs(vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl
index 31365a1..e6bb7c9 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(vec<2, fa>) -> vec<2, fa>
 fn asinh_16b543() {
-  var res = asinh(vec2(1));
+  var res = asinh(vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.wgsl
index f217102..8a0b120 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_16b543() {
-  var res = asinh(vec2(1));
+  var res = asinh(vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl b/test/tint/builtins/gen/literal/asinh/180015.wgsl
index 47c858b..13a71e5 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(fa) -> fa
 fn asinh_180015() {
-  var res = asinh(1);
+  var res = asinh(1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.wgsl
index 3f22b94..5df9254 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_180015() {
-  var res = asinh(1);
+  var res = asinh(1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl
index fab89bb..ffa2088 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(vec<3, fa>) -> vec<3, fa>
 fn asinh_51079e() {
-  var res = asinh(vec3(1));
+  var res = asinh(vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.wgsl
index 2d5243a..f27857a 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_51079e() {
-  var res = asinh(vec3(1));
+  var res = asinh(vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl
index f95151e..e97e89c 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(vec<4, fa>) -> vec<4, fa>
 fn asinh_cf8603() {
-  var res = asinh(vec4(1));
+  var res = asinh(vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.wgsl
index 4b2dda5..3392655 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_cf8603() {
-  var res = asinh(vec4(1));
+  var res = asinh(vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl
index 1b43620..5368be1 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(vec<2, fa>) -> vec<2, fa>
 fn atan_5ca7b8() {
-  var res = atan(vec2(1));
+  var res = atan(vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.wgsl
index d073436..26355d8 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_5ca7b8() {
-  var res = atan(vec2(1));
+  var res = atan(vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl
index 99655a7..63e018f 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(vec<3, fa>) -> vec<3, fa>
 fn atan_749e1b() {
-  var res = atan(vec3(1));
+  var res = atan(vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.wgsl
index bd23c31..cc19ade 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_749e1b() {
-  var res = atan(vec3(1));
+  var res = atan(vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl
index 51eddfb..f00b09c 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(fa) -> fa
 fn atan_7a2a75() {
-  var res = atan(1);
+  var res = atan(1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.wgsl
index da9a954..0d93854 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_7a2a75() {
-  var res = atan(1);
+  var res = atan(1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl
index 9b46759..0f2841b 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(vec<4, fa>) -> vec<4, fa>
 fn atan_d17fb2() {
-  var res = atan(vec4(1));
+  var res = atan(vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.wgsl
index cc6d644..f1551a9 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_d17fb2() {
-  var res = atan(vec4(1));
+  var res = atan(vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl
index 2e7ead5..400f9ca 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan2(fa, fa) -> fa
 fn atan2_034ace() {
-  var res = atan2(1, 1);
+  var res = atan2(1., 1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl
index 5e22efa..25f943e 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan2_034ace() {
-  var res = atan2(1, 1);
+  var res = atan2(1.0, 1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl
index e0da8cf..8563293 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan2(vec<3, fa>, vec<3, fa>) -> vec<3, fa>
 fn atan2_3c2865() {
-  var res = atan2(vec3(1), vec3(1));
+  var res = atan2(vec3(1.), vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl
index ee5ee3d..73fca7a 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan2_3c2865() {
-  var res = atan2(vec3(1), vec3(1));
+  var res = atan2(vec3(1.0), vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl
index 7ea0343..efca3ab 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan2(vec<2, fa>, vec<2, fa>) -> vec<2, fa>
 fn atan2_c19683() {
-  var res = atan2(vec2(1), vec2(1));
+  var res = atan2(vec2(1.), vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl
index efb9bad..14175d0 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan2_c19683() {
-  var res = atan2(vec2(1), vec2(1));
+  var res = atan2(vec2(1.0), vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl
index a80cebe..9afdfaa 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan2(vec<4, fa>, vec<4, fa>) -> vec<4, fa>
 fn atan2_c4be45() {
-  var res = atan2(vec4(1), vec4(1));
+  var res = atan2(vec4(1.), vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl
index f5c94ec..b1ae91f 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan2_c4be45() {
-  var res = atan2(vec4(1), vec4(1));
+  var res = atan2(vec4(1.0), vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl b/test/tint/builtins/gen/literal/clamp/177548.wgsl
index b1020b4..a7a3f4b 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(vec<2, ia>, vec<2, ia>, vec<2, ia>) -> vec<2, ia>
 fn clamp_177548() {
-  var res = clamp(vec2(1.0), vec2(1.0), vec2(1.0));
+  var res = clamp(vec2(1), vec2(1), vec2(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.dxc.hlsl
index e6db476..0706d74 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_177548() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.fxc.hlsl
index e6db476..0706d74 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_177548() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.glsl
index aef0c70..cc6d48a 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_177548() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_177548() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_177548() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.msl
index 7c91b67..25d698d 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_177548() {
-  float2 res = float2(1.0f);
+  int2 res = int2(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.spvasm
index 2b2e5dc..2a9b2c6 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %18 = OpConstantNull %v2float
-         %19 = OpTypeFunction %v4float
 %clamp_177548 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %clamp_177548
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_177548
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_177548
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_177548
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_177548
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_177548
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.wgsl
index 43342f9..fc13825 100644
--- a/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/177548.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_177548() {
-  var res = clamp(vec2(1.0), vec2(1.0), vec2(1.0));
+  var res = clamp(vec2(1), vec2(1), vec2(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl
index b02caee..2bbd266 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(fa, fa, fa) -> fa
 fn clamp_23aa4f() {
-  var res = clamp(1, 1, 1);
+  var res = clamp(1., 1., 1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.dxc.hlsl
index 95967c6..7b0cd06 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.fxc.hlsl
index 95967c6..7b0cd06 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.glsl
index 745c8d9..cf8f34c 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.msl
index e6b476f..29d1fc6 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.spvasm
index 9e7f69b..7a5bccc 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,34 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
-%_ptr_Function_int = OpTypePointer Function %int
-         %17 = OpConstantNull %int
-         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpTypeFunction %v4float
 %clamp_23aa4f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %17
-               OpStore %res %int_1
+        %res = OpVariable %_ptr_Function_float Function %8
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %clamp_23aa4f
+%vertex_main_inner = OpFunction %v4float None %16
+         %18 = OpLabel
+         %19 = OpFunctionCall %void %clamp_23aa4f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %21 = OpLabel
+         %22 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %22
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_23aa4f
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %clamp_23aa4f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_23aa4f
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_23aa4f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.wgsl
index 8750791..e6a7bb4 100644
--- a/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/23aa4f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_23aa4f() {
-  var res = clamp(1, 1, 1);
+  var res = clamp(1.0, 1.0, 1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl
index 4127bb8..4e81cf3 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(vec<3, fa>, vec<3, fa>, vec<3, fa>) -> vec<3, fa>
 fn clamp_5cf700() {
-  var res = clamp(vec3(1), vec3(1), vec3(1));
+  var res = clamp(vec3(1.), vec3(1.), vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.dxc.hlsl
index 06d6121..ecb46df 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_5cf700() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.fxc.hlsl
index 06d6121..ecb46df 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_5cf700() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.glsl
index a1ce575..2cd1427 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_5cf700() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_5cf700() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_5cf700() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.msl
index 55c384c..ca116af 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_5cf700() {
-  int3 res = int3(1);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.spvasm
index 3b26aca..4414636 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %19 = OpConstantNull %v3int
-         %20 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+         %19 = OpTypeFunction %v4float
 %clamp_5cf700 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v3float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %clamp_5cf700
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %clamp_5cf700
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_5cf700
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_5cf700
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %clamp_5cf700
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_5cf700
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.wgsl
index c7f5c1e..0d0d44b 100644
--- a/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/5cf700.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_5cf700() {
-  var res = clamp(vec3(1), vec3(1), vec3(1));
+  var res = clamp(vec3(1.0), vec3(1.0), vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl
index e24da63..6e3a04a 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(vec<4, fa>, vec<4, fa>, vec<4, fa>) -> vec<4, fa>
 fn clamp_87df46() {
-  var res = clamp(vec4(1), vec4(1), vec4(1));
+  var res = clamp(vec4(1.), vec4(1.), vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.dxc.hlsl
index 8af196a..f9670d0 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_87df46() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.fxc.hlsl
index 8af196a..f9670d0 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_87df46() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.glsl
index b3db98f..1d592a4 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_87df46() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_87df46() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_87df46() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.msl
index 62aa4bb..54934f7 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_87df46() {
-  int4 res = int4(1);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.spvasm
index 0e03650..3273991 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,35 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %19 = OpConstantNull %v4int
-         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %17 = OpTypeFunction %v4float
 %clamp_87df46 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %res %14
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %clamp_87df46
+%vertex_main_inner = OpFunction %v4float None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %void %clamp_87df46
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %22 = OpLabel
+         %23 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %23
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_87df46
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %clamp_87df46
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %clamp_87df46
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %clamp_87df46
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.wgsl
index eeb22ce..8715125 100644
--- a/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/87df46.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_87df46() {
-  var res = clamp(vec4(1), vec4(1), vec4(1));
+  var res = clamp(vec4(1.0), vec4(1.0), vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl
index e849cc8..bfa3d60 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(vec<3, ia>, vec<3, ia>, vec<3, ia>) -> vec<3, ia>
 fn clamp_8b1eaa() {
-  var res = clamp(vec3(1.0), vec3(1.0), vec3(1.0));
+  var res = clamp(vec3(1), vec3(1), vec3(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.dxc.hlsl
index 8270dd1..9ffb0cb 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_8b1eaa() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.fxc.hlsl
index 8270dd1..9ffb0cb 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_8b1eaa() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.glsl
index 6729165..12ccf0f 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_8b1eaa() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_8b1eaa() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_8b1eaa() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.msl
index 786aaaa..fb40ee7 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_8b1eaa() {
-  float3 res = float3(1.0f);
+  int3 res = int3(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.spvasm
index faa36f5..37134e6 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %19 = OpConstantNull %v3int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %18 = OpConstantNull %v3float
-         %19 = OpTypeFunction %v4float
 %clamp_8b1eaa = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %clamp_8b1eaa
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_8b1eaa
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_8b1eaa
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_8b1eaa
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_8b1eaa
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_8b1eaa
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.wgsl
index bda46e9..652ec0d 100644
--- a/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/8b1eaa.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_8b1eaa() {
-  var res = clamp(vec3(1.0), vec3(1.0), vec3(1.0));
+  var res = clamp(vec3(1), vec3(1), vec3(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl
index 1babcf7..2cdba00 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(ia, ia, ia) -> ia
 fn clamp_96e56a() {
-  var res = clamp(1.0, 1.0, 1.0);
+  var res = clamp(1, 1, 1);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.dxc.hlsl
index 6231928..b445f25 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.fxc.hlsl
index 6231928..b445f25 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.glsl
index c7dbb9b..cf52b93 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.msl
index a28781c..46325a2 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.spvasm
index 07544da..0097629 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 29
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,34 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%_ptr_Function_float = OpTypePointer Function %float
-         %16 = OpTypeFunction %v4float
 %clamp_96e56a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1
+        %res = OpVariable %_ptr_Function_int Function %17
+               OpStore %res %int_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %16
-         %18 = OpLabel
-         %19 = OpFunctionCall %void %clamp_96e56a
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %clamp_96e56a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %21 = OpLabel
-         %22 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %22
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %clamp_96e56a
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_96e56a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_96e56a
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_96e56a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.wgsl
index 20f3055..de9a554 100644
--- a/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/96e56a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_96e56a() {
-  var res = clamp(1.0, 1.0, 1.0);
+  var res = clamp(1, 1, 1);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl
index b766bbf..0bc1cb2 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(vec<2, fa>, vec<2, fa>, vec<2, fa>) -> vec<2, fa>
 fn clamp_9d731c() {
-  var res = clamp(vec2(1), vec2(1), vec2(1));
+  var res = clamp(vec2(1.), vec2(1.), vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.dxc.hlsl
index 25efa1a..b14e434 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_9d731c() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.fxc.hlsl
index 25efa1a..b14e434 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_9d731c() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.glsl
index 8f283b5..554727e 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_9d731c() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_9d731c() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_9d731c() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.msl
index 5a78c71..3ac366f 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_9d731c() {
-  int2 res = int2(1);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.spvasm
index 533a9b0..57bec99 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %19 = OpConstantNull %v2int
-         %20 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+         %19 = OpTypeFunction %v4float
 %clamp_9d731c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v2float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %clamp_9d731c
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %clamp_9d731c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_9d731c
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_9d731c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %clamp_9d731c
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_9d731c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.wgsl
index d4da0fb..989ca72 100644
--- a/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/9d731c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_9d731c() {
-  var res = clamp(vec2(1), vec2(1), vec2(1));
+  var res = clamp(vec2(1.0), vec2(1.0), vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl
index de2b9e5..569fe01 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl
@@ -23,7 +23,7 @@
 
 // fn clamp(vec<4, ia>, vec<4, ia>, vec<4, ia>) -> vec<4, ia>
 fn clamp_d396af() {
-  var res = clamp(vec4(1.0), vec4(1.0), vec4(1.0));
+  var res = clamp(vec4(1), vec4(1), vec4(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.dxc.hlsl
index 1f04061..bb6559a 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_d396af() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.fxc.hlsl
index 1f04061..bb6559a 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_d396af() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.glsl
index 57aa017..7c41a2f 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_d396af() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_d396af() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_d396af() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.msl
index 3a1316e..1020d60 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_d396af() {
-  float4 res = float4(1.0f);
+  int4 res = int4(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.spvasm
index 4403ee44..382a87f 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,35 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %17 = OpTypeFunction %v4float
 %clamp_d396af = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_v4int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %clamp_d396af
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_d396af
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %clamp_d396af
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_d396af
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %clamp_d396af
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_d396af
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.wgsl
index 973eb90..e0ef4db 100644
--- a/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/d396af.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn clamp_d396af() {
-  var res = clamp(vec4(1.0), vec4(1.0), vec4(1.0));
+  var res = clamp(vec4(1), vec4(1), vec4(1));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl
index d730ec4d..81fb61d 100644
--- a/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(vec<4, fa>) -> vec<4, fa>
 fn saturate_4ed8d7() {
-  var res = saturate(vec4(2));
+  var res = saturate(vec4(2.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.wgsl
index 4ef9207..6fe6108 100644
--- a/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/4ed8d7.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_4ed8d7() {
-  var res = saturate(vec4(2));
+  var res = saturate(vec4(2.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/78b37c.wgsl b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl
index 4ac82c1..0c8a403 100644
--- a/test/tint/builtins/gen/literal/saturate/78b37c.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(fa) -> fa
 fn saturate_78b37c() {
-  var res = saturate(2);
+  var res = saturate(2.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.wgsl
index 43b22f6..9d0e4d6 100644
--- a/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/78b37c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_78b37c() {
-  var res = saturate(2);
+  var res = saturate(2.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/d55822.wgsl b/test/tint/builtins/gen/literal/saturate/d55822.wgsl
index 4ed8e48..fc73316 100644
--- a/test/tint/builtins/gen/literal/saturate/d55822.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/d55822.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(vec<3, fa>) -> vec<3, fa>
 fn saturate_d55822() {
-  var res = saturate(vec3(2));
+  var res = saturate(vec3(2.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.wgsl
index 98847cc..24b8308 100644
--- a/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/d55822.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_d55822() {
-  var res = saturate(vec3(2));
+  var res = saturate(vec3(2.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl
index f1e6275..36003fb 100644
--- a/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(vec<2, fa>) -> vec<2, fa>
 fn saturate_e40fb6() {
-  var res = saturate(vec2(2));
+  var res = saturate(vec2(2.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.wgsl
index b20c99e..6cdb694 100644
--- a/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/e40fb6.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_e40fb6() {
-  var res = saturate(vec2(2));
+  var res = saturate(vec2(2.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl b/test/tint/builtins/gen/literal/select/089657.wgsl
index d47aabe..82f4758 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<3, fa>, vec<3, fa>, bool) -> vec<3, fa>
 fn select_089657() {
-  var res = select(vec3(1), vec3(1), true);
+  var res = select(vec3(1.), vec3(1.), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.dxc.hlsl
index f2d7718..2f05ffb 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_089657() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.fxc.hlsl
index f2d7718..2f05ffb 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_089657() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.glsl
index 6fcb164..98a7e95 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_089657() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_089657() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_089657() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.msl
index 588dd1a..534c58d 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_089657() {
-  int3 res = int3(1);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.spvasm
index 9ecd1f6..e783de4 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %19 = OpConstantNull %v3int
-         %20 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+         %19 = OpTypeFunction %v4float
 %select_089657 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v3float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %select_089657
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %select_089657
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_089657
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_089657
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %select_089657
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_089657
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.wgsl
index 1855c52..bb0dd8a 100644
--- a/test/tint/builtins/gen/literal/select/089657.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/089657.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_089657() {
-  var res = select(vec3(1), vec3(1), true);
+  var res = select(vec3(1.0), vec3(1.0), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl b/test/tint/builtins/gen/literal/select/17441a.wgsl
index 2ff8210..43e37e5 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<4, fa>, vec<4, fa>, bool) -> vec<4, fa>
 fn select_17441a() {
-  var res = select(vec4(1), vec4(1), true);
+  var res = select(vec4(1.), vec4(1.), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.dxc.hlsl
index 9051e8c..fa2a47b 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_17441a() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.fxc.hlsl
index 9051e8c..fa2a47b 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_17441a() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.glsl
index 28ec5fa..0bf0b8c 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_17441a() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_17441a() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_17441a() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.msl
index c5476ad..574e009 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_17441a() {
-  int4 res = int4(1);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.spvasm
index e1b41e5..a098487 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,35 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %19 = OpConstantNull %v4int
-         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %17 = OpTypeFunction %v4float
 %select_17441a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %res %14
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %select_17441a
+%vertex_main_inner = OpFunction %v4float None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %void %select_17441a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %22 = OpLabel
+         %23 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %23
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_17441a
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %select_17441a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %select_17441a
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %select_17441a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.wgsl
index c67c505..b6f237d 100644
--- a/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/17441a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_17441a() {
-  var res = select(vec4(1), vec4(1), true);
+  var res = select(vec4(1.0), vec4(1.0), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl
index 39fc716..58d01ce 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<2, fa>, vec<2, fa>, vec<2, bool>) -> vec<2, fa>
 fn select_1f4d93() {
-  var res = select(vec2(1), vec2(1), vec2<bool>(true));
+  var res = select(vec2(1.), vec2(1.), vec2<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.dxc.hlsl
index 82aa3bd..1232e45 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_1f4d93() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.fxc.hlsl
index 82aa3bd..1232e45 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_1f4d93() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.glsl
index cfee134..930bc64 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_1f4d93() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_1f4d93() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_1f4d93() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.msl
index d0a3e49..f806225 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_1f4d93() {
-  int2 res = int2(1);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.spvasm
index 839806a..0fd9006 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %19 = OpConstantNull %v2int
-         %20 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+         %19 = OpTypeFunction %v4float
 %select_1f4d93 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v2float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %select_1f4d93
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %select_1f4d93
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_1f4d93
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_1f4d93
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %select_1f4d93
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_1f4d93
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.wgsl
index bb7262b..0d04662 100644
--- a/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/1f4d93.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_1f4d93() {
-  var res = select(vec2(1), vec2(1), vec2<bool>(true));
+  var res = select(vec2(1.0), vec2(1.0), vec2<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl
index 561e714..5094989 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<3, fa>, vec<3, fa>, vec<3, bool>) -> vec<3, fa>
 fn select_2c96d4() {
-  var res = select(vec3(1), vec3(1), vec3<bool>(true));
+  var res = select(vec3(1.), vec3(1.), vec3<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.dxc.hlsl
index e2a7f24..7bde6a5 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_2c96d4() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.fxc.hlsl
index e2a7f24..7bde6a5 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_2c96d4() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.glsl
index 1d78e5a..4757c32 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_2c96d4() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_2c96d4() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_2c96d4() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.msl
index dcea160..32110ba 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_2c96d4() {
-  int3 res = int3(1);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.spvasm
index 7c22428..04adc34 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %19 = OpConstantNull %v3int
-         %20 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+         %19 = OpTypeFunction %v4float
 %select_2c96d4 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v3float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %select_2c96d4
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %select_2c96d4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_2c96d4
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_2c96d4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %select_2c96d4
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_2c96d4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.wgsl
index 1206e99..cf920c9 100644
--- a/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/2c96d4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_2c96d4() {
-  var res = select(vec3(1), vec3(1), vec3<bool>(true));
+  var res = select(vec3(1.0), vec3(1.0), vec3<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl b/test/tint/builtins/gen/literal/select/3a14be.wgsl
index 1913688..2a77bdd 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<2, ia>, vec<2, ia>, bool) -> vec<2, ia>
 fn select_3a14be() {
-  var res = select(vec2(1.0), vec2(1.0), true);
+  var res = select(vec2(1), vec2(1), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.dxc.hlsl
index 22346fa..fbd19fe 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_3a14be() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.fxc.hlsl
index 22346fa..fbd19fe 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_3a14be() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.glsl
index e087441..f7f5033 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_3a14be() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_3a14be() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_3a14be() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.msl
index 1b30556..635fb5e 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_3a14be() {
-  float2 res = float2(1.0f);
+  int2 res = int2(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.spvasm
index d2f8374..19084ba 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %18 = OpConstantNull %v2float
-         %19 = OpTypeFunction %v4float
 %select_3a14be = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %select_3a14be
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_3a14be
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_3a14be
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_3a14be
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_3a14be
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_3a14be
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.wgsl
index 31e57a1..87fc0a8 100644
--- a/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/3a14be.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_3a14be() {
-  var res = select(vec2(1.0), vec2(1.0), true);
+  var res = select(vec2(1), vec2(1), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl b/test/tint/builtins/gen/literal/select/431dfb.wgsl
index 00c5f8f..a9990e8 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<2, ia>, vec<2, ia>, vec<2, bool>) -> vec<2, ia>
 fn select_431dfb() {
-  var res = select(vec2(1.0), vec2(1.0), vec2<bool>(true));
+  var res = select(vec2(1), vec2(1), vec2<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.dxc.hlsl
index ede2038..df657ae 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_431dfb() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.fxc.hlsl
index ede2038..df657ae 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_431dfb() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.glsl
index 41b3954..5c2a42c 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_431dfb() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_431dfb() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_431dfb() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.msl
index 7f93cbc..2431b72 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_431dfb() {
-  float2 res = float2(1.0f);
+  int2 res = int2(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.spvasm
index 3fa7edf..4ef8804 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %18 = OpConstantNull %v2float
-         %19 = OpTypeFunction %v4float
 %select_431dfb = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %select_431dfb
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_431dfb
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_431dfb
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_431dfb
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_431dfb
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_431dfb
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.wgsl
index 19e7f95..575799e 100644
--- a/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/431dfb.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_431dfb() {
-  var res = select(vec2(1.0), vec2(1.0), vec2<bool>(true));
+  var res = select(vec2(1), vec2(1), vec2<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl b/test/tint/builtins/gen/literal/select/43741e.wgsl
index bfc51fb..f6d41b8 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<4, fa>, vec<4, fa>, vec<4, bool>) -> vec<4, fa>
 fn select_43741e() {
-  var res = select(vec4(1), vec4(1), vec4<bool>(true));
+  var res = select(vec4(1.), vec4(1.), vec4<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.dxc.hlsl
index 5a9cab5..893ce8f 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_43741e() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.fxc.hlsl
index 5a9cab5..893ce8f 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_43741e() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.glsl
index 9b3d87d..502a2e4 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_43741e() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_43741e() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_43741e() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.msl
index 13576be..590cd5a 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_43741e() {
-  int4 res = int4(1);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.spvasm
index 35bb1f7..8e7e4c1 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,35 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %19 = OpConstantNull %v4int
-         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %17 = OpTypeFunction %v4float
 %select_43741e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %res %14
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %select_43741e
+%vertex_main_inner = OpFunction %v4float None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %void %select_43741e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %22 = OpLabel
+         %23 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %23
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_43741e
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %select_43741e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %select_43741e
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %select_43741e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.wgsl
index eacc89b..6a52b32 100644
--- a/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/43741e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_43741e() {
-  var res = select(vec4(1), vec4(1), vec4<bool>(true));
+  var res = select(vec4(1.0), vec4(1.0), vec4<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl b/test/tint/builtins/gen/literal/select/494051.wgsl
index 2034c91..820d87e 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(fa, fa, bool) -> fa
 fn select_494051() {
-  var res = select(1, 1, true);
+  var res = select(1., 1., true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.dxc.hlsl
index 14a81e0..ff461ea 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_494051() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.fxc.hlsl
index 14a81e0..ff461ea 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_494051() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.glsl
index d098cb2..616fcc2 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_494051() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_494051() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_494051() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.msl
index c10821f..3275330 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_494051() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.spvasm
index c71721d..a4a1e51 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,34 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
-%_ptr_Function_int = OpTypePointer Function %int
-         %17 = OpConstantNull %int
-         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpTypeFunction %v4float
 %select_494051 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %17
-               OpStore %res %int_1
+        %res = OpVariable %_ptr_Function_float Function %8
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_494051
+%vertex_main_inner = OpFunction %v4float None %16
+         %18 = OpLabel
+         %19 = OpFunctionCall %void %select_494051
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %21 = OpLabel
+         %22 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %22
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_494051
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %select_494051
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_494051
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_494051
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.wgsl
index 9a91518..b766e5d 100644
--- a/test/tint/builtins/gen/literal/select/494051.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/494051.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_494051() {
-  var res = select(1, 1, true);
+  var res = select(1.0, 1.0, true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl b/test/tint/builtins/gen/literal/select/4c4738.wgsl
index 69541be..51e053a 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<4, ia>, vec<4, ia>, vec<4, bool>) -> vec<4, ia>
 fn select_4c4738() {
-  var res = select(vec4(1.0), vec4(1.0), vec4<bool>(true));
+  var res = select(vec4(1), vec4(1), vec4<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.dxc.hlsl
index 2186b86..40175a9 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_4c4738() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.fxc.hlsl
index 2186b86..40175a9 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_4c4738() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.glsl
index 7fc35db..f2e5a9a 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_4c4738() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_4c4738() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_4c4738() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.msl
index 2ca6118..964cec4 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_4c4738() {
-  float4 res = float4(1.0f);
+  int4 res = int4(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.spvasm
index 9f57347..6795c91 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,35 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %17 = OpTypeFunction %v4float
 %select_4c4738 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_v4int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %select_4c4738
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_4c4738
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %select_4c4738
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_4c4738
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %select_4c4738
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_4c4738
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.wgsl
index af92edb..a54f5ee 100644
--- a/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/4c4738.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_4c4738() {
-  var res = select(vec4(1.0), vec4(1.0), vec4<bool>(true));
+  var res = select(vec4(1), vec4(1), vec4<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl b/test/tint/builtins/gen/literal/select/4e60da.wgsl
index f40ff21..ccc5a07 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<2, fa>, vec<2, fa>, bool) -> vec<2, fa>
 fn select_4e60da() {
-  var res = select(vec2(1), vec2(1), true);
+  var res = select(vec2(1.), vec2(1.), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.dxc.hlsl
index 72f42f7..43e2e4e 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_4e60da() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.fxc.hlsl
index 72f42f7..43e2e4e 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_4e60da() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.glsl
index 815c0ce..e457b9d 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_4e60da() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_4e60da() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_4e60da() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.msl
index ad6911b..df8c30d 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_4e60da() {
-  int2 res = int2(1);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.spvasm
index 118769b..c54cd87 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %19 = OpConstantNull %v2int
-         %20 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+         %19 = OpTypeFunction %v4float
 %select_4e60da = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v2float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %select_4e60da
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %select_4e60da
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_4e60da
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_4e60da
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %select_4e60da
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_4e60da
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.wgsl
index b913710..dca50c6 100644
--- a/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/4e60da.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_4e60da() {
-  var res = select(vec2(1), vec2(1), true);
+  var res = select(vec2(1.0), vec2(1.0), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl b/test/tint/builtins/gen/literal/select/9b478d.wgsl
index f165558..e0c6d5b 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(ia, ia, bool) -> ia
 fn select_9b478d() {
-  var res = select(1.0, 1.0, true);
+  var res = select(1, 1, true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.dxc.hlsl
index 5400451..b9f42f3 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_9b478d() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.fxc.hlsl
index 5400451..b9f42f3 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_9b478d() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.glsl
index 0f1b3d0..35d7abb 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_9b478d() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_9b478d() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_9b478d() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.msl
index 4744e7a..427d75b 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_9b478d() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.spvasm
index 3ca443a..3c53e2d 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 29
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,34 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%_ptr_Function_float = OpTypePointer Function %float
-         %16 = OpTypeFunction %v4float
 %select_9b478d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1
+        %res = OpVariable %_ptr_Function_int Function %17
+               OpStore %res %int_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %16
-         %18 = OpLabel
-         %19 = OpFunctionCall %void %select_9b478d
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %select_9b478d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %21 = OpLabel
-         %22 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %22
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %select_9b478d
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_9b478d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_9b478d
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_9b478d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.wgsl
index 886df0d..b43eb70 100644
--- a/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/9b478d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_9b478d() {
-  var res = select(1.0, 1.0, true);
+  var res = select(1, 1, true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl b/test/tint/builtins/gen/literal/select/b93806.wgsl
index 9c7d498..c4808ce 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<3, ia>, vec<3, ia>, vec<3, bool>) -> vec<3, ia>
 fn select_b93806() {
-  var res = select(vec3(1.0), vec3(1.0), vec3<bool>(true));
+  var res = select(vec3(1), vec3(1), vec3<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.dxc.hlsl
index 2ba5be3..b4da4d6 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_b93806() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.fxc.hlsl
index 2ba5be3..b4da4d6 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_b93806() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.glsl
index db609c8..a3a1139 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_b93806() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_b93806() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_b93806() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.msl
index 5d45b26..bc20240 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_b93806() {
-  float3 res = float3(1.0f);
+  int3 res = int3(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.spvasm
index cfeb646..3b33c89 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %19 = OpConstantNull %v3int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %18 = OpConstantNull %v3float
-         %19 = OpTypeFunction %v4float
 %select_b93806 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %select_b93806
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_b93806
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_b93806
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_b93806
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_b93806
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_b93806
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.wgsl
index d518b43..d6c0178 100644
--- a/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/b93806.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_b93806() {
-  var res = select(vec3(1.0), vec3(1.0), vec3<bool>(true));
+  var res = select(vec3(1), vec3(1), vec3<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl
index d01e23b..6f55788 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<3, ia>, vec<3, ia>, bool) -> vec<3, ia>
 fn select_dfab3b() {
-  var res = select(vec3(1.0), vec3(1.0), true);
+  var res = select(vec3(1), vec3(1), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.dxc.hlsl
index 353db6e..0bb1ca4 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_dfab3b() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.fxc.hlsl
index 353db6e..0bb1ca4 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_dfab3b() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.glsl
index b10eb86..d2aea07 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_dfab3b() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_dfab3b() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_dfab3b() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.msl
index e99afc1..fe6b140 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_dfab3b() {
-  float3 res = float3(1.0f);
+  int3 res = int3(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.spvasm
index c69ae4b..5064800 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %19 = OpConstantNull %v3int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %18 = OpConstantNull %v3float
-         %19 = OpTypeFunction %v4float
 %select_dfab3b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %select_dfab3b
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_dfab3b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_dfab3b
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_dfab3b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_dfab3b
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_dfab3b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.wgsl
index 1495e0f..08cd6b6 100644
--- a/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/dfab3b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_dfab3b() {
-  var res = select(vec3(1.0), vec3(1.0), true);
+  var res = select(vec3(1), vec3(1), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl b/test/tint/builtins/gen/literal/select/e381c3.wgsl
index c38a0e4..6f301eb 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl
@@ -23,7 +23,7 @@
 
 // fn select(vec<4, ia>, vec<4, ia>, bool) -> vec<4, ia>
 fn select_e381c3() {
-  var res = select(vec4(1.0), vec4(1.0), true);
+  var res = select(vec4(1), vec4(1), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.dxc.hlsl
index ab06e71..348b460 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_e381c3() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.fxc.hlsl
index ab06e71..348b460 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void select_e381c3() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.glsl
index b7807ed..e82544c 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void select_e381c3() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void select_e381c3() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void select_e381c3() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.msl
index d5f75ad..e4f5c64 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_e381c3() {
-  float4 res = float4(1.0f);
+  int4 res = int4(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.spvasm
index b208fee..9444cec 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,35 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %17 = OpTypeFunction %v4float
 %select_e381c3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_v4int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %select_e381c3
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_e381c3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %select_e381c3
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_e381c3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %select_e381c3
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_e381c3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.wgsl
index 530838f..0cfaabd 100644
--- a/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/e381c3.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn select_e381c3() {
-  var res = select(vec4(1.0), vec4(1.0), true);
+  var res = select(vec4(1), vec4(1), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/0799fd.wgsl b/test/tint/builtins/gen/literal/sign/0799fd.wgsl
index 2aac595..a632d85 100644
--- a/test/tint/builtins/gen/literal/sign/0799fd.wgsl
+++ b/test/tint/builtins/gen/literal/sign/0799fd.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(vec<2, fa>) -> vec<2, fa>
 fn sign_0799fd() {
-  var res = sign(vec2(1));
+  var res = sign(vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.wgsl
index 945a42b..f63d989 100644
--- a/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/0799fd.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_0799fd() {
-  var res = sign(vec2(1));
+  var res = sign(vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/ab6301.wgsl b/test/tint/builtins/gen/literal/sign/ab6301.wgsl
index e75ab68..7f86ac8 100644
--- a/test/tint/builtins/gen/literal/sign/ab6301.wgsl
+++ b/test/tint/builtins/gen/literal/sign/ab6301.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(vec<3, fa>) -> vec<3, fa>
 fn sign_ab6301() {
-  var res = sign(vec3(1));
+  var res = sign(vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.wgsl
index 0109196..1d60ad4 100644
--- a/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/ab6301.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_ab6301() {
-  var res = sign(vec3(1));
+  var res = sign(vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/c8289c.wgsl b/test/tint/builtins/gen/literal/sign/c8289c.wgsl
index 7b6a065..8cd59e1 100644
--- a/test/tint/builtins/gen/literal/sign/c8289c.wgsl
+++ b/test/tint/builtins/gen/literal/sign/c8289c.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(fa) -> fa
 fn sign_c8289c() {
-  var res = sign(1);
+  var res = sign(1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.wgsl
index 3c04064..c2426d2 100644
--- a/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/c8289c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_c8289c() {
-  var res = sign(1);
+  var res = sign(1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/f5da6a.wgsl b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl
index 17b6d68..3b5c1d7 100644
--- a/test/tint/builtins/gen/literal/sign/f5da6a.wgsl
+++ b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(vec<4, fa>) -> vec<4, fa>
 fn sign_f5da6a() {
-  var res = sign(vec4(1));
+  var res = sign(vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.wgsl
index 25336af..1b57a94d5 100644
--- a/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/f5da6a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_f5da6a() {
-  var res = sign(vec4(1));
+  var res = sign(vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/38cd79.wgsl b/test/tint/builtins/gen/literal/step/38cd79.wgsl
index c2ed3af..2663d42 100644
--- a/test/tint/builtins/gen/literal/step/38cd79.wgsl
+++ b/test/tint/builtins/gen/literal/step/38cd79.wgsl
@@ -23,7 +23,7 @@
 
 // fn step(vec<4, fa>, vec<4, fa>) -> vec<4, fa>
 fn step_38cd79() {
-  var res = step(vec4(1), vec4(1));
+  var res = step(vec4(1.), vec4(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.wgsl
index 06dbd75..2571dfc 100644
--- a/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/38cd79.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn step_38cd79() {
-  var res = step(vec4(1), vec4(1));
+  var res = step(vec4(1.0), vec4(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/415879.wgsl b/test/tint/builtins/gen/literal/step/415879.wgsl
index 0332e12..98c73a6 100644
--- a/test/tint/builtins/gen/literal/step/415879.wgsl
+++ b/test/tint/builtins/gen/literal/step/415879.wgsl
@@ -23,7 +23,7 @@
 
 // fn step(vec<3, fa>, vec<3, fa>) -> vec<3, fa>
 fn step_415879() {
-  var res = step(vec3(1), vec3(1));
+  var res = step(vec3(1.), vec3(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/415879.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/415879.wgsl.expected.wgsl
index 37ed1f9..7636eaf 100644
--- a/test/tint/builtins/gen/literal/step/415879.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/415879.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn step_415879() {
-  var res = step(vec3(1), vec3(1));
+  var res = step(vec3(1.0), vec3(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/7c7e5c.wgsl b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl
index 8713980..ec22df6 100644
--- a/test/tint/builtins/gen/literal/step/7c7e5c.wgsl
+++ b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl
@@ -23,7 +23,7 @@
 
 // fn step(vec<2, fa>, vec<2, fa>) -> vec<2, fa>
 fn step_7c7e5c() {
-  var res = step(vec2(1), vec2(1));
+  var res = step(vec2(1.), vec2(1.));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.wgsl
index 8915183..dba1960 100644
--- a/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/7c7e5c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn step_7c7e5c() {
-  var res = step(vec2(1), vec2(1));
+  var res = step(vec2(1.0), vec2(1.0));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/f9b70c.wgsl b/test/tint/builtins/gen/literal/step/f9b70c.wgsl
index 71339b0..50c33a1 100644
--- a/test/tint/builtins/gen/literal/step/f9b70c.wgsl
+++ b/test/tint/builtins/gen/literal/step/f9b70c.wgsl
@@ -23,7 +23,7 @@
 
 // fn step(fa, fa) -> fa
 fn step_f9b70c() {
-  var res = step(1, 1);
+  var res = step(1., 1.);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.wgsl
index bf04295..33613ae 100644
--- a/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/f9b70c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn step_f9b70c() {
-  var res = step(1, 1);
+  var res = step(1.0, 1.0);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl b/test/tint/builtins/gen/var/abs/2f861b.wgsl
index 53d4077..ce953f8 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<3, fa>) -> vec<3, fa>
 fn abs_2f861b() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.dxc.hlsl
index 6315af3..d3dc754 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_2f861b() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.fxc.hlsl
index 6315af3..d3dc754 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_2f861b() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.glsl
index b669674..b068d2d 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_2f861b() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_2f861b() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_2f861b() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.msl
index d985285..3fef020 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_2f861b() {
-  int3 res = int3(1);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.spvasm
index b10efe2..2060ef1 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %19 = OpConstantNull %v3int
-         %20 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+         %19 = OpTypeFunction %v4float
  %abs_2f861b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v3float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %abs_2f861b
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %abs_2f861b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_2f861b
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_2f861b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %abs_2f861b
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_2f861b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.wgsl
index b4e57c3..0fa385f 100644
--- a/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/2f861b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_2f861b() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.0);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl b/test/tint/builtins/gen/var/abs/577d6e.wgsl
index 1a897e6..c974324 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<2, ia>) -> vec<2, ia>
 fn abs_577d6e() {
-  const arg_0 = vec2(1.0);
+  const arg_0 = vec2(1);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.dxc.hlsl
index b4f3ce7..d24e2b9 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_577d6e() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.fxc.hlsl
index b4f3ce7..d24e2b9 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_577d6e() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.glsl
index 096262c..43a48a3 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_577d6e() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_577d6e() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_577d6e() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.msl
index 4e92bd1..2d6f835 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_577d6e() {
-  float2 res = float2(1.0f);
+  int2 res = int2(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.spvasm
index 648166a..684510a 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %18 = OpConstantNull %v2float
-         %19 = OpTypeFunction %v4float
  %abs_577d6e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %abs_577d6e
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_577d6e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_577d6e
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_577d6e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_577d6e
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_577d6e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.wgsl
index 9ba7c2e..1081515 100644
--- a/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/577d6e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_577d6e() {
-  const arg_0 = vec2(1.0);
+  const arg_0 = vec2(1);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl
index 35d7360..d8ca2bd 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(ia) -> ia
 fn abs_5a8af1() {
-  const arg_0 = 1.0;
+  const arg_0 = 1;
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.dxc.hlsl
index d571cd6..86901c6 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.fxc.hlsl
index d571cd6..86901c6 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.glsl
index 98ca290..d454d02 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.msl
index 6ef8f36..a3468f9 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_5a8af1() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.spvasm
index 5027752..6201ee3 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 29
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,34 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%_ptr_Function_float = OpTypePointer Function %float
-         %16 = OpTypeFunction %v4float
  %abs_5a8af1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1
+        %res = OpVariable %_ptr_Function_int Function %17
+               OpStore %res %int_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %16
-         %18 = OpLabel
-         %19 = OpFunctionCall %void %abs_5a8af1
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %abs_5a8af1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %21 = OpLabel
-         %22 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %22
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %abs_5a8af1
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_5a8af1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_5a8af1
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_5a8af1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.wgsl
index f5a71c3..2636aa1 100644
--- a/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/5a8af1.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_5a8af1() {
-  const arg_0 = 1.0;
+  const arg_0 = 1;
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl
index 1a12b86..60bc479 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<2, fa>) -> vec<2, fa>
 fn abs_82ff9d() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.dxc.hlsl
index 60243f7..558b2e3 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_82ff9d() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.fxc.hlsl
index 60243f7..558b2e3 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_82ff9d() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.glsl
index f1cc268..7eeff32 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_82ff9d() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_82ff9d() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_82ff9d() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.msl
index 43cd910..d82882e 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_82ff9d() {
-  int2 res = int2(1);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.spvasm
index ad5dc10..71a0bed 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %19 = OpConstantNull %v2int
-         %20 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+         %19 = OpTypeFunction %v4float
  %abs_82ff9d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v2float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %abs_82ff9d
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %abs_82ff9d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_82ff9d
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_82ff9d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %abs_82ff9d
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_82ff9d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.wgsl
index 9c13cc5..a1a3135 100644
--- a/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/82ff9d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_82ff9d() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.0);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl
index 0d61fc3..b1fcb7b 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<4, ia>) -> vec<4, ia>
 fn abs_8ca9b1() {
-  const arg_0 = vec4(1.0);
+  const arg_0 = vec4(1);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.dxc.hlsl
index 254e652..ded6c62 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_8ca9b1() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.fxc.hlsl
index 254e652..ded6c62 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_8ca9b1() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.glsl
index 3e153f7..c3fce66 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_8ca9b1() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_8ca9b1() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_8ca9b1() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.msl
index 8dd66e4..4681936 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_8ca9b1() {
-  float4 res = float4(1.0f);
+  int4 res = int4(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.spvasm
index 967646f..447b039 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,35 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %17 = OpTypeFunction %v4float
  %abs_8ca9b1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_v4int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %abs_8ca9b1
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_8ca9b1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %abs_8ca9b1
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_8ca9b1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %abs_8ca9b1
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_8ca9b1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.wgsl
index ef2c0e5..cd27664 100644
--- a/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/8ca9b1.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_8ca9b1() {
-  const arg_0 = vec4(1.0);
+  const arg_0 = vec4(1);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl
index 1d61796..3d332c2 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(fa) -> fa
 fn abs_aedb6d() {
-  const arg_0 = 1;
+  const arg_0 = 1.;
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.dxc.hlsl
index c6333ed..1de84a5 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.fxc.hlsl
index c6333ed..1de84a5 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.glsl
index 8f21da4..a7d37b0 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.msl
index e27ed9f..3434978 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_aedb6d() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.spvasm
index f52b339..f41bcf1 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,34 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
-%_ptr_Function_int = OpTypePointer Function %int
-         %17 = OpConstantNull %int
-         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpTypeFunction %v4float
  %abs_aedb6d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %17
-               OpStore %res %int_1
+        %res = OpVariable %_ptr_Function_float Function %8
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %abs_aedb6d
+%vertex_main_inner = OpFunction %v4float None %16
+         %18 = OpLabel
+         %19 = OpFunctionCall %void %abs_aedb6d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %21 = OpLabel
+         %22 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %22
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_aedb6d
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %abs_aedb6d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_aedb6d
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_aedb6d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.wgsl
index 7897c84..46f5e5b 100644
--- a/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/aedb6d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_aedb6d() {
-  const arg_0 = 1;
+  const arg_0 = 1.0;
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl b/test/tint/builtins/gen/var/abs/c3321c.wgsl
index 9f99d2a..009e3aa 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<3, ia>) -> vec<3, ia>
 fn abs_c3321c() {
-  const arg_0 = vec3(1.0);
+  const arg_0 = vec3(1);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.dxc.hlsl
index d56d57a..0aa2ad9 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_c3321c() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.fxc.hlsl
index d56d57a..0aa2ad9 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_c3321c() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.glsl
index 6b1cea3..d9a6e95 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_c3321c() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_c3321c() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_c3321c() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.msl
index eed8424..ffdb7d7 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_c3321c() {
-  float3 res = float3(1.0f);
+  int3 res = int3(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.spvasm
index 92db6e9..c8fed58 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %19 = OpConstantNull %v3int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %18 = OpConstantNull %v3float
-         %19 = OpTypeFunction %v4float
  %abs_c3321c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %abs_c3321c
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_c3321c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %abs_c3321c
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_c3321c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_c3321c
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_c3321c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.wgsl
index 785d26f..1db0ff5 100644
--- a/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/c3321c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_c3321c() {
-  const arg_0 = vec3(1.0);
+  const arg_0 = vec3(1);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl b/test/tint/builtins/gen/var/abs/e28785.wgsl
index a3e43a4..23e125d 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl
@@ -23,7 +23,7 @@
 
 // fn abs(vec<4, fa>) -> vec<4, fa>
 fn abs_e28785() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.dxc.hlsl
index 0c83f68..46f6f3f 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_e28785() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.fxc.hlsl
index 0c83f68..46f6f3f 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void abs_e28785() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.glsl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.glsl
index ef86df6..4255eda 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void abs_e28785() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void abs_e28785() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void abs_e28785() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.msl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.msl
index f88e571..3f089fb 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_e28785() {
-  int4 res = int4(1);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.spvasm b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.spvasm
index fb64961..556e68f 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,35 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %19 = OpConstantNull %v4int
-         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %17 = OpTypeFunction %v4float
  %abs_e28785 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %res %14
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %abs_e28785
+%vertex_main_inner = OpFunction %v4float None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %void %abs_e28785
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %22 = OpLabel
+         %23 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %23
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_e28785
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %abs_e28785
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %abs_e28785
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %abs_e28785
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.wgsl b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.wgsl
index 8c07819..154d56f 100644
--- a/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/abs/e28785.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn abs_e28785() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.0);
   var res = abs(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl b/test/tint/builtins/gen/var/asinh/16b543.wgsl
index 1d4a756..ba6c2b8 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(vec<2, fa>) -> vec<2, fa>
 fn asinh_16b543() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.);
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.wgsl
index 36b92eb..79dc047 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_16b543() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.0);
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl b/test/tint/builtins/gen/var/asinh/180015.wgsl
index c08371d..ecb112b 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(fa) -> fa
 fn asinh_180015() {
-  const arg_0 = 1;
+  const arg_0 = 1.;
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.wgsl
index b36912f..ba5f055 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_180015() {
-  const arg_0 = 1;
+  const arg_0 = 1.0;
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl b/test/tint/builtins/gen/var/asinh/51079e.wgsl
index 8e0cd7d..3c55709 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(vec<3, fa>) -> vec<3, fa>
 fn asinh_51079e() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.);
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.wgsl
index 629e64b..d236a88 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_51079e() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.0);
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl
index 56b8992..bfdccd2 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl
@@ -23,7 +23,7 @@
 
 // fn asinh(vec<4, fa>) -> vec<4, fa>
 fn asinh_cf8603() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.);
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.wgsl
index 52b7d59..ea60319 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asinh_cf8603() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.0);
   var res = asinh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl
index 8d7f504..10df7a2 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(vec<2, fa>) -> vec<2, fa>
 fn atan_5ca7b8() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.);
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.wgsl
index b51805a..6d32e47 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_5ca7b8() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.0);
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl b/test/tint/builtins/gen/var/atan/749e1b.wgsl
index 954592f..82d41fe 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(vec<3, fa>) -> vec<3, fa>
 fn atan_749e1b() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.);
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.wgsl
index 5dc2aff..ff1324a 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_749e1b() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.0);
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl
index be5313d..4ec745c 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(fa) -> fa
 fn atan_7a2a75() {
-  const arg_0 = 1;
+  const arg_0 = 1.;
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.wgsl
index b9b8159..807d75e 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_7a2a75() {
-  const arg_0 = 1;
+  const arg_0 = 1.0;
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl
index ac898e3..4098f4f 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl
@@ -23,7 +23,7 @@
 
 // fn atan(vec<4, fa>) -> vec<4, fa>
 fn atan_d17fb2() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.);
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.wgsl
index e625150..fcb93e6 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn atan_d17fb2() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.0);
   var res = atan(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl
index e52cf68..0c6fdaa 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl
@@ -23,8 +23,8 @@
 
 // fn atan2(fa, fa) -> fa
 fn atan2_034ace() {
-  const arg_0 = 1;
-  const arg_1 = 1;
+  const arg_0 = 1.;
+  const arg_1 = 1.;
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl
index 1de898d..b92f6fd 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn atan2_034ace() {
-  const arg_0 = 1;
-  const arg_1 = 1;
+  const arg_0 = 1.0;
+  const arg_1 = 1.0;
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl
index 499e571..412205b 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl
@@ -23,8 +23,8 @@
 
 // fn atan2(vec<3, fa>, vec<3, fa>) -> vec<3, fa>
 fn atan2_3c2865() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.);
+  const arg_1 = vec3(1.);
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl
index cb7b4c8..330079d 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn atan2_3c2865() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.0);
+  const arg_1 = vec3(1.0);
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl
index 3e2522a..978154a 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl
@@ -23,8 +23,8 @@
 
 // fn atan2(vec<2, fa>, vec<2, fa>) -> vec<2, fa>
 fn atan2_c19683() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.);
+  const arg_1 = vec2(1.);
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl
index bc8d8ee..97e4539 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn atan2_c19683() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.0);
+  const arg_1 = vec2(1.0);
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl
index 761ecc8..446e1df 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl
@@ -23,8 +23,8 @@
 
 // fn atan2(vec<4, fa>, vec<4, fa>) -> vec<4, fa>
 fn atan2_c4be45() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.);
+  const arg_1 = vec4(1.);
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl
index f6d2ed6..16e806e 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn atan2_c4be45() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.0);
+  const arg_1 = vec4(1.0);
   var res = atan2(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl b/test/tint/builtins/gen/var/clamp/177548.wgsl
index 8a92059..3b17a48 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(vec<2, ia>, vec<2, ia>, vec<2, ia>) -> vec<2, ia>
 fn clamp_177548() {
-  const arg_0 = vec2(1.0);
-  const arg_1 = vec2(1.0);
-  const arg_2 = vec2(1.0);
+  const arg_0 = vec2(1);
+  const arg_1 = vec2(1);
+  const arg_2 = vec2(1);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.dxc.hlsl
index e6db476..0706d74 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_177548() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.fxc.hlsl
index e6db476..0706d74 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_177548() {
-  float2 res = (1.0f).xx;
+  int2 res = (1).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.glsl
index aef0c70..cc6d48a 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_177548() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_177548() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_177548() {
-  vec2 res = vec2(1.0f);
+  ivec2 res = ivec2(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.msl
index 7c91b67..25d698d 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_177548() {
-  float2 res = float2(1.0f);
+  int2 res = int2(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.spvasm
index 2b2e5dc..2a9b2c6 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %19 = OpConstantNull %v2int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %18 = OpConstantNull %v2float
-         %19 = OpTypeFunction %v4float
 %clamp_177548 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %clamp_177548
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_177548
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_177548
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_177548
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_177548
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_177548
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.wgsl
index 0562596..cde8a1f 100644
--- a/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/177548.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_177548() {
-  const arg_0 = vec2(1.0);
-  const arg_1 = vec2(1.0);
-  const arg_2 = vec2(1.0);
+  const arg_0 = vec2(1);
+  const arg_1 = vec2(1);
+  const arg_2 = vec2(1);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl
index fee18f2..05f4aec 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(fa, fa, fa) -> fa
 fn clamp_23aa4f() {
-  const arg_0 = 1;
-  const arg_1 = 1;
-  const arg_2 = 1;
+  const arg_0 = 1.;
+  const arg_1 = 1.;
+  const arg_2 = 1.;
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.dxc.hlsl
index 95967c6..7b0cd06 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.fxc.hlsl
index 95967c6..7b0cd06 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.glsl
index 745c8d9..cf8f34c 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.msl
index e6b476f..29d1fc6 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_23aa4f() {
-  int res = 1;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.spvasm
index 9e7f69b..7a5bccc 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,34 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
-%_ptr_Function_int = OpTypePointer Function %int
-         %17 = OpConstantNull %int
-         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+         %16 = OpTypeFunction %v4float
 %clamp_23aa4f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_int Function %17
-               OpStore %res %int_1
+        %res = OpVariable %_ptr_Function_float Function %8
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %clamp_23aa4f
+%vertex_main_inner = OpFunction %v4float None %16
+         %18 = OpLabel
+         %19 = OpFunctionCall %void %clamp_23aa4f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %21 = OpLabel
+         %22 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %22
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_23aa4f
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %clamp_23aa4f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_23aa4f
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_23aa4f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.wgsl
index 4024be1..b4d1ab6 100644
--- a/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/23aa4f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_23aa4f() {
-  const arg_0 = 1;
-  const arg_1 = 1;
-  const arg_2 = 1;
+  const arg_0 = 1.0;
+  const arg_1 = 1.0;
+  const arg_2 = 1.0;
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl
index d39f709..d3bca4f 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(vec<3, fa>, vec<3, fa>, vec<3, fa>) -> vec<3, fa>
 fn clamp_5cf700() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
-  const arg_2 = vec3(1);
+  const arg_0 = vec3(1.);
+  const arg_1 = vec3(1.);
+  const arg_2 = vec3(1.);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.dxc.hlsl
index 06d6121..ecb46df 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_5cf700() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.fxc.hlsl
index 06d6121..ecb46df 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_5cf700() {
-  int3 res = (1).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.glsl
index a1ce575..2cd1427 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_5cf700() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_5cf700() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_5cf700() {
-  ivec3 res = ivec3(1);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.msl
index 55c384c..ca116af 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_5cf700() {
-  int3 res = int3(1);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.spvasm
index 3b26aca..4414636 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %19 = OpConstantNull %v3int
-         %20 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %18 = OpConstantNull %v3float
+         %19 = OpTypeFunction %v4float
 %clamp_5cf700 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v3float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %clamp_5cf700
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %clamp_5cf700
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_5cf700
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_5cf700
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %clamp_5cf700
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_5cf700
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.wgsl
index d0f4e50..0ab0a51 100644
--- a/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/5cf700.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_5cf700() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
-  const arg_2 = vec3(1);
+  const arg_0 = vec3(1.0);
+  const arg_1 = vec3(1.0);
+  const arg_2 = vec3(1.0);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl b/test/tint/builtins/gen/var/clamp/87df46.wgsl
index 8b27e0f..ea8e101 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(vec<4, fa>, vec<4, fa>, vec<4, fa>) -> vec<4, fa>
 fn clamp_87df46() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
-  const arg_2 = vec4(1);
+  const arg_0 = vec4(1.);
+  const arg_1 = vec4(1.);
+  const arg_2 = vec4(1.);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.dxc.hlsl
index 8af196a..f9670d0 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_87df46() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.fxc.hlsl
index 8af196a..f9670d0 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_87df46() {
-  int4 res = (1).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.glsl
index b3db98f..1d592a4 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_87df46() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_87df46() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_87df46() {
-  ivec4 res = ivec4(1);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.msl
index 62aa4bb..54934f7 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_87df46() {
-  int4 res = int4(1);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.spvasm
index 0e03650..3273991 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,35 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %19 = OpConstantNull %v4int
-         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %17 = OpTypeFunction %v4float
 %clamp_87df46 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v4float Function %5
+               OpStore %res %14
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %clamp_87df46
+%vertex_main_inner = OpFunction %v4float None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %void %clamp_87df46
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %22 = OpLabel
+         %23 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %23
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_87df46
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %clamp_87df46
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %clamp_87df46
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %clamp_87df46
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.wgsl
index ae5d00e..3b266d2 100644
--- a/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/87df46.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_87df46() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
-  const arg_2 = vec4(1);
+  const arg_0 = vec4(1.0);
+  const arg_1 = vec4(1.0);
+  const arg_2 = vec4(1.0);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl
index 6ffecf3..307f986 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(vec<3, ia>, vec<3, ia>, vec<3, ia>) -> vec<3, ia>
 fn clamp_8b1eaa() {
-  const arg_0 = vec3(1.0);
-  const arg_1 = vec3(1.0);
-  const arg_2 = vec3(1.0);
+  const arg_0 = vec3(1);
+  const arg_1 = vec3(1);
+  const arg_2 = vec3(1);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.dxc.hlsl
index 8270dd1..9ffb0cb 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_8b1eaa() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.fxc.hlsl
index 8270dd1..9ffb0cb 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_8b1eaa() {
-  float3 res = (1.0f).xxx;
+  int3 res = (1).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.glsl
index 6729165..12ccf0f 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_8b1eaa() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_8b1eaa() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_8b1eaa() {
-  vec3 res = vec3(1.0f);
+  ivec3 res = ivec3(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.msl
index 786aaaa..fb40ee7 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_8b1eaa() {
-  float3 res = float3(1.0f);
+  int3 res = int3(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.spvasm
index faa36f5..37134e6 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 32
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,37 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %19 = OpConstantNull %v3int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %18 = OpConstantNull %v3float
-         %19 = OpTypeFunction %v4float
 %clamp_8b1eaa = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3float Function %18
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %clamp_8b1eaa
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_8b1eaa
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %25
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_8b1eaa
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_8b1eaa
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_8b1eaa
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_8b1eaa
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.wgsl
index f61ad35..fa4b2c8 100644
--- a/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/8b1eaa.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_8b1eaa() {
-  const arg_0 = vec3(1.0);
-  const arg_1 = vec3(1.0);
-  const arg_2 = vec3(1.0);
+  const arg_0 = vec3(1);
+  const arg_1 = vec3(1);
+  const arg_2 = vec3(1);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl
index e53292c..67ff631 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(ia, ia, ia) -> ia
 fn clamp_96e56a() {
-  const arg_0 = 1.0;
-  const arg_1 = 1.0;
-  const arg_2 = 1.0;
+  const arg_0 = 1;
+  const arg_1 = 1;
+  const arg_2 = 1;
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.dxc.hlsl
index 6231928..b445f25 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.fxc.hlsl
index 6231928..b445f25 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.glsl
index c7dbb9b..cf52b93 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.msl
index a28781c..46325a2 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_96e56a() {
-  float res = 1.0f;
+  int res = 1;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.spvasm
index 07544da..0097629 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 29
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,34 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %17 = OpConstantNull %int
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%_ptr_Function_float = OpTypePointer Function %float
-         %16 = OpTypeFunction %v4float
 %clamp_96e56a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1
+        %res = OpVariable %_ptr_Function_int Function %17
+               OpStore %res %int_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %16
-         %18 = OpLabel
-         %19 = OpFunctionCall %void %clamp_96e56a
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %clamp_96e56a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %21 = OpLabel
-         %22 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %22
+         %23 = OpLabel
+         %24 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %24
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %clamp_96e56a
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_96e56a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %clamp_96e56a
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_96e56a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.wgsl
index d6007ca..d2ee695 100644
--- a/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/96e56a.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_96e56a() {
-  const arg_0 = 1.0;
-  const arg_1 = 1.0;
-  const arg_2 = 1.0;
+  const arg_0 = 1;
+  const arg_1 = 1;
+  const arg_2 = 1;
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl
index c86c268..e83bb0f 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(vec<2, fa>, vec<2, fa>, vec<2, fa>) -> vec<2, fa>
 fn clamp_9d731c() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
-  const arg_2 = vec2(1);
+  const arg_0 = vec2(1.);
+  const arg_1 = vec2(1.);
+  const arg_2 = vec2(1.);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.dxc.hlsl
index 25efa1a..b14e434 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_9d731c() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.fxc.hlsl
index 25efa1a..b14e434 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_9d731c() {
-  int2 res = (1).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.glsl
index 8f283b5..554727e 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_9d731c() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_9d731c() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_9d731c() {
-  ivec2 res = ivec2(1);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.msl
index 5a78c71..3ac366f 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_9d731c() {
-  int2 res = int2(1);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.spvasm
index 533a9b0..57bec99 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,39 +30,37 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %16 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %19 = OpConstantNull %v2int
-         %20 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %18 = OpConstantNull %v2float
+         %19 = OpTypeFunction %v4float
 %clamp_9d731c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2int Function %19
-               OpStore %res %16
+        %res = OpVariable %_ptr_Function_v2float Function %18
+               OpStore %res %15
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %clamp_9d731c
+%vertex_main_inner = OpFunction %v4float None %19
+         %21 = OpLabel
+         %22 = OpFunctionCall %void %clamp_9d731c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %24 = OpLabel
+         %25 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %25
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_9d731c
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_9d731c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %clamp_9d731c
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_9d731c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.wgsl
index 54adf9a..a1ccea1 100644
--- a/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/9d731c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_9d731c() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
-  const arg_2 = vec2(1);
+  const arg_0 = vec2(1.0);
+  const arg_1 = vec2(1.0);
+  const arg_2 = vec2(1.0);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl b/test/tint/builtins/gen/var/clamp/d396af.wgsl
index 6c43a0c..bb8b586 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl
@@ -23,9 +23,9 @@
 
 // fn clamp(vec<4, ia>, vec<4, ia>, vec<4, ia>) -> vec<4, ia>
 fn clamp_d396af() {
-  const arg_0 = vec4(1.0);
-  const arg_1 = vec4(1.0);
-  const arg_2 = vec4(1.0);
+  const arg_0 = vec4(1);
+  const arg_1 = vec4(1);
+  const arg_2 = vec4(1);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.dxc.hlsl
index 1f04061..bb6559a 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_d396af() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.fxc.hlsl
index 1f04061..bb6559a 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_d396af() {
-  float4 res = (1.0f).xxxx;
+  int4 res = (1).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.glsl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.glsl
index 57aa017..7c41a2f 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void clamp_d396af() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void clamp_d396af() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void clamp_d396af() {
-  vec4 res = vec4(1.0f);
+  ivec4 res = ivec4(1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.msl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.msl
index 3a1316e..1020d60 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_d396af() {
-  float4 res = float4(1.0f);
+  int4 res = int4(1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.spvasm b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.spvasm
index 4403ee44..382a87f 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,35 +30,39 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %16 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %19 = OpConstantNull %v4int
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %17 = OpTypeFunction %v4float
 %clamp_d396af = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4float Function %5
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_v4int Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %clamp_d396af
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_d396af
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %26
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %clamp_d396af
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_d396af
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %clamp_d396af
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_d396af
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.wgsl b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.wgsl
index fd665f6..ca4ce5a 100644
--- a/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/clamp/d396af.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 fn clamp_d396af() {
-  const arg_0 = vec4(1.0);
-  const arg_1 = vec4(1.0);
-  const arg_2 = vec4(1.0);
+  const arg_0 = vec4(1);
+  const arg_1 = vec4(1);
+  const arg_2 = vec4(1);
   var res = clamp(arg_0, arg_1, arg_2);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl
index ceb9904..ef05a7f 100644
--- a/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl
+++ b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(vec<4, fa>) -> vec<4, fa>
 fn saturate_4ed8d7() {
-  const arg_0 = vec4(2);
+  const arg_0 = vec4(2.);
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.wgsl b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.wgsl
index c5f28e8..fd087d5 100644
--- a/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/saturate/4ed8d7.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_4ed8d7() {
-  const arg_0 = vec4(2);
+  const arg_0 = vec4(2.0);
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/78b37c.wgsl b/test/tint/builtins/gen/var/saturate/78b37c.wgsl
index ab9e117..220f0f9 100644
--- a/test/tint/builtins/gen/var/saturate/78b37c.wgsl
+++ b/test/tint/builtins/gen/var/saturate/78b37c.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(fa) -> fa
 fn saturate_78b37c() {
-  const arg_0 = 2;
+  const arg_0 = 2.;
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.wgsl
index a12f95e..868869a 100644
--- a/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/saturate/78b37c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_78b37c() {
-  const arg_0 = 2;
+  const arg_0 = 2.0;
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/d55822.wgsl b/test/tint/builtins/gen/var/saturate/d55822.wgsl
index 2a419d4..8cdc1f3 100644
--- a/test/tint/builtins/gen/var/saturate/d55822.wgsl
+++ b/test/tint/builtins/gen/var/saturate/d55822.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(vec<3, fa>) -> vec<3, fa>
 fn saturate_d55822() {
-  const arg_0 = vec3(2);
+  const arg_0 = vec3(2.);
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.wgsl b/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.wgsl
index ba4c878..9adb651 100644
--- a/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/saturate/d55822.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_d55822() {
-  const arg_0 = vec3(2);
+  const arg_0 = vec3(2.0);
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/e40fb6.wgsl b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl
index a0e9e91..cdea5fa 100644
--- a/test/tint/builtins/gen/var/saturate/e40fb6.wgsl
+++ b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl
@@ -23,7 +23,7 @@
 
 // fn saturate(vec<2, fa>) -> vec<2, fa>
 fn saturate_e40fb6() {
-  const arg_0 = vec2(2);
+  const arg_0 = vec2(2.);
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.wgsl
index 2cf5cdd..0c8eb99 100644
--- a/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/saturate/e40fb6.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn saturate_e40fb6() {
-  const arg_0 = vec2(2);
+  const arg_0 = vec2(2.0);
   var res = saturate(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl b/test/tint/builtins/gen/var/select/089657.wgsl
index eaed4bb..f448bc9 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl
+++ b/test/tint/builtins/gen/var/select/089657.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<3, fa>, vec<3, fa>, bool) -> vec<3, fa>
 fn select_089657() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.);
+  const arg_1 = vec3(1.);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/089657.wgsl.expected.dxc.hlsl
index dca35c7..9738da9 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_089657() {
   bool arg_2 = true;
-  int3 res = (arg_2 ? (1).xxx : (1).xxx);
+  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/089657.wgsl.expected.fxc.hlsl
index dca35c7..9738da9 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_089657() {
   bool arg_2 = true;
-  int3 res = (arg_2 ? (1).xxx : (1).xxx);
+  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/089657.wgsl.expected.glsl
index d709ba9..93734b1 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_089657() {
   bool arg_2 = true;
-  ivec3 res = (arg_2 ? ivec3(1) : ivec3(1));
+  vec3 res = (arg_2 ? vec3(1.0f) : vec3(1.0f));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_089657() {
   bool arg_2 = true;
-  ivec3 res = (arg_2 ? ivec3(1) : ivec3(1));
+  vec3 res = (arg_2 ? vec3(1.0f) : vec3(1.0f));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_089657() {
   bool arg_2 = true;
-  ivec3 res = (arg_2 ? ivec3(1) : ivec3(1));
+  vec3 res = (arg_2 ? vec3(1.0f) : vec3(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl.expected.msl b/test/tint/builtins/gen/var/select/089657.wgsl.expected.msl
index 1d68da0..2780420 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_089657() {
   bool arg_2 = true;
-  int3 res = select(int3(1), int3(1), arg_2);
+  float3 res = select(float3(1.0f), float3(1.0f), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/089657.wgsl.expected.spvasm
index 2881e76..df900bc 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 46
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,48 +35,46 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %23 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+    %v3float = OpTypeVector %float 3
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v3float %float_1 %float_1 %float_1
      %v3bool = OpTypeVector %bool 3
 %_ptr_Function_v3bool = OpTypePointer Function %v3bool
-         %27 = OpConstantNull %v3bool
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %31 = OpConstantNull %v3int
-         %32 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %26 = OpConstantNull %v3bool
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %30 = OpConstantNull %v3float
+         %31 = OpTypeFunction %v4float
 %select_089657 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-         %25 = OpVariable %_ptr_Function_v3bool Function %27
-        %res = OpVariable %_ptr_Function_v3int Function %31
+         %24 = OpVariable %_ptr_Function_v3bool Function %26
+        %res = OpVariable %_ptr_Function_v3float Function %30
                OpStore %arg_2 %true
-         %21 = OpLoad %bool %arg_2
-         %28 = OpCompositeConstruct %v3bool %21 %21 %21
-         %18 = OpSelect %v3int %28 %23 %23
+         %20 = OpLoad %bool %arg_2
+         %27 = OpCompositeConstruct %v3bool %20 %20 %20
+         %18 = OpSelect %v3float %27 %22 %22
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %32
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %select_089657
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %select_089657
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %37 = OpLabel
-         %38 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %38
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %select_089657
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %select_089657
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %44 = OpLabel
-         %45 = OpFunctionCall %void %select_089657
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %select_089657
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/089657.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/089657.wgsl.expected.wgsl
index 7ec7b03..c7572f6 100644
--- a/test/tint/builtins/gen/var/select/089657.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/089657.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_089657() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.0);
+  const arg_1 = vec3(1.0);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl b/test/tint/builtins/gen/var/select/17441a.wgsl
index 2adbd67..7d12e4b 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<4, fa>, vec<4, fa>, bool) -> vec<4, fa>
 fn select_17441a() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.);
+  const arg_1 = vec4(1.);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.dxc.hlsl
index e56a262..830b6fb 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_17441a() {
   bool arg_2 = true;
-  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
+  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.fxc.hlsl
index e56a262..830b6fb 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_17441a() {
   bool arg_2 = true;
-  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
+  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.glsl
index 191bcf1..668d57d 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_17441a() {
   bool arg_2 = true;
-  ivec4 res = (arg_2 ? ivec4(1) : ivec4(1));
+  vec4 res = (arg_2 ? vec4(1.0f) : vec4(1.0f));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_17441a() {
   bool arg_2 = true;
-  ivec4 res = (arg_2 ? ivec4(1) : ivec4(1));
+  vec4 res = (arg_2 ? vec4(1.0f) : vec4(1.0f));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_17441a() {
   bool arg_2 = true;
-  ivec4 res = (arg_2 ? ivec4(1) : ivec4(1));
+  vec4 res = (arg_2 ? vec4(1.0f) : vec4(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.msl b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.msl
index 85d2e41..6cde3fe 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_17441a() {
   bool arg_2 = true;
-  int4 res = select(int4(1), int4(1), arg_2);
+  float4 res = select(float4(1.0f), float4(1.0f), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.spvasm
index 4a544b3..95155c2 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 46
+; Bound: 42
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,48 +35,44 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %23 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+    %float_1 = OpConstant %float 1
+         %21 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
      %v4bool = OpTypeVector %bool 4
 %_ptr_Function_v4bool = OpTypePointer Function %v4bool
-         %27 = OpConstantNull %v4bool
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %31 = OpConstantNull %v4int
-         %32 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %25 = OpConstantNull %v4bool
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %29 = OpTypeFunction %v4float
 %select_17441a = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-         %25 = OpVariable %_ptr_Function_v4bool Function %27
-        %res = OpVariable %_ptr_Function_v4int Function %31
+         %23 = OpVariable %_ptr_Function_v4bool Function %25
+        %res = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_2 %true
-         %21 = OpLoad %bool %arg_2
-         %28 = OpCompositeConstruct %v4bool %21 %21 %21 %21
-         %18 = OpSelect %v4int %28 %23 %23
+         %19 = OpLoad %bool %arg_2
+         %26 = OpCompositeConstruct %v4bool %19 %19 %19 %19
+         %18 = OpSelect %v4float %26 %21 %21
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %32
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %select_17441a
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %select_17441a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %37 = OpLabel
-         %38 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %38
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %select_17441a
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %select_17441a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %44 = OpLabel
-         %45 = OpFunctionCall %void %select_17441a
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %select_17441a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.wgsl
index f179566..e7cc228 100644
--- a/test/tint/builtins/gen/var/select/17441a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/17441a.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_17441a() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.0);
+  const arg_1 = vec4(1.0);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl b/test/tint/builtins/gen/var/select/1f4d93.wgsl
index 9a73d9c..d7f016c 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<2, fa>, vec<2, fa>, vec<2, bool>) -> vec<2, fa>
 fn select_1f4d93() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.);
+  const arg_1 = vec2(1.);
   var arg_2 = vec2<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.dxc.hlsl
index af542e3..df4ffcf 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_1f4d93() {
   bool2 arg_2 = (true).xx;
-  int2 res = (arg_2 ? (1).xx : (1).xx);
+  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.fxc.hlsl
index af542e3..df4ffcf 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_1f4d93() {
   bool2 arg_2 = (true).xx;
-  int2 res = (arg_2 ? (1).xx : (1).xx);
+  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
 }
 
 struct tint_symbol {
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 0b2931a..406d203 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_1f4d93() {
   bvec2 arg_2 = bvec2(true);
-  ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
+  vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_1f4d93() {
   bvec2 arg_2 = bvec2(true);
-  ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
+  vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_1f4d93() {
   bvec2 arg_2 = bvec2(true);
-  ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
+  vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.msl b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.msl
index 136969e..ee74234 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_1f4d93() {
   bool2 arg_2 = bool2(true);
-  int2 res = select(int2(1), int2(1), arg_2);
+  float2 res = select(float2(1.0f), float2(1.0f), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.spvasm
index d121d9d..7444027 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 41
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -37,43 +37,41 @@
          %16 = OpConstantComposite %v2bool %true %true
 %_ptr_Function_v2bool = OpTypePointer Function %v2bool
          %19 = OpConstantNull %v2bool
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %25 = OpConstantComposite %v2int %int_1 %int_1
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %28 = OpConstantNull %v2int
-         %29 = OpTypeFunction %v4float
+    %v2float = OpTypeVector %float 2
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v2float %float_1 %float_1
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %27 = OpConstantNull %v2float
+         %28 = OpTypeFunction %v4float
 %select_1f4d93 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_v2bool Function %19
-        %res = OpVariable %_ptr_Function_v2int Function %28
+        %res = OpVariable %_ptr_Function_v2float Function %27
                OpStore %arg_2 %16
-         %23 = OpLoad %v2bool %arg_2
-         %20 = OpSelect %v2int %23 %25 %25
+         %22 = OpLoad %v2bool %arg_2
+         %20 = OpSelect %v2float %22 %24 %24
                OpStore %res %20
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %select_1f4d93
+%vertex_main_inner = OpFunction %v4float None %28
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_1f4d93
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %33 = OpLabel
+         %34 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %34
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %select_1f4d93
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %select_1f4d93
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %select_1f4d93
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %select_1f4d93
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.wgsl
index eae4ad4..32a1de2 100644
--- a/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/1f4d93.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_1f4d93() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.0);
+  const arg_1 = vec2(1.0);
   var arg_2 = vec2<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl b/test/tint/builtins/gen/var/select/2c96d4.wgsl
index 11cd234..250d84d 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<3, fa>, vec<3, fa>, vec<3, bool>) -> vec<3, fa>
 fn select_2c96d4() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.);
+  const arg_1 = vec3(1.);
   var arg_2 = vec3<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.dxc.hlsl
index 1fefd41..19253f3 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_2c96d4() {
   bool3 arg_2 = (true).xxx;
-  int3 res = (arg_2 ? (1).xxx : (1).xxx);
+  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.fxc.hlsl
index 1fefd41..19253f3 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_2c96d4() {
   bool3 arg_2 = (true).xxx;
-  int3 res = (arg_2 ? (1).xxx : (1).xxx);
+  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
 }
 
 struct tint_symbol {
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 fb362d1..12eb956 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_2c96d4() {
   bvec3 arg_2 = bvec3(true);
-  ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
+  vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_2c96d4() {
   bvec3 arg_2 = bvec3(true);
-  ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
+  vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_2c96d4() {
   bvec3 arg_2 = bvec3(true);
-  ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
+  vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.msl b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.msl
index d174ca7..8ea9841 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_2c96d4() {
   bool3 arg_2 = bool3(true);
-  int3 res = select(int3(1), int3(1), arg_2);
+  float3 res = select(float3(1.0f), float3(1.0f), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.spvasm
index 4e3846b..3c118fa 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 41
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -37,43 +37,41 @@
          %16 = OpConstantComposite %v3bool %true %true %true
 %_ptr_Function_v3bool = OpTypePointer Function %v3bool
          %19 = OpConstantNull %v3bool
-        %int = OpTypeInt 32 1
-      %v3int = OpTypeVector %int 3
-      %int_1 = OpConstant %int 1
-         %25 = OpConstantComposite %v3int %int_1 %int_1 %int_1
-%_ptr_Function_v3int = OpTypePointer Function %v3int
-         %28 = OpConstantNull %v3int
-         %29 = OpTypeFunction %v4float
+    %v3float = OpTypeVector %float 3
     %float_1 = OpConstant %float 1
+         %24 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+%_ptr_Function_v3float = OpTypePointer Function %v3float
+         %27 = OpConstantNull %v3float
+         %28 = OpTypeFunction %v4float
 %select_2c96d4 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_v3bool Function %19
-        %res = OpVariable %_ptr_Function_v3int Function %28
+        %res = OpVariable %_ptr_Function_v3float Function %27
                OpStore %arg_2 %16
-         %23 = OpLoad %v3bool %arg_2
-         %20 = OpSelect %v3int %23 %25 %25
+         %22 = OpLoad %v3bool %arg_2
+         %20 = OpSelect %v3float %22 %24 %24
                OpStore %res %20
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %select_2c96d4
+%vertex_main_inner = OpFunction %v4float None %28
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_2c96d4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %33 = OpLabel
+         %34 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %34
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %select_2c96d4
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %select_2c96d4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %select_2c96d4
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %select_2c96d4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.wgsl
index 35bf310..7142e9d 100644
--- a/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/2c96d4.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_2c96d4() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.0);
+  const arg_1 = vec3(1.0);
   var arg_2 = vec3<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl b/test/tint/builtins/gen/var/select/3a14be.wgsl
index 1b017cc..cbe494f 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<2, ia>, vec<2, ia>, bool) -> vec<2, ia>
 fn select_3a14be() {
-  const arg_0 = vec2(1.0);
-  const arg_1 = vec2(1.0);
+  const arg_0 = vec2(1);
+  const arg_1 = vec2(1);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.dxc.hlsl
index a44dede..7ff71ef 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_3a14be() {
   bool arg_2 = true;
-  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
+  int2 res = (arg_2 ? (1).xx : (1).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.fxc.hlsl
index a44dede..7ff71ef 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_3a14be() {
   bool arg_2 = true;
-  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
+  int2 res = (arg_2 ? (1).xx : (1).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.glsl
index 95525f9..ce3844b 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_3a14be() {
   bool arg_2 = true;
-  vec2 res = (arg_2 ? vec2(1.0f) : vec2(1.0f));
+  ivec2 res = (arg_2 ? ivec2(1) : ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_3a14be() {
   bool arg_2 = true;
-  vec2 res = (arg_2 ? vec2(1.0f) : vec2(1.0f));
+  ivec2 res = (arg_2 ? ivec2(1) : ivec2(1));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_3a14be() {
   bool arg_2 = true;
-  vec2 res = (arg_2 ? vec2(1.0f) : vec2(1.0f));
+  ivec2 res = (arg_2 ? ivec2(1) : ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.msl b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.msl
index e420d52..bccc77d 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_3a14be() {
   bool arg_2 = true;
-  float2 res = select(float2(1.0f), float2(1.0f), arg_2);
+  int2 res = select(int2(1), int2(1), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.spvasm
index 1338ae9..678d56b 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,46 +35,48 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-    %v2float = OpTypeVector %float 2
-    %float_1 = OpConstant %float 1
-         %22 = OpConstantComposite %v2float %float_1 %float_1
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %23 = OpConstantComposite %v2int %int_1 %int_1
      %v2bool = OpTypeVector %bool 2
 %_ptr_Function_v2bool = OpTypePointer Function %v2bool
-         %26 = OpConstantNull %v2bool
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %30 = OpConstantNull %v2float
-         %31 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v2bool
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %31 = OpConstantNull %v2int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
 %select_3a14be = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-         %24 = OpVariable %_ptr_Function_v2bool Function %26
-        %res = OpVariable %_ptr_Function_v2float Function %30
+         %25 = OpVariable %_ptr_Function_v2bool Function %27
+        %res = OpVariable %_ptr_Function_v2int Function %31
                OpStore %arg_2 %true
-         %20 = OpLoad %bool %arg_2
-         %27 = OpCompositeConstruct %v2bool %20 %20
-         %18 = OpSelect %v2float %27 %22 %22
+         %21 = OpLoad %bool %arg_2
+         %28 = OpCompositeConstruct %v2bool %21 %21
+         %18 = OpSelect %v2int %28 %23 %23
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %31
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %select_3a14be
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %select_3a14be
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %37
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %select_3a14be
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %select_3a14be
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %select_3a14be
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %select_3a14be
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.wgsl
index e44f5de..72035b4 100644
--- a/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/3a14be.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_3a14be() {
-  const arg_0 = vec2(1.0);
-  const arg_1 = vec2(1.0);
+  const arg_0 = vec2(1);
+  const arg_1 = vec2(1);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl b/test/tint/builtins/gen/var/select/431dfb.wgsl
index bf31b88..2921fe7 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<2, ia>, vec<2, ia>, vec<2, bool>) -> vec<2, ia>
 fn select_431dfb() {
-  const arg_0 = vec2(1.0);
-  const arg_1 = vec2(1.0);
+  const arg_0 = vec2(1);
+  const arg_1 = vec2(1);
   var arg_2 = vec2<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.dxc.hlsl
index f336ee1..1996b36 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_431dfb() {
   bool2 arg_2 = (true).xx;
-  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
+  int2 res = (arg_2 ? (1).xx : (1).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.fxc.hlsl
index f336ee1..1996b36 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_431dfb() {
   bool2 arg_2 = (true).xx;
-  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
+  int2 res = (arg_2 ? (1).xx : (1).xx);
 }
 
 struct tint_symbol {
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 65cbd4a..2809a08 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_431dfb() {
   bvec2 arg_2 = bvec2(true);
-  vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
+  ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_431dfb() {
   bvec2 arg_2 = bvec2(true);
-  vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
+  ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_431dfb() {
   bvec2 arg_2 = bvec2(true);
-  vec2 res = mix(vec2(1.0f), vec2(1.0f), arg_2);
+  ivec2 res = mix(ivec2(1), ivec2(1), arg_2);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.msl b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.msl
index 55cb0e2..9aaec19 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_431dfb() {
   bool2 arg_2 = bool2(true);
-  float2 res = select(float2(1.0f), float2(1.0f), arg_2);
+  int2 res = select(int2(1), int2(1), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.spvasm
index 2f3584e..749c226 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 43
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -37,41 +37,43 @@
          %16 = OpConstantComposite %v2bool %true %true
 %_ptr_Function_v2bool = OpTypePointer Function %v2bool
          %19 = OpConstantNull %v2bool
-    %v2float = OpTypeVector %float 2
+        %int = OpTypeInt 32 1
+      %v2int = OpTypeVector %int 2
+      %int_1 = OpConstant %int 1
+         %25 = OpConstantComposite %v2int %int_1 %int_1
+%_ptr_Function_v2int = OpTypePointer Function %v2int
+         %28 = OpConstantNull %v2int
+         %29 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %24 = OpConstantComposite %v2float %float_1 %float_1
-%_ptr_Function_v2float = OpTypePointer Function %v2float
-         %27 = OpConstantNull %v2float
-         %28 = OpTypeFunction %v4float
 %select_431dfb = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_v2bool Function %19
-        %res = OpVariable %_ptr_Function_v2float Function %27
+        %res = OpVariable %_ptr_Function_v2int Function %28
                OpStore %arg_2 %16
-         %22 = OpLoad %v2bool %arg_2
-         %20 = OpSelect %v2float %22 %24 %24
+         %23 = OpLoad %v2bool %arg_2
+         %20 = OpSelect %v2int %23 %25 %25
                OpStore %res %20
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %28
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_431dfb
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %select_431dfb
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %34
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %select_431dfb
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %select_431dfb
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %select_431dfb
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %select_431dfb
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.wgsl
index f39ed44..beb2288 100644
--- a/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/431dfb.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_431dfb() {
-  const arg_0 = vec2(1.0);
-  const arg_1 = vec2(1.0);
+  const arg_0 = vec2(1);
+  const arg_1 = vec2(1);
   var arg_2 = vec2<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl b/test/tint/builtins/gen/var/select/43741e.wgsl
index 03e129e..62d6d08 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<4, fa>, vec<4, fa>, vec<4, bool>) -> vec<4, fa>
 fn select_43741e() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.);
+  const arg_1 = vec4(1.);
   var arg_2 = vec4<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.dxc.hlsl
index 993c08e..674948a 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_43741e() {
   bool4 arg_2 = (true).xxxx;
-  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
+  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.fxc.hlsl
index 993c08e..674948a 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_43741e() {
   bool4 arg_2 = (true).xxxx;
-  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
+  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
 }
 
 struct tint_symbol {
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 599a3ef..ad6e80e 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_43741e() {
   bvec4 arg_2 = bvec4(true);
-  ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
+  vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_43741e() {
   bvec4 arg_2 = bvec4(true);
-  ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
+  vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_43741e() {
   bvec4 arg_2 = bvec4(true);
-  ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
+  vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.msl b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.msl
index 051caae..04b8cba 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_43741e() {
   bool4 arg_2 = bool4(true);
-  int4 res = select(int4(1), int4(1), arg_2);
+  float4 res = select(float4(1.0f), float4(1.0f), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.spvasm
index d13a0ea..07fdf64 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 43
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -37,43 +37,39 @@
          %16 = OpConstantComposite %v4bool %true %true %true %true
 %_ptr_Function_v4bool = OpTypePointer Function %v4bool
          %19 = OpConstantNull %v4bool
-        %int = OpTypeInt 32 1
-      %v4int = OpTypeVector %int 4
-      %int_1 = OpConstant %int 1
-         %25 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
-%_ptr_Function_v4int = OpTypePointer Function %v4int
-         %28 = OpConstantNull %v4int
-         %29 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+         %23 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+         %26 = OpTypeFunction %v4float
 %select_43741e = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_v4bool Function %19
-        %res = OpVariable %_ptr_Function_v4int Function %28
+        %res = OpVariable %_ptr_Function_v4float Function %5
                OpStore %arg_2 %16
-         %23 = OpLoad %v4bool %arg_2
-         %20 = OpSelect %v4int %23 %25 %25
+         %21 = OpLoad %v4bool %arg_2
+         %20 = OpSelect %v4float %21 %23 %23
                OpStore %res %20
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %select_43741e
+%vertex_main_inner = OpFunction %v4float None %26
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %select_43741e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %31 = OpLabel
+         %32 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %32
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %38 = OpLabel
-         %39 = OpFunctionCall %void %select_43741e
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %select_43741e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %select_43741e
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %select_43741e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.wgsl
index 87daa96..5936026 100644
--- a/test/tint/builtins/gen/var/select/43741e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/43741e.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_43741e() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.0);
+  const arg_1 = vec4(1.0);
   var arg_2 = vec4<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl b/test/tint/builtins/gen/var/select/494051.wgsl
index 2ce1326..6dc6a4c 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl
+++ b/test/tint/builtins/gen/var/select/494051.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(fa, fa, bool) -> fa
 fn select_494051() {
-  const arg_0 = 1;
-  const arg_1 = 1;
+  const arg_0 = 1.;
+  const arg_1 = 1.;
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/494051.wgsl.expected.dxc.hlsl
index 9997508..49eed58 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_494051() {
   bool arg_2 = true;
-  int res = (arg_2 ? 1 : 1);
+  float res = (arg_2 ? 1.0f : 1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/494051.wgsl.expected.fxc.hlsl
index 9997508..49eed58 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_494051() {
   bool arg_2 = true;
-  int res = (arg_2 ? 1 : 1);
+  float res = (arg_2 ? 1.0f : 1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/494051.wgsl.expected.glsl
index f3cd579..b143ed8 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_494051() {
   bool arg_2 = true;
-  int res = (arg_2 ? 1 : 1);
+  float res = (arg_2 ? 1.0f : 1.0f);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_494051() {
   bool arg_2 = true;
-  int res = (arg_2 ? 1 : 1);
+  float res = (arg_2 ? 1.0f : 1.0f);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_494051() {
   bool arg_2 = true;
-  int res = (arg_2 ? 1 : 1);
+  float res = (arg_2 ? 1.0f : 1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl.expected.msl b/test/tint/builtins/gen/var/select/494051.wgsl.expected.msl
index 4fe8a0c..91f4644 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_494051() {
   bool arg_2 = true;
-  int res = select(1, 1, arg_2);
+  float res = select(1.0f, 1.0f, arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/494051.wgsl.expected.spvasm
index e2e64aa..87f6b82 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 39
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,41 +35,38 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-        %int = OpTypeInt 32 1
-      %int_1 = OpConstant %int 1
-%_ptr_Function_int = OpTypePointer Function %int
-         %24 = OpConstantNull %int
-         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
+%_ptr_Function_float = OpTypePointer Function %float
+         %23 = OpTypeFunction %v4float
 %select_494051 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-        %res = OpVariable %_ptr_Function_int Function %24
+        %res = OpVariable %_ptr_Function_float Function %8
                OpStore %arg_2 %true
-         %20 = OpLoad %bool %arg_2
-         %18 = OpSelect %int %20 %int_1 %int_1
+         %19 = OpLoad %bool %arg_2
+         %18 = OpSelect %float %19 %float_1 %float_1
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %25
-         %27 = OpLabel
-         %28 = OpFunctionCall %void %select_494051
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %select_494051
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %31
+         %28 = OpLabel
+         %29 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %29
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %select_494051
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %select_494051
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %select_494051
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %select_494051
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/494051.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/494051.wgsl.expected.wgsl
index 29cfaa5..fbd4a7a 100644
--- a/test/tint/builtins/gen/var/select/494051.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/494051.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_494051() {
-  const arg_0 = 1;
-  const arg_1 = 1;
+  const arg_0 = 1.0;
+  const arg_1 = 1.0;
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl b/test/tint/builtins/gen/var/select/4c4738.wgsl
index ea809f7..3945eba 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<4, ia>, vec<4, ia>, vec<4, bool>) -> vec<4, ia>
 fn select_4c4738() {
-  const arg_0 = vec4(1.0);
-  const arg_1 = vec4(1.0);
+  const arg_0 = vec4(1);
+  const arg_1 = vec4(1);
   var arg_2 = vec4<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.dxc.hlsl
index 7dd0091..b497edc 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_4c4738() {
   bool4 arg_2 = (true).xxxx;
-  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
+  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.fxc.hlsl
index 7dd0091..b497edc 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_4c4738() {
   bool4 arg_2 = (true).xxxx;
-  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
+  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
 }
 
 struct tint_symbol {
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 a5de0a2..699889b 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_4c4738() {
   bvec4 arg_2 = bvec4(true);
-  vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
+  ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_4c4738() {
   bvec4 arg_2 = bvec4(true);
-  vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
+  ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_4c4738() {
   bvec4 arg_2 = bvec4(true);
-  vec4 res = mix(vec4(1.0f), vec4(1.0f), arg_2);
+  ivec4 res = mix(ivec4(1), ivec4(1), arg_2);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.msl b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.msl
index 8282102..f5f9827 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_4c4738() {
   bool4 arg_2 = bool4(true);
-  float4 res = select(float4(1.0f), float4(1.0f), arg_2);
+  int4 res = select(int4(1), int4(1), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.spvasm
index 559b2ea..f67d90d 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 39
+; Bound: 43
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -37,39 +37,43 @@
          %16 = OpConstantComposite %v4bool %true %true %true %true
 %_ptr_Function_v4bool = OpTypePointer Function %v4bool
          %19 = OpConstantNull %v4bool
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %25 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %28 = OpConstantNull %v4int
+         %29 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %23 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %26 = OpTypeFunction %v4float
 %select_4c4738 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_v4bool Function %19
-        %res = OpVariable %_ptr_Function_v4float Function %5
+        %res = OpVariable %_ptr_Function_v4int Function %28
                OpStore %arg_2 %16
-         %21 = OpLoad %v4bool %arg_2
-         %20 = OpSelect %v4float %21 %23 %23
+         %23 = OpLoad %v4bool %arg_2
+         %20 = OpSelect %v4int %23 %25 %25
                OpStore %res %20
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %26
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %select_4c4738
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %select_4c4738
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %select_4c4738
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %select_4c4738
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %select_4c4738
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %select_4c4738
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.wgsl
index 020011e..cae54e6 100644
--- a/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/4c4738.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_4c4738() {
-  const arg_0 = vec4(1.0);
-  const arg_1 = vec4(1.0);
+  const arg_0 = vec4(1);
+  const arg_1 = vec4(1);
   var arg_2 = vec4<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl b/test/tint/builtins/gen/var/select/4e60da.wgsl
index 94ffa69..e9d3673 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<2, fa>, vec<2, fa>, bool) -> vec<2, fa>
 fn select_4e60da() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.);
+  const arg_1 = vec2(1.);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.dxc.hlsl
index 437a3bd..9554426 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_4e60da() {
   bool arg_2 = true;
-  int2 res = (arg_2 ? (1).xx : (1).xx);
+  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.fxc.hlsl
index 437a3bd..9554426 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_4e60da() {
   bool arg_2 = true;
-  int2 res = (arg_2 ? (1).xx : (1).xx);
+  float2 res = (arg_2 ? (1.0f).xx : (1.0f).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.glsl
index 964d045..5cfc7ec 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_4e60da() {
   bool arg_2 = true;
-  ivec2 res = (arg_2 ? ivec2(1) : ivec2(1));
+  vec2 res = (arg_2 ? vec2(1.0f) : vec2(1.0f));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_4e60da() {
   bool arg_2 = true;
-  ivec2 res = (arg_2 ? ivec2(1) : ivec2(1));
+  vec2 res = (arg_2 ? vec2(1.0f) : vec2(1.0f));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_4e60da() {
   bool arg_2 = true;
-  ivec2 res = (arg_2 ? ivec2(1) : ivec2(1));
+  vec2 res = (arg_2 ? vec2(1.0f) : vec2(1.0f));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.msl b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.msl
index de9d7c9..44d0fbd 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_4e60da() {
   bool arg_2 = true;
-  int2 res = select(int2(1), int2(1), arg_2);
+  float2 res = select(float2(1.0f), float2(1.0f), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.spvasm
index 4baeec3..5d377c6 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 46
+; Bound: 44
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,48 +35,46 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-        %int = OpTypeInt 32 1
-      %v2int = OpTypeVector %int 2
-      %int_1 = OpConstant %int 1
-         %23 = OpConstantComposite %v2int %int_1 %int_1
+    %v2float = OpTypeVector %float 2
+    %float_1 = OpConstant %float 1
+         %22 = OpConstantComposite %v2float %float_1 %float_1
      %v2bool = OpTypeVector %bool 2
 %_ptr_Function_v2bool = OpTypePointer Function %v2bool
-         %27 = OpConstantNull %v2bool
-%_ptr_Function_v2int = OpTypePointer Function %v2int
-         %31 = OpConstantNull %v2int
-         %32 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
+         %26 = OpConstantNull %v2bool
+%_ptr_Function_v2float = OpTypePointer Function %v2float
+         %30 = OpConstantNull %v2float
+         %31 = OpTypeFunction %v4float
 %select_4e60da = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-         %25 = OpVariable %_ptr_Function_v2bool Function %27
-        %res = OpVariable %_ptr_Function_v2int Function %31
+         %24 = OpVariable %_ptr_Function_v2bool Function %26
+        %res = OpVariable %_ptr_Function_v2float Function %30
                OpStore %arg_2 %true
-         %21 = OpLoad %bool %arg_2
-         %28 = OpCompositeConstruct %v2bool %21 %21
-         %18 = OpSelect %v2int %28 %23 %23
+         %20 = OpLoad %bool %arg_2
+         %27 = OpCompositeConstruct %v2bool %20 %20
+         %18 = OpSelect %v2float %27 %22 %22
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %32
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %select_4e60da
+%vertex_main_inner = OpFunction %v4float None %31
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %select_4e60da
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %37 = OpLabel
-         %38 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %38
+         %36 = OpLabel
+         %37 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %37
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %41 = OpLabel
-         %42 = OpFunctionCall %void %select_4e60da
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %select_4e60da
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %44 = OpLabel
-         %45 = OpFunctionCall %void %select_4e60da
+         %42 = OpLabel
+         %43 = OpFunctionCall %void %select_4e60da
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.wgsl
index aced362..7523a0a 100644
--- a/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/4e60da.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_4e60da() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.0);
+  const arg_1 = vec2(1.0);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl b/test/tint/builtins/gen/var/select/9b478d.wgsl
index 51949fe..927eb44 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(ia, ia, bool) -> ia
 fn select_9b478d() {
-  const arg_0 = 1.0;
-  const arg_1 = 1.0;
+  const arg_0 = 1;
+  const arg_1 = 1;
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.dxc.hlsl
index a7b93ce..1f5212f 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_9b478d() {
   bool arg_2 = true;
-  float res = (arg_2 ? 1.0f : 1.0f);
+  int res = (arg_2 ? 1 : 1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.fxc.hlsl
index a7b93ce..1f5212f 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_9b478d() {
   bool arg_2 = true;
-  float res = (arg_2 ? 1.0f : 1.0f);
+  int res = (arg_2 ? 1 : 1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.glsl
index 7fc4bda..2ddd9bb 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_9b478d() {
   bool arg_2 = true;
-  float res = (arg_2 ? 1.0f : 1.0f);
+  int res = (arg_2 ? 1 : 1);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_9b478d() {
   bool arg_2 = true;
-  float res = (arg_2 ? 1.0f : 1.0f);
+  int res = (arg_2 ? 1 : 1);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_9b478d() {
   bool arg_2 = true;
-  float res = (arg_2 ? 1.0f : 1.0f);
+  int res = (arg_2 ? 1 : 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.msl b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.msl
index 930c5f7..6d1c93c 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_9b478d() {
   bool arg_2 = true;
-  float res = select(1.0f, 1.0f, arg_2);
+  int res = select(1, 1, arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.spvasm
index 6eafe79..cc14da1 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,38 +35,41 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
+        %int = OpTypeInt 32 1
+      %int_1 = OpConstant %int 1
+%_ptr_Function_int = OpTypePointer Function %int
+         %24 = OpConstantNull %int
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-%_ptr_Function_float = OpTypePointer Function %float
-         %23 = OpTypeFunction %v4float
 %select_9b478d = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-        %res = OpVariable %_ptr_Function_float Function %8
+        %res = OpVariable %_ptr_Function_int Function %24
                OpStore %arg_2 %true
-         %19 = OpLoad %bool %arg_2
-         %18 = OpSelect %float %19 %float_1 %float_1
+         %20 = OpLoad %bool %arg_2
+         %18 = OpSelect %int %20 %int_1 %int_1
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %select_9b478d
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_9b478d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %29
+         %30 = OpLabel
+         %31 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %31
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %select_9b478d
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %select_9b478d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %select_9b478d
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %select_9b478d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.wgsl
index bede1ce..fdc87e7 100644
--- a/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/9b478d.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_9b478d() {
-  const arg_0 = 1.0;
-  const arg_1 = 1.0;
+  const arg_0 = 1;
+  const arg_1 = 1;
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl b/test/tint/builtins/gen/var/select/b93806.wgsl
index 462821c..7c05225 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<3, ia>, vec<3, ia>, vec<3, bool>) -> vec<3, ia>
 fn select_b93806() {
-  const arg_0 = vec3(1.0);
-  const arg_1 = vec3(1.0);
+  const arg_0 = vec3(1);
+  const arg_1 = vec3(1);
   var arg_2 = vec3<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.dxc.hlsl
index 9edfa54..8d124f7 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_b93806() {
   bool3 arg_2 = (true).xxx;
-  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
+  int3 res = (arg_2 ? (1).xxx : (1).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.fxc.hlsl
index 9edfa54..8d124f7 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_b93806() {
   bool3 arg_2 = (true).xxx;
-  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
+  int3 res = (arg_2 ? (1).xxx : (1).xxx);
 }
 
 struct tint_symbol {
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 2435602..a3b90cd 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_b93806() {
   bvec3 arg_2 = bvec3(true);
-  vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
+  ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_b93806() {
   bvec3 arg_2 = bvec3(true);
-  vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
+  ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_b93806() {
   bvec3 arg_2 = bvec3(true);
-  vec3 res = mix(vec3(1.0f), vec3(1.0f), arg_2);
+  ivec3 res = mix(ivec3(1), ivec3(1), arg_2);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.msl b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.msl
index 181a35b..cce3dc6e 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_b93806() {
   bool3 arg_2 = bool3(true);
-  float3 res = select(float3(1.0f), float3(1.0f), arg_2);
+  int3 res = select(int3(1), int3(1), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.spvasm
index b08f45f..7e0dc12 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 41
+; Bound: 43
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -37,41 +37,43 @@
          %16 = OpConstantComposite %v3bool %true %true %true
 %_ptr_Function_v3bool = OpTypePointer Function %v3bool
          %19 = OpConstantNull %v3bool
-    %v3float = OpTypeVector %float 3
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %25 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %28 = OpConstantNull %v3int
+         %29 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
-         %24 = OpConstantComposite %v3float %float_1 %float_1 %float_1
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %27 = OpConstantNull %v3float
-         %28 = OpTypeFunction %v4float
 %select_b93806 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_v3bool Function %19
-        %res = OpVariable %_ptr_Function_v3float Function %27
+        %res = OpVariable %_ptr_Function_v3int Function %28
                OpStore %arg_2 %16
-         %22 = OpLoad %v3bool %arg_2
-         %20 = OpSelect %v3float %22 %24 %24
+         %23 = OpLoad %v3bool %arg_2
+         %20 = OpSelect %v3int %23 %25 %25
                OpStore %res %20
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %28
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_b93806
+%vertex_main_inner = OpFunction %v4float None %29
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %select_b93806
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %34
+         %34 = OpLabel
+         %35 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %35
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %select_b93806
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %select_b93806
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %select_b93806
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %select_b93806
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.wgsl
index 56cb234..8a488da 100644
--- a/test/tint/builtins/gen/var/select/b93806.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/b93806.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_b93806() {
-  const arg_0 = vec3(1.0);
-  const arg_1 = vec3(1.0);
+  const arg_0 = vec3(1);
+  const arg_1 = vec3(1);
   var arg_2 = vec3<bool>(true);
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl b/test/tint/builtins/gen/var/select/dfab3b.wgsl
index 1f1bfef..6becfda 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<3, ia>, vec<3, ia>, bool) -> vec<3, ia>
 fn select_dfab3b() {
-  const arg_0 = vec3(1.0);
-  const arg_1 = vec3(1.0);
+  const arg_0 = vec3(1);
+  const arg_1 = vec3(1);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.dxc.hlsl
index c87f99d..691ef05 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_dfab3b() {
   bool arg_2 = true;
-  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
+  int3 res = (arg_2 ? (1).xxx : (1).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.fxc.hlsl
index c87f99d..691ef05 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_dfab3b() {
   bool arg_2 = true;
-  float3 res = (arg_2 ? (1.0f).xxx : (1.0f).xxx);
+  int3 res = (arg_2 ? (1).xxx : (1).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.glsl
index ed4de68..e1c9cc0 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_dfab3b() {
   bool arg_2 = true;
-  vec3 res = (arg_2 ? vec3(1.0f) : vec3(1.0f));
+  ivec3 res = (arg_2 ? ivec3(1) : ivec3(1));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_dfab3b() {
   bool arg_2 = true;
-  vec3 res = (arg_2 ? vec3(1.0f) : vec3(1.0f));
+  ivec3 res = (arg_2 ? ivec3(1) : ivec3(1));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_dfab3b() {
   bool arg_2 = true;
-  vec3 res = (arg_2 ? vec3(1.0f) : vec3(1.0f));
+  ivec3 res = (arg_2 ? ivec3(1) : ivec3(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.msl b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.msl
index 5853292..88188e6 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_dfab3b() {
   bool arg_2 = true;
-  float3 res = select(float3(1.0f), float3(1.0f), arg_2);
+  int3 res = select(int3(1), int3(1), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.spvasm
index 43e0abf..cd9684f 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 44
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,46 +35,48 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-    %v3float = OpTypeVector %float 3
-    %float_1 = OpConstant %float 1
-         %22 = OpConstantComposite %v3float %float_1 %float_1 %float_1
+        %int = OpTypeInt 32 1
+      %v3int = OpTypeVector %int 3
+      %int_1 = OpConstant %int 1
+         %23 = OpConstantComposite %v3int %int_1 %int_1 %int_1
      %v3bool = OpTypeVector %bool 3
 %_ptr_Function_v3bool = OpTypePointer Function %v3bool
-         %26 = OpConstantNull %v3bool
-%_ptr_Function_v3float = OpTypePointer Function %v3float
-         %30 = OpConstantNull %v3float
-         %31 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v3bool
+%_ptr_Function_v3int = OpTypePointer Function %v3int
+         %31 = OpConstantNull %v3int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
 %select_dfab3b = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-         %24 = OpVariable %_ptr_Function_v3bool Function %26
-        %res = OpVariable %_ptr_Function_v3float Function %30
+         %25 = OpVariable %_ptr_Function_v3bool Function %27
+        %res = OpVariable %_ptr_Function_v3int Function %31
                OpStore %arg_2 %true
-         %20 = OpLoad %bool %arg_2
-         %27 = OpCompositeConstruct %v3bool %20 %20 %20
-         %18 = OpSelect %v3float %27 %22 %22
+         %21 = OpLoad %bool %arg_2
+         %28 = OpCompositeConstruct %v3bool %21 %21 %21
+         %18 = OpSelect %v3int %28 %23 %23
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %31
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %select_dfab3b
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %select_dfab3b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %37
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %39 = OpLabel
-         %40 = OpFunctionCall %void %select_dfab3b
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %select_dfab3b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %42 = OpLabel
-         %43 = OpFunctionCall %void %select_dfab3b
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %select_dfab3b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.wgsl
index 1fc9ba7..f2474d3 100644
--- a/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/dfab3b.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_dfab3b() {
-  const arg_0 = vec3(1.0);
-  const arg_1 = vec3(1.0);
+  const arg_0 = vec3(1);
+  const arg_1 = vec3(1);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl b/test/tint/builtins/gen/var/select/e381c3.wgsl
index 17408f0..b752d20 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl
@@ -23,8 +23,8 @@
 
 // fn select(vec<4, ia>, vec<4, ia>, bool) -> vec<4, ia>
 fn select_e381c3() {
-  const arg_0 = vec4(1.0);
-  const arg_1 = vec4(1.0);
+  const arg_0 = vec4(1);
+  const arg_1 = vec4(1);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.dxc.hlsl
index cd574f9..bd98b01 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 void select_e381c3() {
   bool arg_2 = true;
-  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
+  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.fxc.hlsl
index cd574f9..bd98b01 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 void select_e381c3() {
   bool arg_2 = true;
-  float4 res = (arg_2 ? (1.0f).xxxx : (1.0f).xxxx);
+  int4 res = (arg_2 ? (1).xxxx : (1).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.glsl b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.glsl
index d9e07d8..206c61a 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 
 void select_e381c3() {
   bool arg_2 = true;
-  vec4 res = (arg_2 ? vec4(1.0f) : vec4(1.0f));
+  ivec4 res = (arg_2 ? ivec4(1) : ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 
 void select_e381c3() {
   bool arg_2 = true;
-  vec4 res = (arg_2 ? vec4(1.0f) : vec4(1.0f));
+  ivec4 res = (arg_2 ? ivec4(1) : ivec4(1));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 
 void select_e381c3() {
   bool arg_2 = true;
-  vec4 res = (arg_2 ? vec4(1.0f) : vec4(1.0f));
+  ivec4 res = (arg_2 ? ivec4(1) : ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.msl b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.msl
index 7d62032..d0647009 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 void select_e381c3() {
   bool arg_2 = true;
-  float4 res = select(float4(1.0f), float4(1.0f), arg_2);
+  int4 res = select(int4(1), int4(1), arg_2);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.spvasm
index 620d206..977fce2 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 42
+; Bound: 46
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -35,44 +35,48 @@
        %true = OpConstantTrue %bool
 %_ptr_Function_bool = OpTypePointer Function %bool
          %17 = OpConstantNull %bool
-    %float_1 = OpConstant %float 1
-         %21 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
+        %int = OpTypeInt 32 1
+      %v4int = OpTypeVector %int 4
+      %int_1 = OpConstant %int 1
+         %23 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
      %v4bool = OpTypeVector %bool 4
 %_ptr_Function_v4bool = OpTypePointer Function %v4bool
-         %25 = OpConstantNull %v4bool
-%_ptr_Function_v4float = OpTypePointer Function %v4float
-         %29 = OpTypeFunction %v4float
+         %27 = OpConstantNull %v4bool
+%_ptr_Function_v4int = OpTypePointer Function %v4int
+         %31 = OpConstantNull %v4int
+         %32 = OpTypeFunction %v4float
+    %float_1 = OpConstant %float 1
 %select_e381c3 = OpFunction %void None %9
          %12 = OpLabel
       %arg_2 = OpVariable %_ptr_Function_bool Function %17
-         %23 = OpVariable %_ptr_Function_v4bool Function %25
-        %res = OpVariable %_ptr_Function_v4float Function %5
+         %25 = OpVariable %_ptr_Function_v4bool Function %27
+        %res = OpVariable %_ptr_Function_v4int Function %31
                OpStore %arg_2 %true
-         %19 = OpLoad %bool %arg_2
-         %26 = OpCompositeConstruct %v4bool %19 %19 %19 %19
-         %18 = OpSelect %v4float %26 %21 %21
+         %21 = OpLoad %bool %arg_2
+         %28 = OpCompositeConstruct %v4bool %21 %21 %21 %21
+         %18 = OpSelect %v4int %28 %23 %23
                OpStore %res %18
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %29
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %select_e381c3
+%vertex_main_inner = OpFunction %v4float None %32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %select_e381c3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %35
+         %37 = OpLabel
+         %38 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %38
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %37 = OpLabel
-         %38 = OpFunctionCall %void %select_e381c3
+         %41 = OpLabel
+         %42 = OpFunctionCall %void %select_e381c3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %40 = OpLabel
-         %41 = OpFunctionCall %void %select_e381c3
+         %44 = OpLabel
+         %45 = OpFunctionCall %void %select_e381c3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.wgsl
index 61e62cd..fb06bf1 100644
--- a/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/select/e381c3.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn select_e381c3() {
-  const arg_0 = vec4(1.0);
-  const arg_1 = vec4(1.0);
+  const arg_0 = vec4(1);
+  const arg_1 = vec4(1);
   var arg_2 = true;
   var res = select(arg_0, arg_1, arg_2);
 }
diff --git a/test/tint/builtins/gen/var/sign/0799fd.wgsl b/test/tint/builtins/gen/var/sign/0799fd.wgsl
index 1ee65e9..7f7c3fb 100644
--- a/test/tint/builtins/gen/var/sign/0799fd.wgsl
+++ b/test/tint/builtins/gen/var/sign/0799fd.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(vec<2, fa>) -> vec<2, fa>
 fn sign_0799fd() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.);
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.wgsl
index 6193c87..c3eb4d7 100644
--- a/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/0799fd.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_0799fd() {
-  const arg_0 = vec2(1);
+  const arg_0 = vec2(1.0);
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/ab6301.wgsl b/test/tint/builtins/gen/var/sign/ab6301.wgsl
index cb4bdf9..89a1334 100644
--- a/test/tint/builtins/gen/var/sign/ab6301.wgsl
+++ b/test/tint/builtins/gen/var/sign/ab6301.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(vec<3, fa>) -> vec<3, fa>
 fn sign_ab6301() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.);
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.wgsl
index acf4f43..0d67140 100644
--- a/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/ab6301.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_ab6301() {
-  const arg_0 = vec3(1);
+  const arg_0 = vec3(1.0);
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/c8289c.wgsl b/test/tint/builtins/gen/var/sign/c8289c.wgsl
index c6e764b..72e234e 100644
--- a/test/tint/builtins/gen/var/sign/c8289c.wgsl
+++ b/test/tint/builtins/gen/var/sign/c8289c.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(fa) -> fa
 fn sign_c8289c() {
-  const arg_0 = 1;
+  const arg_0 = 1.;
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.wgsl
index 60ab1f1..7241526 100644
--- a/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/c8289c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_c8289c() {
-  const arg_0 = 1;
+  const arg_0 = 1.0;
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/f5da6a.wgsl b/test/tint/builtins/gen/var/sign/f5da6a.wgsl
index e5287d2..c11264a 100644
--- a/test/tint/builtins/gen/var/sign/f5da6a.wgsl
+++ b/test/tint/builtins/gen/var/sign/f5da6a.wgsl
@@ -23,7 +23,7 @@
 
 // fn sign(vec<4, fa>) -> vec<4, fa>
 fn sign_f5da6a() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.);
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.wgsl
index d01498f..46ae63e 100644
--- a/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sign/f5da6a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sign_f5da6a() {
-  const arg_0 = vec4(1);
+  const arg_0 = vec4(1.0);
   var res = sign(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/step/38cd79.wgsl b/test/tint/builtins/gen/var/step/38cd79.wgsl
index ca5eb21..a75dcc2 100644
--- a/test/tint/builtins/gen/var/step/38cd79.wgsl
+++ b/test/tint/builtins/gen/var/step/38cd79.wgsl
@@ -23,8 +23,8 @@
 
 // fn step(vec<4, fa>, vec<4, fa>) -> vec<4, fa>
 fn step_38cd79() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.);
+  const arg_1 = vec4(1.);
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.wgsl
index 852b4e3..035eba7 100644
--- a/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/38cd79.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn step_38cd79() {
-  const arg_0 = vec4(1);
-  const arg_1 = vec4(1);
+  const arg_0 = vec4(1.0);
+  const arg_1 = vec4(1.0);
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/415879.wgsl b/test/tint/builtins/gen/var/step/415879.wgsl
index 6d51afa..27e9ed5 100644
--- a/test/tint/builtins/gen/var/step/415879.wgsl
+++ b/test/tint/builtins/gen/var/step/415879.wgsl
@@ -23,8 +23,8 @@
 
 // fn step(vec<3, fa>, vec<3, fa>) -> vec<3, fa>
 fn step_415879() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.);
+  const arg_1 = vec3(1.);
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/415879.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/415879.wgsl.expected.wgsl
index a44fd51..d03614a 100644
--- a/test/tint/builtins/gen/var/step/415879.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/415879.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn step_415879() {
-  const arg_0 = vec3(1);
-  const arg_1 = vec3(1);
+  const arg_0 = vec3(1.0);
+  const arg_1 = vec3(1.0);
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/7c7e5c.wgsl b/test/tint/builtins/gen/var/step/7c7e5c.wgsl
index 60953e1..6023771 100644
--- a/test/tint/builtins/gen/var/step/7c7e5c.wgsl
+++ b/test/tint/builtins/gen/var/step/7c7e5c.wgsl
@@ -23,8 +23,8 @@
 
 // fn step(vec<2, fa>, vec<2, fa>) -> vec<2, fa>
 fn step_7c7e5c() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.);
+  const arg_1 = vec2(1.);
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.wgsl
index c913fb9..9fb4a70 100644
--- a/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/7c7e5c.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn step_7c7e5c() {
-  const arg_0 = vec2(1);
-  const arg_1 = vec2(1);
+  const arg_0 = vec2(1.0);
+  const arg_1 = vec2(1.0);
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/f9b70c.wgsl b/test/tint/builtins/gen/var/step/f9b70c.wgsl
index 422c765..ab183d1 100644
--- a/test/tint/builtins/gen/var/step/f9b70c.wgsl
+++ b/test/tint/builtins/gen/var/step/f9b70c.wgsl
@@ -23,8 +23,8 @@
 
 // fn step(fa, fa) -> fa
 fn step_f9b70c() {
-  const arg_0 = 1;
-  const arg_1 = 1;
+  const arg_0 = 1.;
+  const arg_1 = 1.;
   var res = step(arg_0, arg_1);
 }
 
diff --git a/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.wgsl
index 4222282..551e4f6 100644
--- a/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/step/f9b70c.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 fn step_f9b70c() {
-  const arg_0 = 1;
-  const arg_1 = 1;
+  const arg_0 = 1.0;
+  const arg_1 = 1.0;
   var res = step(arg_0, arg_1);
 }
 
