Fix generation of f16 values.

The generator script was not using the test values for `f16`, they
always got a zero initialization. This CL fixes the script to generate
`f16` values.

Change-Id: I95e8f2c7007251a646de05b4f7fe0aad14e740f8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109342
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl
index 9319b46..b2db3f7 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl
@@ -25,7 +25,7 @@
 
 // fn abs(vec<3, f16>) -> vec<3, f16>
 fn abs_421ca3() {
-  var res: vec3<f16> = abs(vec3<f16>(f16()));
+  var res: vec3<f16> = abs(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.dxc.hlsl
index 602de2a..11f21b9 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_421ca3() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.glsl
index b924dc4..7cf6126 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_421ca3() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void abs_421ca3() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_421ca3() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.msl
index 77b5544..06dbe3c 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_421ca3() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.spvasm
index 1761fe3..dd58a96 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/421ca3.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %abs_421ca3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %abs_421ca3
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_421ca3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_421ca3
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_421ca3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_421ca3
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_421ca3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.wgsl
index e3f2507..35d4faa 100644
--- a/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/421ca3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn abs_421ca3() {
-  var res : vec3<f16> = abs(vec3<f16>(f16()));
+  var res : vec3<f16> = abs(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl
index eaefc98..8e393c9 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl
@@ -25,7 +25,7 @@
 
 // fn abs(vec<4, f16>) -> vec<4, f16>
 fn abs_538d29() {
-  var res: vec4<f16> = abs(vec4<f16>(f16()));
+  var res: vec4<f16> = abs(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.dxc.hlsl
index c42ede9..dee1d6d 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_538d29() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.glsl
index cf355d6..5967742 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_538d29() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void abs_538d29() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_538d29() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.msl
index c8c9f6a..daab813 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_538d29() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.spvasm
index 707e86f..e897fcf 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/538d29.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %abs_538d29 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %abs_538d29
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_538d29
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_538d29
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_538d29
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_538d29
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_538d29
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.wgsl
index 5501b23..919eab8 100644
--- a/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/538d29.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn abs_538d29() {
-  var res : vec4<f16> = abs(vec4<f16>(f16()));
+  var res : vec4<f16> = abs(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl
index d6c5261..e94d993 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl
@@ -25,7 +25,7 @@
 
 // fn abs(vec<2, f16>) -> vec<2, f16>
 fn abs_5ae4fe() {
-  var res: vec2<f16> = abs(vec2<f16>(f16()));
+  var res: vec2<f16> = abs(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.dxc.hlsl
index 70b7ca6..218d736 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_5ae4fe() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.glsl
index 1e08808..0211497 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_5ae4fe() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void abs_5ae4fe() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_5ae4fe() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.msl
index 8b1b5bf..7bd87a3 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_5ae4fe() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.spvasm
index abebb5f..49a91ec 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %abs_5ae4fe = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %abs_5ae4fe
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %abs_5ae4fe
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_5ae4fe
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %abs_5ae4fe
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %abs_5ae4fe
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %abs_5ae4fe
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.wgsl
index c1e8f24..89f05c6 100644
--- a/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/5ae4fe.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn abs_5ae4fe() {
-  var res : vec2<f16> = abs(vec2<f16>(f16()));
+  var res : vec2<f16> = abs(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl
index 63cc56d..622a040 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl
@@ -25,7 +25,7 @@
 
 // fn abs(f16) -> f16
 fn abs_fd247f() {
-  var res: f16 = abs(f16());
+  var res: f16 = abs(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.dxc.hlsl
index e9cf905..21a9542 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void abs_fd247f() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.glsl
index 451b053..42d4ca1 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_fd247f() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void abs_fd247f() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void abs_fd247f() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.msl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.msl
index 524a545..5b56192 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void abs_fd247f() {
-  half res = 0.0h;
+  half res = 1.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.spvasm
index eb3438d..433ec40 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %abs_fd247f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_0
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %abs_fd247f
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %abs_fd247f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %abs_fd247f
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %abs_fd247f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %abs_fd247f
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %abs_fd247f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.wgsl
index 28cbd46..2701dbd 100644
--- a/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/abs/fd247f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn abs_fd247f() {
-  var res : f16 = abs(f16());
+  var res : f16 = abs(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl
index 35e62ea..6646047 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl
@@ -25,7 +25,7 @@
 
 // fn acos(vec<2, f16>) -> vec<2, f16>
 fn acos_004aff() {
-  var res: vec2<f16> = acos(vec2<f16>(f16()));
+  var res: vec2<f16> = acos(vec2<f16>(0.96891242171h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.dxc.hlsl
index 4b568a1..12356f0 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_004aff() {
-  vector<float16_t, 2> res = (float16_t(1.5703125h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.250488281h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.glsl
index 4fc4516..015ed01 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_004aff() {
-  f16vec2 res = f16vec2(1.5703125hf);
+  f16vec2 res = f16vec2(0.250488281hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_004aff() {
-  f16vec2 res = f16vec2(1.5703125hf);
+  f16vec2 res = f16vec2(0.250488281hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_004aff() {
-  f16vec2 res = f16vec2(1.5703125hf);
+  f16vec2 res = f16vec2(0.250488281hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.msl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.msl
index 4f26080..67bf3ab 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_004aff() {
-  half2 res = half2(1.5703125h);
+  half2 res = half2(0.250488281h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.spvasm
index 3f2143c..34f105f 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-%half_0x1_92p_0 = OpConstant %half 0x1.92p+0
-         %16 = OpConstantComposite %v2half %half_0x1_92p_0 %half_0x1_92p_0
+%half_0x1_008pn2 = OpConstant %half 0x1.008p-2
+         %16 = OpConstantComposite %v2half %half_0x1_008pn2 %half_0x1_008pn2
 %_ptr_Function_v2half = OpTypePointer Function %v2half
          %19 = OpConstantNull %v2half
          %20 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.wgsl
index 57a6cb0..dc52331 100644
--- a/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/004aff.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acos_004aff() {
-  var res : vec2<f16> = acos(vec2<f16>(f16()));
+  var res : vec2<f16> = acos(vec2<f16>(0.96875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl b/test/tint/builtins/gen/literal/acos/203628.wgsl
index e5f2df8..886d04c 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl
@@ -25,7 +25,7 @@
 
 // fn acos(vec<4, f16>) -> vec<4, f16>
 fn acos_203628() {
-  var res: vec4<f16> = acos(vec4<f16>(f16()));
+  var res: vec4<f16> = acos(vec4<f16>(0.96891242171h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.dxc.hlsl
index 5e05dc0..1dff9cc 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_203628() {
-  vector<float16_t, 4> res = (float16_t(1.5703125h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.250488281h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.glsl
index d46fc9b..5831f92 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_203628() {
-  f16vec4 res = f16vec4(1.5703125hf);
+  f16vec4 res = f16vec4(0.250488281hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_203628() {
-  f16vec4 res = f16vec4(1.5703125hf);
+  f16vec4 res = f16vec4(0.250488281hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_203628() {
-  f16vec4 res = f16vec4(1.5703125hf);
+  f16vec4 res = f16vec4(0.250488281hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.msl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.msl
index b8aaeab..718ec84 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_203628() {
-  half4 res = half4(1.5703125h);
+  half4 res = half4(0.250488281h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.spvasm
index 396ce5a..f607fb5 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-%half_0x1_92p_0 = OpConstant %half 0x1.92p+0
-         %16 = OpConstantComposite %v4half %half_0x1_92p_0 %half_0x1_92p_0 %half_0x1_92p_0 %half_0x1_92p_0
+%half_0x1_008pn2 = OpConstant %half 0x1.008p-2
+         %16 = OpConstantComposite %v4half %half_0x1_008pn2 %half_0x1_008pn2 %half_0x1_008pn2 %half_0x1_008pn2
 %_ptr_Function_v4half = OpTypePointer Function %v4half
          %19 = OpConstantNull %v4half
          %20 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.wgsl
index ebbc42e..1764ae7 100644
--- a/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/203628.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acos_203628() {
-  var res : vec4<f16> = acos(vec4<f16>(f16()));
+  var res : vec4<f16> = acos(vec4<f16>(0.96875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl
index 959d129..f8fdc38 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl
@@ -25,7 +25,7 @@
 
 // fn acos(f16) -> f16
 fn acos_303e3d() {
-  var res: f16 = acos(f16());
+  var res: f16 = acos(0.96891242171h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.dxc.hlsl
index 15b68db..1ae3af9 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_303e3d() {
-  float16_t res = float16_t(1.5703125h);
+  float16_t res = float16_t(0.250488281h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.glsl
index 0ff0856..ffc7b25 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_303e3d() {
-  float16_t res = 1.5703125hf;
+  float16_t res = 0.250488281hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_303e3d() {
-  float16_t res = 1.5703125hf;
+  float16_t res = 0.250488281hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_303e3d() {
-  float16_t res = 1.5703125hf;
+  float16_t res = 0.250488281hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.msl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.msl
index d605822..80a86d6 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_303e3d() {
-  half res = 1.5703125h;
+  half res = 0.250488281h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.spvasm
index 15253c4..6cccf82 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.spvasm
@@ -35,7 +35,7 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-%half_0x1_92p_0 = OpConstant %half 0x1.92p+0
+%half_0x1_008pn2 = OpConstant %half 0x1.008p-2
 %_ptr_Function_half = OpTypePointer Function %half
          %17 = OpConstantNull %half
          %18 = OpTypeFunction %v4float
@@ -43,7 +43,7 @@
 %acos_303e3d = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_half Function %17
-               OpStore %res %half_0x1_92p_0
+               OpStore %res %half_0x1_008pn2
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %18
diff --git a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.wgsl
index d9f5be3..6d509d4 100644
--- a/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/303e3d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acos_303e3d() {
-  var res : f16 = acos(f16());
+  var res : f16 = acos(0.96875h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl
index 9195ffb..16b5967 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl
@@ -25,7 +25,7 @@
 
 // fn acos(vec<3, f16>) -> vec<3, f16>
 fn acos_f47057() {
-  var res: vec3<f16> = acos(vec3<f16>(f16()));
+  var res: vec3<f16> = acos(vec3<f16>(0.96891242171h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.dxc.hlsl
index 87a5f7d..c972d2e 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_f47057() {
-  vector<float16_t, 3> res = (float16_t(1.5703125h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.250488281h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.glsl
index 60d4629..51cfd54 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_f47057() {
-  f16vec3 res = f16vec3(1.5703125hf);
+  f16vec3 res = f16vec3(0.250488281hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_f47057() {
-  f16vec3 res = f16vec3(1.5703125hf);
+  f16vec3 res = f16vec3(0.250488281hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_f47057() {
-  f16vec3 res = f16vec3(1.5703125hf);
+  f16vec3 res = f16vec3(0.250488281hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.msl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.msl
index 568f757..547e7db 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_f47057() {
-  half3 res = half3(1.5703125h);
+  half3 res = half3(0.250488281h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.spvasm
index 3d7723b..38f068a 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-%half_0x1_92p_0 = OpConstant %half 0x1.92p+0
-         %16 = OpConstantComposite %v3half %half_0x1_92p_0 %half_0x1_92p_0 %half_0x1_92p_0
+%half_0x1_008pn2 = OpConstant %half 0x1.008p-2
+         %16 = OpConstantComposite %v3half %half_0x1_008pn2 %half_0x1_008pn2 %half_0x1_008pn2
 %_ptr_Function_v3half = OpTypePointer Function %v3half
          %19 = OpConstantNull %v3half
          %20 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.wgsl
index fe4125d..d718a2f 100644
--- a/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/f47057.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acos_f47057() {
-  var res : vec3<f16> = acos(vec3<f16>(f16()));
+  var res : vec3<f16> = acos(vec3<f16>(0.96875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl
index a4b0dab..9b22332 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(vec<2, f16>) -> vec<2, f16>
 fn acosh_5f49d8() {
-  var res: vec2<f16> = acosh(vec2<f16>(f16()));
+  var res: vec2<f16> = acosh(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.dxc.hlsl
index 9ba3054..f595442 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_5f49d8() {
-  vector<float16_t, 2> res = tint_acosh((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = tint_acosh((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.glsl
index 1297122..15b49cb 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_5f49d8() {
-  f16vec2 res = tint_acosh(f16vec2(0.0hf));
+  f16vec2 res = tint_acosh(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -31,7 +31,7 @@
 }
 
 void acosh_5f49d8() {
-  f16vec2 res = tint_acosh(f16vec2(0.0hf));
+  f16vec2 res = tint_acosh(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -50,7 +50,7 @@
 }
 
 void acosh_5f49d8() {
-  f16vec2 res = tint_acosh(f16vec2(0.0hf));
+  f16vec2 res = tint_acosh(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.msl
index 9245c57..54a7472 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_5f49d8() {
-  half2 res = tint_acosh(half2(0.0h));
+  half2 res = tint_acosh(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.spvasm
index 79bf1ae..833c13d 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.spvasm
@@ -59,7 +59,7 @@
 %acosh_5f49d8 = OpFunction %void None %24
          %27 = OpLabel
         %res = OpVariable %_ptr_Function_v2half Function %21
-         %28 = OpFunctionCall %v2half %tint_acosh %21
+         %28 = OpFunctionCall %v2half %tint_acosh %17
                OpStore %res %28
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.wgsl
index 54e3b93..edbedff 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_5f49d8() {
-  var res : vec2<f16> = acosh(vec2<f16>(f16()));
+  var res : vec2<f16> = acosh(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl
index 9b93d25..6984829 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(f16) -> f16
 fn acosh_a37dfe() {
-  var res: f16 = acosh(f16());
+  var res: f16 = acosh(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.dxc.hlsl
index 0a48295..7e00e58 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t res = tint_acosh(float16_t(0.0h));
+  float16_t res = tint_acosh(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.glsl
index e7752e3..53f6164 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t res = tint_acosh(0.0hf);
+  float16_t res = tint_acosh(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -31,7 +31,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t res = tint_acosh(0.0hf);
+  float16_t res = tint_acosh(1.0hf);
 }
 
 void fragment_main() {
@@ -50,7 +50,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t res = tint_acosh(0.0hf);
+  float16_t res = tint_acosh(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.msl
index 09a8e2d..bc04673 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_a37dfe() {
-  half res = tint_acosh(0.0h);
+  half res = tint_acosh(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.spvasm
index e5071ef..a8f4cc6 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.spvasm
@@ -56,7 +56,7 @@
 %acosh_a37dfe = OpFunction %void None %21
          %24 = OpLabel
         %res = OpVariable %_ptr_Function_half Function %18
-         %25 = OpFunctionCall %half %tint_acosh %18
+         %25 = OpFunctionCall %half %tint_acosh %half_0x1p_0
                OpStore %res %25
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.wgsl
index 983b91c..ee0b95a 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_a37dfe() {
-  var res : f16 = acosh(f16());
+  var res : f16 = acosh(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl
index 4f64c07..40e8501 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(vec<4, f16>) -> vec<4, f16>
 fn acosh_de60d8() {
-  var res: vec4<f16> = acosh(vec4<f16>(f16()));
+  var res: vec4<f16> = acosh(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.dxc.hlsl
index 5de3f3b..f4e9e04 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_de60d8() {
-  vector<float16_t, 4> res = tint_acosh((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = tint_acosh((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.glsl
index 439999f..7076bfa 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_de60d8() {
-  f16vec4 res = tint_acosh(f16vec4(0.0hf));
+  f16vec4 res = tint_acosh(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -31,7 +31,7 @@
 }
 
 void acosh_de60d8() {
-  f16vec4 res = tint_acosh(f16vec4(0.0hf));
+  f16vec4 res = tint_acosh(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -50,7 +50,7 @@
 }
 
 void acosh_de60d8() {
-  f16vec4 res = tint_acosh(f16vec4(0.0hf));
+  f16vec4 res = tint_acosh(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.msl
index 39b26d7..6b8bdcc 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_de60d8() {
-  half4 res = tint_acosh(half4(0.0h));
+  half4 res = tint_acosh(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.spvasm
index 220c72a..0c0218a 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.spvasm
@@ -59,7 +59,7 @@
 %acosh_de60d8 = OpFunction %void None %24
          %27 = OpLabel
         %res = OpVariable %_ptr_Function_v4half Function %21
-         %28 = OpFunctionCall %v4half %tint_acosh %21
+         %28 = OpFunctionCall %v4half %tint_acosh %17
                OpStore %res %28
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.wgsl
index 1fdbcb0..9e2d557 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_de60d8() {
-  var res : vec4<f16> = acosh(vec4<f16>(f16()));
+  var res : vec4<f16> = acosh(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl
index 40db5d3..192966a 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(vec<3, f16>) -> vec<3, f16>
 fn acosh_f56574() {
-  var res: vec3<f16> = acosh(vec3<f16>(f16()));
+  var res: vec3<f16> = acosh(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.dxc.hlsl
index 72b7eb7..738ab20 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_f56574() {
-  vector<float16_t, 3> res = tint_acosh((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = tint_acosh((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.glsl
index 20527af..522b80a 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_f56574() {
-  f16vec3 res = tint_acosh(f16vec3(0.0hf));
+  f16vec3 res = tint_acosh(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -31,7 +31,7 @@
 }
 
 void acosh_f56574() {
-  f16vec3 res = tint_acosh(f16vec3(0.0hf));
+  f16vec3 res = tint_acosh(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -50,7 +50,7 @@
 }
 
 void acosh_f56574() {
-  f16vec3 res = tint_acosh(f16vec3(0.0hf));
+  f16vec3 res = tint_acosh(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.msl
index df354ba..ef82790 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_f56574() {
-  half3 res = tint_acosh(half3(0.0h));
+  half3 res = tint_acosh(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.spvasm
index c1bec97..a5502a5 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.spvasm
@@ -59,7 +59,7 @@
 %acosh_f56574 = OpFunction %void None %24
          %27 = OpLabel
         %res = OpVariable %_ptr_Function_v3half Function %21
-         %28 = OpFunctionCall %v3half %tint_acosh %21
+         %28 = OpFunctionCall %v3half %tint_acosh %17
                OpStore %res %28
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.wgsl
index 2eff0f0..ffb973a 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_f56574() {
-  var res : vec3<f16> = acosh(vec3<f16>(f16()));
+  var res : vec3<f16> = acosh(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl
index 83b5763..a7cea13 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl
@@ -25,7 +25,7 @@
 
 // fn asin(f16) -> f16
 fn asin_11dfda() {
-  var res: f16 = asin(f16());
+  var res: f16 = asin(0.479425538604h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.dxc.hlsl
index 16da374..21b8491 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_11dfda() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(0.499755859h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.glsl
index cacb7fd..ee0dcab 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_11dfda() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.499755859hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_11dfda() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.499755859hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_11dfda() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.499755859hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.msl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.msl
index 7a0180c..5bb00b3 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_11dfda() {
-  half res = 0.0h;
+  half res = 0.499755859h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.spvasm
index 47a6e66..5d30cab 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1_ffcpn2 = OpConstant %half 0x1.ffcp-2
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asin_11dfda = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1_ffcpn2
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %asin_11dfda
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %asin_11dfda
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %asin_11dfda
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %asin_11dfda
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %asin_11dfda
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %asin_11dfda
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.wgsl
index d1b5976..434bded 100644
--- a/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/11dfda.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_11dfda() {
-  var res : f16 = asin(f16());
+  var res : f16 = asin(0.479248047h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl
index d21bfd5..9291474 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl
@@ -25,7 +25,7 @@
 
 // fn asin(vec<3, f16>) -> vec<3, f16>
 fn asin_2d8e29() {
-  var res: vec3<f16> = asin(vec3<f16>(f16()));
+  var res: vec3<f16> = asin(vec3<f16>(0.479425538604h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.dxc.hlsl
index 6fdb472..b39bb3e 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_2d8e29() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.499755859h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.glsl
index 6d5368f..1f946d0 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_2d8e29() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.499755859hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_2d8e29() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.499755859hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_2d8e29() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.499755859hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.msl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.msl
index 22e88c9..f71b867 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_2d8e29() {
-  half3 res = half3(0.0h);
+  half3 res = half3(0.499755859h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.spvasm
index fd68919..2768bf7 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1_ffcpn2 = OpConstant %half 0x1.ffcp-2
+         %16 = OpConstantComposite %v3half %half_0x1_ffcpn2 %half_0x1_ffcpn2 %half_0x1_ffcpn2
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asin_2d8e29 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %asin_2d8e29
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %asin_2d8e29
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %asin_2d8e29
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %asin_2d8e29
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %asin_2d8e29
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %asin_2d8e29
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.wgsl
index 2f97bd2..0a0207c 100644
--- a/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/2d8e29.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_2d8e29() {
-  var res : vec3<f16> = asin(vec3<f16>(f16()));
+  var res : vec3<f16> = asin(vec3<f16>(0.479248047h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl
index 44991ef..6e46f91 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl
@@ -25,7 +25,7 @@
 
 // fn asin(vec<4, f16>) -> vec<4, f16>
 fn asin_3cfbd4() {
-  var res: vec4<f16> = asin(vec4<f16>(f16()));
+  var res: vec4<f16> = asin(vec4<f16>(0.479425538604h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.dxc.hlsl
index 71cc9bf..62589e5 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_3cfbd4() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.499755859h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.glsl
index b2afaf4..1c60738 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_3cfbd4() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.499755859hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_3cfbd4() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.499755859hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_3cfbd4() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.499755859hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.msl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.msl
index dc266c6..6283ba0 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_3cfbd4() {
-  half4 res = half4(0.0h);
+  half4 res = half4(0.499755859h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.spvasm
index 7a57a86..f110573 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1_ffcpn2 = OpConstant %half 0x1.ffcp-2
+         %16 = OpConstantComposite %v4half %half_0x1_ffcpn2 %half_0x1_ffcpn2 %half_0x1_ffcpn2 %half_0x1_ffcpn2
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asin_3cfbd4 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %asin_3cfbd4
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %asin_3cfbd4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %asin_3cfbd4
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %asin_3cfbd4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %asin_3cfbd4
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %asin_3cfbd4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.wgsl
index 63c66a1..e646e00 100644
--- a/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/3cfbd4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_3cfbd4() {
-  var res : vec4<f16> = asin(vec4<f16>(f16()));
+  var res : vec4<f16> = asin(vec4<f16>(0.479248047h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl
index 591bac3..792e6f6 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl
@@ -25,7 +25,7 @@
 
 // fn asin(vec<2, f16>) -> vec<2, f16>
 fn asin_b4aced() {
-  var res: vec2<f16> = asin(vec2<f16>(f16()));
+  var res: vec2<f16> = asin(vec2<f16>(0.479425538604h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.dxc.hlsl
index dc1aea1..870f92b 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_b4aced() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.499755859h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.glsl
index 1018bd1..b462aa0 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_b4aced() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.499755859hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_b4aced() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.499755859hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_b4aced() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.499755859hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.msl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.msl
index 0bd37c5..56a0113 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_b4aced() {
-  half2 res = half2(0.0h);
+  half2 res = half2(0.499755859h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.spvasm
index f93ae26..d61e336 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asin/b4aced.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1_ffcpn2 = OpConstant %half 0x1.ffcp-2
+         %16 = OpConstantComposite %v2half %half_0x1_ffcpn2 %half_0x1_ffcpn2
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asin_b4aced = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %asin_b4aced
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %asin_b4aced
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %asin_b4aced
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %asin_b4aced
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %asin_b4aced
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %asin_b4aced
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.wgsl
index 545e7c4..81b0b44 100644
--- a/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/b4aced.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_b4aced() {
-  var res : vec2<f16> = asin(vec2<f16>(f16()));
+  var res : vec2<f16> = asin(vec2<f16>(0.479248047h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl
index 884a6b2..661f08e 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl
@@ -25,7 +25,7 @@
 
 // fn asinh(f16) -> f16
 fn asinh_468a48() {
-  var res: f16 = asinh(f16());
+  var res: f16 = asinh(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl
index 895988b..16f004b 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_468a48() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(0.881347656h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.glsl
index 0b42f0a..d5da6f4 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_468a48() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.881347656hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_468a48() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.881347656hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_468a48() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.881347656hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.msl
index 6f6d727..eecb9b7 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_468a48() {
-  half res = 0.0h;
+  half res = 0.881347656h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.spvasm
index 21f9b59..9e2b885 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1_c34pn1 = OpConstant %half 0x1.c34p-1
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asinh_468a48 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1_c34pn1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %asinh_468a48
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %asinh_468a48
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %asinh_468a48
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %asinh_468a48
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %asinh_468a48
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %asinh_468a48
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.wgsl
index a546ede..fc555c0 100644
--- a/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/468a48.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asinh_468a48() {
-  var res : f16 = asinh(f16());
+  var res : f16 = asinh(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl
index dfa3c29..d3df0c6 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl
@@ -25,7 +25,7 @@
 
 // fn asinh(vec<4, f16>) -> vec<4, f16>
 fn asinh_95ab2b() {
-  var res: vec4<f16> = asinh(vec4<f16>(f16()));
+  var res: vec4<f16> = asinh(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl
index a429606b..aceecc0 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_95ab2b() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.881347656h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.glsl
index d3e28ea..7033652 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_95ab2b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.881347656hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_95ab2b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.881347656hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_95ab2b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.881347656hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.msl
index 6066d30..d294e1a 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_95ab2b() {
-  half4 res = half4(0.0h);
+  half4 res = half4(0.881347656h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.spvasm
index a85a653..8a5fa6a 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1_c34pn1 = OpConstant %half 0x1.c34p-1
+         %16 = OpConstantComposite %v4half %half_0x1_c34pn1 %half_0x1_c34pn1 %half_0x1_c34pn1 %half_0x1_c34pn1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asinh_95ab2b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %asinh_95ab2b
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %asinh_95ab2b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %asinh_95ab2b
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %asinh_95ab2b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %asinh_95ab2b
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %asinh_95ab2b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.wgsl
index ca02f94..e22c6a8 100644
--- a/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/95ab2b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asinh_95ab2b() {
-  var res : vec4<f16> = asinh(vec4<f16>(f16()));
+  var res : vec4<f16> = asinh(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl
index fa045bb..3b284fa 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl
@@ -25,7 +25,7 @@
 
 // fn asinh(vec<2, f16>) -> vec<2, f16>
 fn asinh_ad8f8b() {
-  var res: vec2<f16> = asinh(vec2<f16>(f16()));
+  var res: vec2<f16> = asinh(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl
index fa23693..7a2f4f0 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_ad8f8b() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.881347656h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.glsl
index 483c514..b6efd56 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_ad8f8b() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.881347656hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_ad8f8b() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.881347656hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_ad8f8b() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.881347656hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.msl
index 9f70a7d..4d9d5b5 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_ad8f8b() {
-  half2 res = half2(0.0h);
+  half2 res = half2(0.881347656h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.spvasm
index f7cf120..027fbe2 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1_c34pn1 = OpConstant %half 0x1.c34p-1
+         %16 = OpConstantComposite %v2half %half_0x1_c34pn1 %half_0x1_c34pn1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asinh_ad8f8b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %asinh_ad8f8b
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %asinh_ad8f8b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %asinh_ad8f8b
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %asinh_ad8f8b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %asinh_ad8f8b
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %asinh_ad8f8b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.wgsl
index 3bd274e..150062d 100644
--- a/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/ad8f8b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asinh_ad8f8b() {
-  var res : vec2<f16> = asinh(vec2<f16>(f16()));
+  var res : vec2<f16> = asinh(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl
index 67d2c9d..8f84a91 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl
@@ -25,7 +25,7 @@
 
 // fn asinh(vec<3, f16>) -> vec<3, f16>
 fn asinh_fb5e8c() {
-  var res: vec3<f16> = asinh(vec3<f16>(f16()));
+  var res: vec3<f16> = asinh(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl
index 30cea25..611ab3e 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_fb5e8c() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.881347656h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.glsl
index 251733e..f5e2e87 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_fb5e8c() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.881347656hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_fb5e8c() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.881347656hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_fb5e8c() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.881347656hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.msl
index 5ca1c10..a7d247d 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_fb5e8c() {
-  half3 res = half3(0.0h);
+  half3 res = half3(0.881347656h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.spvasm
index ab6521d..50f3700 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1_c34pn1 = OpConstant %half 0x1.c34p-1
+         %16 = OpConstantComposite %v3half %half_0x1_c34pn1 %half_0x1_c34pn1 %half_0x1_c34pn1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %asinh_fb5e8c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %asinh_fb5e8c
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %asinh_fb5e8c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %asinh_fb5e8c
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %asinh_fb5e8c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %asinh_fb5e8c
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %asinh_fb5e8c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.wgsl
index 953a9d1..9187eb3 100644
--- a/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asinh/fb5e8c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asinh_fb5e8c() {
-  var res : vec3<f16> = asinh(vec3<f16>(f16()));
+  var res : vec3<f16> = asinh(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl
index 250ddc5..66ea29f 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan(vec<4, f16>) -> vec<4, f16>
 fn atan_19faea() {
-  var res: vec4<f16> = atan(vec4<f16>(f16()));
+  var res: vec4<f16> = atan(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.dxc.hlsl
index db14b48..216328d 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_19faea() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.78515625h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.glsl
index ad63e47..7130595 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_19faea() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.78515625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan_19faea() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.78515625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_19faea() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.78515625hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.msl
index 183c560..0b34640 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_19faea() {
-  half4 res = half4(0.0h);
+  half4 res = half4(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.spvasm
index 4fa1e97..30a969f 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan/19faea.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
+         %16 = OpConstantComposite %v4half %half_0x1_92pn1 %half_0x1_92pn1 %half_0x1_92pn1 %half_0x1_92pn1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan_19faea = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atan_19faea
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atan_19faea
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atan_19faea
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atan_19faea
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atan_19faea
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atan_19faea
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.wgsl
index ecac955..b0ac4df 100644
--- a/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/19faea.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan_19faea() {
-  var res : vec4<f16> = atan(vec4<f16>(f16()));
+  var res : vec4<f16> = atan(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl
index 013ab6e..78b48d4 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan(vec<2, f16>) -> vec<2, f16>
 fn atan_1e1764() {
-  var res: vec2<f16> = atan(vec2<f16>(f16()));
+  var res: vec2<f16> = atan(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.dxc.hlsl
index 04d8dbe..05f6914 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_1e1764() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.78515625h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.glsl
index f0bca04..5b0496c 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_1e1764() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.78515625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan_1e1764() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.78515625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_1e1764() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.78515625hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.msl
index ed6033e..b488b7e 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_1e1764() {
-  half2 res = half2(0.0h);
+  half2 res = half2(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.spvasm
index e51b794..b557b01 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan/1e1764.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
+         %16 = OpConstantComposite %v2half %half_0x1_92pn1 %half_0x1_92pn1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan_1e1764 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atan_1e1764
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atan_1e1764
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atan_1e1764
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atan_1e1764
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atan_1e1764
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atan_1e1764
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.wgsl
index 8278671..bf65b92 100644
--- a/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/1e1764.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan_1e1764() {
-  var res : vec2<f16> = atan(vec2<f16>(f16()));
+  var res : vec2<f16> = atan(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl
index 766fcb3..32968c9 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan(vec<3, f16>) -> vec<3, f16>
 fn atan_a5f421() {
-  var res: vec3<f16> = atan(vec3<f16>(f16()));
+  var res: vec3<f16> = atan(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.dxc.hlsl
index 913e3e2..effc7b5 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_a5f421() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.78515625h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.glsl
index ced4a20..85d1d52 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_a5f421() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.78515625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan_a5f421() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.78515625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_a5f421() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.78515625hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.msl
index fd9e130..e28095e 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_a5f421() {
-  half3 res = half3(0.0h);
+  half3 res = half3(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.spvasm
index 8464422..e7b6e05 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan/a5f421.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
+         %16 = OpConstantComposite %v3half %half_0x1_92pn1 %half_0x1_92pn1 %half_0x1_92pn1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan_a5f421 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atan_a5f421
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atan_a5f421
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atan_a5f421
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atan_a5f421
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atan_a5f421
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atan_a5f421
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.wgsl
index 356793c..3fdca85 100644
--- a/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/a5f421.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan_a5f421() {
-  var res : vec3<f16> = atan(vec3<f16>(f16()));
+  var res : vec3<f16> = atan(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl
index 9467660..4fe638f 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan(f16) -> f16
 fn atan_a7ba61() {
-  var res: f16 = atan(f16());
+  var res: f16 = atan(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.dxc.hlsl
index c68aeb5..7917730 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_a7ba61() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.glsl
index d6262bd..b1a4614 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_a7ba61() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.78515625hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan_a7ba61() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.78515625hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan_a7ba61() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.78515625hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.msl
index c35f48f..fa27251 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_a7ba61() {
-  half res = 0.0h;
+  half res = 0.78515625h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.spvasm
index 7ff9f39..8e2d6b5 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan_a7ba61 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1_92pn1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %atan_a7ba61
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %atan_a7ba61
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %atan_a7ba61
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %atan_a7ba61
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %atan_a7ba61
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %atan_a7ba61
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.wgsl
index 891c5e3..f589885 100644
--- a/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan/a7ba61.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan_a7ba61() {
-  var res : f16 = atan(f16());
+  var res : f16 = atan(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl
index 5a1889f..bd3fda3 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan2(vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn atan2_21dfea() {
-  var res: vec3<f16> = atan2(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = atan2(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.dxc.hlsl
index f40c95d..e43a600 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_21dfea() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.78515625h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.glsl
index 489c3b5..51b0410 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_21dfea() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.78515625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan2_21dfea() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.78515625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_21dfea() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.78515625hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.msl
index 871202c..bea4a82 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_21dfea() {
-  half3 res = half3(0.0h);
+  half3 res = half3(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.spvasm
index 25707d7..57a1b0d 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
+         %16 = OpConstantComposite %v3half %half_0x1_92pn1 %half_0x1_92pn1 %half_0x1_92pn1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan2_21dfea = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atan2_21dfea
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atan2_21dfea
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atan2_21dfea
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atan2_21dfea
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atan2_21dfea
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atan2_21dfea
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.wgsl
index a5251d4..9e00206 100644
--- a/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/21dfea.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan2_21dfea() {
-  var res : vec3<f16> = atan2(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = atan2(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl
index 6a5abcb..26219a8 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan2(vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn atan2_93febc() {
-  var res: vec2<f16> = atan2(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = atan2(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.dxc.hlsl
index 29acbb2..8c872a0 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_93febc() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.78515625h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.glsl
index 1de833b..a3692f6 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_93febc() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.78515625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan2_93febc() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.78515625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_93febc() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.78515625hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.msl
index 7f6e188..1c73f44 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_93febc() {
-  half2 res = half2(0.0h);
+  half2 res = half2(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.spvasm
index 4404d85..40fbed8 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan2/93febc.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
+         %16 = OpConstantComposite %v2half %half_0x1_92pn1 %half_0x1_92pn1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan2_93febc = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atan2_93febc
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atan2_93febc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atan2_93febc
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atan2_93febc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atan2_93febc
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atan2_93febc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.wgsl
index 23d923a..bc501ed 100644
--- a/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/93febc.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan2_93febc() {
-  var res : vec2<f16> = atan2(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = atan2(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl
index c22ba39..06f7c6b 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan2(f16, f16) -> f16
 fn atan2_ca698e() {
-  var res: f16 = atan2(f16(), f16());
+  var res: f16 = atan2(1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.dxc.hlsl
index 68471d9..f6e9588 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_ca698e() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.glsl
index d310b70..244e8eb 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_ca698e() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.78515625hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan2_ca698e() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.78515625hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_ca698e() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.78515625hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.msl
index f4e7539..a875213 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_ca698e() {
-  half res = 0.0h;
+  half res = 0.78515625h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.spvasm
index 63ae0e4..dee8585 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan2_ca698e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1_92pn1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %atan2_ca698e
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %atan2_ca698e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %atan2_ca698e
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %atan2_ca698e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %atan2_ca698e
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %atan2_ca698e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.wgsl
index fe62d18..26f362d 100644
--- a/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/ca698e.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan2_ca698e() {
-  var res : f16 = atan2(f16(), f16());
+  var res : f16 = atan2(1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl
index bc8410c..c4f18a7 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl
@@ -25,7 +25,7 @@
 
 // fn atan2(vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn atan2_d983ab() {
-  var res: vec4<f16> = atan2(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = atan2(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.dxc.hlsl
index b7ee794..12db579 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_d983ab() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.78515625h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.glsl
index 6f6529d..0c70c90 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_d983ab() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.78515625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atan2_d983ab() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.78515625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atan2_d983ab() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.78515625hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.msl
index 227ba1f..dbd659f 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_d983ab() {
-  half4 res = half4(0.0h);
+  half4 res = half4(0.78515625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.spvasm
index d6c52b9..d0060ea 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1_92pn1 = OpConstant %half 0x1.92p-1
+         %16 = OpConstantComposite %v4half %half_0x1_92pn1 %half_0x1_92pn1 %half_0x1_92pn1 %half_0x1_92pn1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atan2_d983ab = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atan2_d983ab
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atan2_d983ab
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atan2_d983ab
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atan2_d983ab
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atan2_d983ab
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atan2_d983ab
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.wgsl
index 50719cb..29a290c 100644
--- a/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atan2/d983ab.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atan2_d983ab() {
-  var res : vec4<f16> = atan2(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = atan2(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl
index f828156..7dd84b6 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl
@@ -25,7 +25,7 @@
 
 // fn atanh(vec<2, f16>) -> vec<2, f16>
 fn atanh_5bf88d() {
-  var res: vec2<f16> = atanh(vec2<f16>(f16()));
+  var res: vec2<f16> = atanh(vec2<f16>(0.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl
index 1ab4777..f50d739 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_5bf88d() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.548828125h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl
index 17a23e6..2b14c65e 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_5bf88d() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.548828125hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atanh_5bf88d() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.548828125hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_5bf88d() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(0.548828125hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl
index eb31ae2..142f58e 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_5bf88d() {
-  half2 res = half2(0.0h);
+  half2 res = half2(0.548828125h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm
index e89e54e..3bc631f 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1_19pn1 = OpConstant %half 0x1.19p-1
+         %16 = OpConstantComposite %v2half %half_0x1_19pn1 %half_0x1_19pn1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atanh_5bf88d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atanh_5bf88d
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atanh_5bf88d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atanh_5bf88d
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atanh_5bf88d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atanh_5bf88d
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atanh_5bf88d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.wgsl
index b399e07..a4f24f6 100644
--- a/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/5bf88d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atanh_5bf88d() {
-  var res : vec2<f16> = atanh(vec2<f16>(f16()));
+  var res : vec2<f16> = atanh(vec2<f16>(0.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl
index 2fa4e3c..f3d7acd 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl
@@ -25,7 +25,7 @@
 
 // fn atanh(f16) -> f16
 fn atanh_d2d8cd() {
-  var res: f16 = atanh(f16());
+  var res: f16 = atanh(0.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl
index d4b3294..a915f4e 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_d2d8cd() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(0.548828125h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl
index 2164d93..7d40b3a 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_d2d8cd() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.548828125hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atanh_d2d8cd() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.548828125hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_d2d8cd() {
-  float16_t res = 0.0hf;
+  float16_t res = 0.548828125hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl
index 8d4995a..fecb05d 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_d2d8cd() {
-  half res = 0.0h;
+  half res = 0.548828125h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm
index 343a043..3cf767b 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1_19pn1 = OpConstant %half 0x1.19p-1
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atanh_d2d8cd = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1_19pn1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %atanh_d2d8cd
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %atanh_d2d8cd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %atanh_d2d8cd
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %atanh_d2d8cd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %atanh_d2d8cd
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %atanh_d2d8cd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.wgsl
index 7f12743..a71dd50 100644
--- a/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/d2d8cd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atanh_d2d8cd() {
-  var res : f16 = atanh(f16());
+  var res : f16 = atanh(0.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl
index 23c6e10..5cdfb19 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl
@@ -25,7 +25,7 @@
 
 // fn atanh(vec<4, f16>) -> vec<4, f16>
 fn atanh_e3b450() {
-  var res: vec4<f16> = atanh(vec4<f16>(f16()));
+  var res: vec4<f16> = atanh(vec4<f16>(0.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl
index f3ac16c..ddfc0ce 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_e3b450() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.548828125h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl
index 73f8e70..6f61acd 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_e3b450() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.548828125hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atanh_e3b450() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.548828125hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_e3b450() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(0.548828125hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl
index b659da6..585ed1c 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_e3b450() {
-  half4 res = half4(0.0h);
+  half4 res = half4(0.548828125h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm
index 64e46bd..38694bb 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1_19pn1 = OpConstant %half 0x1.19p-1
+         %16 = OpConstantComposite %v4half %half_0x1_19pn1 %half_0x1_19pn1 %half_0x1_19pn1 %half_0x1_19pn1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atanh_e3b450 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atanh_e3b450
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atanh_e3b450
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atanh_e3b450
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atanh_e3b450
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atanh_e3b450
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atanh_e3b450
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.wgsl
index d0a8577..a2b2337 100644
--- a/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/e3b450.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atanh_e3b450() {
-  var res : vec4<f16> = atanh(vec4<f16>(f16()));
+  var res : vec4<f16> = atanh(vec4<f16>(0.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl
index 708c3b3..3995aab 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl
@@ -25,7 +25,7 @@
 
 // fn atanh(vec<3, f16>) -> vec<3, f16>
 fn atanh_ec4b06() {
-  var res: vec3<f16> = atanh(vec3<f16>(f16()));
+  var res: vec3<f16> = atanh(vec3<f16>(0.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl
index fc6fa46..a7a9231 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_ec4b06() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.548828125h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl
index fc48649..a9cbf80 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_ec4b06() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.548828125hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void atanh_ec4b06() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.548828125hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void atanh_ec4b06() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(0.548828125hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl
index 1290948..5154b8c 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_ec4b06() {
-  half3 res = half3(0.0h);
+  half3 res = half3(0.548828125h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm
index 49e6e5a..9842aa3 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1_19pn1 = OpConstant %half 0x1.19p-1
+         %16 = OpConstantComposite %v3half %half_0x1_19pn1 %half_0x1_19pn1 %half_0x1_19pn1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %atanh_ec4b06 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %atanh_ec4b06
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %atanh_ec4b06
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %atanh_ec4b06
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %atanh_ec4b06
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %atanh_ec4b06
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %atanh_ec4b06
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.wgsl
index 4570d2b..26a5c3b 100644
--- a/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/atanh/ec4b06.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn atanh_ec4b06() {
-  var res : vec3<f16> = atanh(vec3<f16>(f16()));
+  var res : vec3<f16> = atanh(vec3<f16>(0.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl
index 6705f27..d7838315 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl
@@ -25,7 +25,7 @@
 
 // fn ceil(vec<3, f16>) -> vec<3, f16>
 fn ceil_09bf52() {
-  var res: vec3<f16> = ceil(vec3<f16>(f16()));
+  var res: vec3<f16> = ceil(vec3<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.dxc.hlsl
index 7bd42e4..375efff 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ceil_09bf52() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(2.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.glsl
index 48a58ee..ec5f3bc 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_09bf52() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(2.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ceil_09bf52() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(2.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_09bf52() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(2.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.msl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.msl
index 8ff7786..46a5ec3 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ceil_09bf52() {
-  half3 res = half3(0.0h);
+  half3 res = half3(2.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.spvasm
index 926482e..049a6c8 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_1 = OpConstant %half 0x1p+1
+         %16 = OpConstantComposite %v3half %half_0x1p_1 %half_0x1p_1 %half_0x1p_1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ceil_09bf52 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %ceil_09bf52
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %ceil_09bf52
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %ceil_09bf52
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %ceil_09bf52
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %ceil_09bf52
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %ceil_09bf52
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.wgsl
index 1d5fc84..7c6fe63 100644
--- a/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/09bf52.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ceil_09bf52() {
-  var res : vec3<f16> = ceil(vec3<f16>(f16()));
+  var res : vec3<f16> = ceil(vec3<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl
index 002bcdc..59ea5c4 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl
@@ -25,7 +25,7 @@
 
 // fn ceil(vec<2, f16>) -> vec<2, f16>
 fn ceil_18c240() {
-  var res: vec2<f16> = ceil(vec2<f16>(f16()));
+  var res: vec2<f16> = ceil(vec2<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.dxc.hlsl
index 7d4e24b..4b5e394 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ceil_18c240() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(2.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.glsl
index b63b07a..fca89d9 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_18c240() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(2.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ceil_18c240() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(2.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_18c240() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(2.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.msl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.msl
index 9e480ef..8881bb7 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ceil_18c240() {
-  half2 res = half2(0.0h);
+  half2 res = half2(2.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.spvasm
index 7fe9ff4..2207042 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ceil/18c240.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_1 = OpConstant %half 0x1p+1
+         %16 = OpConstantComposite %v2half %half_0x1p_1 %half_0x1p_1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ceil_18c240 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %ceil_18c240
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %ceil_18c240
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %ceil_18c240
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %ceil_18c240
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %ceil_18c240
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %ceil_18c240
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.wgsl
index dad05fe..559f2e5 100644
--- a/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/18c240.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ceil_18c240() {
-  var res : vec2<f16> = ceil(vec2<f16>(f16()));
+  var res : vec2<f16> = ceil(vec2<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl
index 0e7ce3c..6ee53d9 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl
@@ -25,7 +25,7 @@
 
 // fn ceil(vec<4, f16>) -> vec<4, f16>
 fn ceil_4bca2a() {
-  var res: vec4<f16> = ceil(vec4<f16>(f16()));
+  var res: vec4<f16> = ceil(vec4<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.dxc.hlsl
index ba26727..f7c44b6 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ceil_4bca2a() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(2.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.glsl
index ff7d3d7..221237f 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_4bca2a() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(2.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ceil_4bca2a() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(2.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_4bca2a() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(2.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.msl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.msl
index 046f92d..d870cea 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ceil_4bca2a() {
-  half4 res = half4(0.0h);
+  half4 res = half4(2.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.spvasm
index abbd917..cff6dd3 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_1 = OpConstant %half 0x1p+1
+         %16 = OpConstantComposite %v4half %half_0x1p_1 %half_0x1p_1 %half_0x1p_1 %half_0x1p_1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ceil_4bca2a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %ceil_4bca2a
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %ceil_4bca2a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %ceil_4bca2a
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %ceil_4bca2a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %ceil_4bca2a
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %ceil_4bca2a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.wgsl
index 881715f..0146378 100644
--- a/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/4bca2a.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ceil_4bca2a() {
-  var res : vec4<f16> = ceil(vec4<f16>(f16()));
+  var res : vec4<f16> = ceil(vec4<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl
index 439e88e..c494500 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl
@@ -25,7 +25,7 @@
 
 // fn ceil(f16) -> f16
 fn ceil_f3f889() {
-  var res: f16 = ceil(f16());
+  var res: f16 = ceil(1.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.dxc.hlsl
index 1dbabc6..8ffd661 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ceil_f3f889() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(2.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.glsl
index dffe515..ae674d5 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_f3f889() {
-  float16_t res = 0.0hf;
+  float16_t res = 2.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ceil_f3f889() {
-  float16_t res = 0.0hf;
+  float16_t res = 2.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ceil_f3f889() {
-  float16_t res = 0.0hf;
+  float16_t res = 2.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.msl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.msl
index 214d570..4f3948a 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ceil_f3f889() {
-  half res = 0.0h;
+  half res = 2.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.spvasm
index 2f13171..dda4872 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_1 = OpConstant %half 0x1p+1
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ceil_f3f889 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_1
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %ceil_f3f889
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %ceil_f3f889
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %ceil_f3f889
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %ceil_f3f889
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %ceil_f3f889
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %ceil_f3f889
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.wgsl
index 288d3c2..300bb86 100644
--- a/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ceil/f3f889.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ceil_f3f889() {
-  var res : f16 = ceil(f16());
+  var res : f16 = ceil(1.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl
index fcb634e..59e9629 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl
@@ -25,7 +25,7 @@
 
 // fn clamp(vec<2, f16>, vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn clamp_235b29() {
-  var res: vec2<f16> = clamp(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = clamp(vec2<f16>(1.h), vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.dxc.hlsl
index 02fc882..689753d 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_235b29() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.glsl
index 3a90e73..5ca5bcc 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_235b29() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void clamp_235b29() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_235b29() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.msl
index cd5723f..e16b9e7 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_235b29() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.spvasm
index 70a6d49..6bc8564 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/235b29.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %clamp_235b29 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %clamp_235b29
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_235b29
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_235b29
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_235b29
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_235b29
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_235b29
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.wgsl
index ba5303c..9f3cf42 100644
--- a/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/235b29.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn clamp_235b29() {
-  var res : vec2<f16> = clamp(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = clamp(vec2<f16>(1.0h), vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl
index 9c5f382..d46e307 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl
@@ -25,7 +25,7 @@
 
 // fn clamp(vec<4, f16>, vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn clamp_2c251b() {
-  var res: vec4<f16> = clamp(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = clamp(vec4<f16>(1.h), vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.dxc.hlsl
index 79e81c9..e790a46 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_2c251b() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.glsl
index e1cfbbe..3044fef 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_2c251b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void clamp_2c251b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_2c251b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.msl
index 5168d3d..a3a99b3 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_2c251b() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.spvasm
index 8c74f7d..c179c90 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %clamp_2c251b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %clamp_2c251b
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_2c251b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_2c251b
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_2c251b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_2c251b
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_2c251b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.wgsl
index 15be6c8..b7e50a0 100644
--- a/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/2c251b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn clamp_2c251b() {
-  var res : vec4<f16> = clamp(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = clamp(vec4<f16>(1.0h), vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl
index b6f3eb9..62e2d98 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl
@@ -25,7 +25,7 @@
 
 // fn clamp(f16, f16, f16) -> f16
 fn clamp_553ffb() {
-  var res: f16 = clamp(f16(), f16(), f16());
+  var res: f16 = clamp(1.h, 1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.dxc.hlsl
index 0343bfd..13664d0 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_553ffb() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.glsl
index 060c13f3..58b0e15 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_553ffb() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void clamp_553ffb() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_553ffb() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.msl
index 34e8f69..72b5e78 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_553ffb() {
-  half res = 0.0h;
+  half res = 1.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.spvasm
index c4abe0d..e36bfdb 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %clamp_553ffb = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_0
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %clamp_553ffb
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %clamp_553ffb
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %clamp_553ffb
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %clamp_553ffb
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %clamp_553ffb
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %clamp_553ffb
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.wgsl
index 48f3ab3..51e5047 100644
--- a/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/553ffb.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn clamp_553ffb() {
-  var res : f16 = clamp(f16(), f16(), f16());
+  var res : f16 = clamp(1.0h, 1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl
index f03c28a..10e7a35 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl
@@ -25,7 +25,7 @@
 
 // fn clamp(vec<3, f16>, vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn clamp_b195eb() {
-  var res: vec3<f16> = clamp(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = clamp(vec3<f16>(1.h), vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.dxc.hlsl
index c94442f..251c215 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void clamp_b195eb() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.glsl
index 500588f..887817b 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_b195eb() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void clamp_b195eb() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void clamp_b195eb() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.msl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.msl
index 58d111a..0570ea1 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void clamp_b195eb() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.spvasm
index 4beb74d..066e6d4 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %clamp_b195eb = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %clamp_b195eb
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %clamp_b195eb
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_b195eb
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %clamp_b195eb
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %clamp_b195eb
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %clamp_b195eb
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.wgsl
index bd88ab4..dc537e0 100644
--- a/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/clamp/b195eb.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn clamp_b195eb() {
-  var res : vec3<f16> = clamp(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = clamp(vec3<f16>(1.0h), vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl
index 07bd888..658ff3f 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl
@@ -25,7 +25,7 @@
 
 // fn cos(vec<3, f16>) -> vec<3, f16>
 fn cos_0835a8() {
-  var res: vec3<f16> = cos(vec3<f16>(f16()));
+  var res: vec3<f16> = cos(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.dxc.hlsl
index ef1328a..41ab048 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cos_0835a8() {
-  vector<float16_t, 3> res = cos((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = cos((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.glsl
index f8f69c4..50495bb 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_0835a8() {
-  f16vec3 res = cos(f16vec3(0.0hf));
+  f16vec3 res = cos(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cos_0835a8() {
-  f16vec3 res = cos(f16vec3(0.0hf));
+  f16vec3 res = cos(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_0835a8() {
-  f16vec3 res = cos(f16vec3(0.0hf));
+  f16vec3 res = cos(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.msl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.msl
index 790a32d..3f5c8a1 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cos_0835a8() {
-  half3 res = cos(half3(0.0h));
+  half3 res = cos(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.spvasm
index d151e5c..1ea6d26 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %cos_0835a8 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Cos %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Cos %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %cos_0835a8
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %cos_0835a8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %cos_0835a8
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %cos_0835a8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %cos_0835a8
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %cos_0835a8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.wgsl
index 94f028a..6ef5216 100644
--- a/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/0835a8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cos_0835a8() {
-  var res : vec3<f16> = cos(vec3<f16>(f16()));
+  var res : vec3<f16> = cos(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl
index 6bcbb87..661ceb1 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl
@@ -25,7 +25,7 @@
 
 // fn cos(vec<4, f16>) -> vec<4, f16>
 fn cos_0a89f7() {
-  var res: vec4<f16> = cos(vec4<f16>(f16()));
+  var res: vec4<f16> = cos(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.dxc.hlsl
index 2a00fd0..65a7dc4 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cos_0a89f7() {
-  vector<float16_t, 4> res = cos((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = cos((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.glsl
index 9daaaff..acc0222 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_0a89f7() {
-  f16vec4 res = cos(f16vec4(0.0hf));
+  f16vec4 res = cos(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cos_0a89f7() {
-  f16vec4 res = cos(f16vec4(0.0hf));
+  f16vec4 res = cos(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_0a89f7() {
-  f16vec4 res = cos(f16vec4(0.0hf));
+  f16vec4 res = cos(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.msl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.msl
index fe465ac..d8c7d24 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cos_0a89f7() {
-  half4 res = cos(half4(0.0h));
+  half4 res = cos(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.spvasm
index 5f96623..0f37534 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %cos_0a89f7 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Cos %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Cos %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %cos_0a89f7
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %cos_0a89f7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %cos_0a89f7
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %cos_0a89f7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %cos_0a89f7
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %cos_0a89f7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.wgsl
index 536f85f..2617a7f 100644
--- a/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/0a89f7.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cos_0a89f7() {
-  var res : vec4<f16> = cos(vec4<f16>(f16()));
+  var res : vec4<f16> = cos(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl
index c233d3c..5bb51fa 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl
@@ -25,7 +25,7 @@
 
 // fn cos(vec<2, f16>) -> vec<2, f16>
 fn cos_5bc2c6() {
-  var res: vec2<f16> = cos(vec2<f16>(f16()));
+  var res: vec2<f16> = cos(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.dxc.hlsl
index a27a229..2bf3bea 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cos_5bc2c6() {
-  vector<float16_t, 2> res = cos((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = cos((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.glsl
index 6da1c94..e0f5f47 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_5bc2c6() {
-  f16vec2 res = cos(f16vec2(0.0hf));
+  f16vec2 res = cos(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cos_5bc2c6() {
-  f16vec2 res = cos(f16vec2(0.0hf));
+  f16vec2 res = cos(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_5bc2c6() {
-  f16vec2 res = cos(f16vec2(0.0hf));
+  f16vec2 res = cos(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.msl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.msl
index 91434e1..96d7029 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cos_5bc2c6() {
-  half2 res = cos(half2(0.0h));
+  half2 res = cos(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.spvasm
index 278c3e1..3ad7b96 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %cos_5bc2c6 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Cos %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Cos %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %cos_5bc2c6
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %cos_5bc2c6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %cos_5bc2c6
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %cos_5bc2c6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %cos_5bc2c6
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %cos_5bc2c6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.wgsl
index 2010e95..fc78f88 100644
--- a/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/5bc2c6.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cos_5bc2c6() {
-  var res : vec2<f16> = cos(vec2<f16>(f16()));
+  var res : vec2<f16> = cos(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl
index 630e2fd..d1adddb 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl
@@ -25,7 +25,7 @@
 
 // fn cos(f16) -> f16
 fn cos_fc047d() {
-  var res: f16 = cos(f16());
+  var res: f16 = cos(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.dxc.hlsl
index f240327..7064a16 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cos_fc047d() {
-  float16_t res = cos(float16_t(0.0h));
+  float16_t res = cos(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.glsl
index 01af81d..83be5ac 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_fc047d() {
-  float16_t res = cos(0.0hf);
+  float16_t res = cos(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cos_fc047d() {
-  float16_t res = cos(0.0hf);
+  float16_t res = cos(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cos_fc047d() {
-  float16_t res = cos(0.0hf);
+  float16_t res = cos(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.msl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.msl
index e38b8e9..e2a8560 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cos_fc047d() {
-  half res = cos(0.0h);
+  half res = cos(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.spvasm
index d4c73fe..7ddb415 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %cos_fc047d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Cos %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Cos %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %cos_fc047d
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %cos_fc047d
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %cos_fc047d
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %cos_fc047d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %cos_fc047d
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %cos_fc047d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.wgsl
index 5671f4c..390ba27 100644
--- a/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cos/fc047d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cos_fc047d() {
-  var res : f16 = cos(f16());
+  var res : f16 = cos(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl
index a8fcdf8..661f836 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl
@@ -25,7 +25,7 @@
 
 // fn cosh(f16) -> f16
 fn cosh_2ed778() {
-  var res: f16 = cosh(f16());
+  var res: f16 = cosh(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.dxc.hlsl
index f032f20..7ad4887 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cosh_2ed778() {
-  float16_t res = cosh(float16_t(0.0h));
+  float16_t res = cosh(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.glsl
index 798c9bc..976d952 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_2ed778() {
-  float16_t res = cosh(0.0hf);
+  float16_t res = cosh(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cosh_2ed778() {
-  float16_t res = cosh(0.0hf);
+  float16_t res = cosh(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_2ed778() {
-  float16_t res = cosh(0.0hf);
+  float16_t res = cosh(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.msl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.msl
index 5fa15c3..32e7d12 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cosh_2ed778() {
-  half res = cosh(0.0h);
+  half res = cosh(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.spvasm
index bba06a4..1495e9f 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %cosh_2ed778 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Cosh %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Cosh %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %cosh_2ed778
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %cosh_2ed778
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %cosh_2ed778
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %cosh_2ed778
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %cosh_2ed778
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %cosh_2ed778
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.wgsl
index 00b8f27..c710cf7 100644
--- a/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/2ed778.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cosh_2ed778() {
-  var res : f16 = cosh(f16());
+  var res : f16 = cosh(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl
index d1e959a..d42f4b2 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl
@@ -25,7 +25,7 @@
 
 // fn cosh(vec<4, f16>) -> vec<4, f16>
 fn cosh_3b7bbf() {
-  var res: vec4<f16> = cosh(vec4<f16>(f16()));
+  var res: vec4<f16> = cosh(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.dxc.hlsl
index ede2f1a..384a1ed 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cosh_3b7bbf() {
-  vector<float16_t, 4> res = cosh((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = cosh((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.glsl
index 73e0dc9..d3f5e3f 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_3b7bbf() {
-  f16vec4 res = cosh(f16vec4(0.0hf));
+  f16vec4 res = cosh(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cosh_3b7bbf() {
-  f16vec4 res = cosh(f16vec4(0.0hf));
+  f16vec4 res = cosh(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_3b7bbf() {
-  f16vec4 res = cosh(f16vec4(0.0hf));
+  f16vec4 res = cosh(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.msl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.msl
index c0d6580..84b1af2 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cosh_3b7bbf() {
-  half4 res = cosh(half4(0.0h));
+  half4 res = cosh(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.spvasm
index da245fd..fce9ada 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %cosh_3b7bbf = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Cosh %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Cosh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %cosh_3b7bbf
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %cosh_3b7bbf
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %cosh_3b7bbf
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %cosh_3b7bbf
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %cosh_3b7bbf
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %cosh_3b7bbf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.wgsl
index 09eaede..37fbc91 100644
--- a/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/3b7bbf.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cosh_3b7bbf() {
-  var res : vec4<f16> = cosh(vec4<f16>(f16()));
+  var res : vec4<f16> = cosh(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl
index a3d5505..059f9f1 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl
@@ -25,7 +25,7 @@
 
 // fn cosh(vec<2, f16>) -> vec<2, f16>
 fn cosh_43b672() {
-  var res: vec2<f16> = cosh(vec2<f16>(f16()));
+  var res: vec2<f16> = cosh(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.dxc.hlsl
index 8b54430..6034f72 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cosh_43b672() {
-  vector<float16_t, 2> res = cosh((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = cosh((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.glsl
index 8b04b98..ef9046b 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_43b672() {
-  f16vec2 res = cosh(f16vec2(0.0hf));
+  f16vec2 res = cosh(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cosh_43b672() {
-  f16vec2 res = cosh(f16vec2(0.0hf));
+  f16vec2 res = cosh(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_43b672() {
-  f16vec2 res = cosh(f16vec2(0.0hf));
+  f16vec2 res = cosh(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.msl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.msl
index 697c079..9c17ff6 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cosh_43b672() {
-  half2 res = cosh(half2(0.0h));
+  half2 res = cosh(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.spvasm
index 76983ac..2fda139 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %cosh_43b672 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Cosh %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Cosh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %cosh_43b672
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %cosh_43b672
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %cosh_43b672
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %cosh_43b672
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %cosh_43b672
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %cosh_43b672
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.wgsl
index 6646f2d..6b59019 100644
--- a/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/43b672.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cosh_43b672() {
-  var res : vec2<f16> = cosh(vec2<f16>(f16()));
+  var res : vec2<f16> = cosh(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl
index 99a4004..69df244 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl
@@ -25,7 +25,7 @@
 
 // fn cosh(vec<3, f16>) -> vec<3, f16>
 fn cosh_b1b8a0() {
-  var res: vec3<f16> = cosh(vec3<f16>(f16()));
+  var res: vec3<f16> = cosh(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.dxc.hlsl
index 5be4cfe..718e0ea 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void cosh_b1b8a0() {
-  vector<float16_t, 3> res = cosh((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = cosh((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.glsl
index 995b0d7..9b5a615 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_b1b8a0() {
-  f16vec3 res = cosh(f16vec3(0.0hf));
+  f16vec3 res = cosh(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void cosh_b1b8a0() {
-  f16vec3 res = cosh(f16vec3(0.0hf));
+  f16vec3 res = cosh(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void cosh_b1b8a0() {
-  f16vec3 res = cosh(f16vec3(0.0hf));
+  f16vec3 res = cosh(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.msl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.msl
index b426dbb..0bf6143 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void cosh_b1b8a0() {
-  half3 res = cosh(half3(0.0h));
+  half3 res = cosh(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.spvasm
index 9a5a566..e3491c5 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %cosh_b1b8a0 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Cosh %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Cosh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %cosh_b1b8a0
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %cosh_b1b8a0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %cosh_b1b8a0
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %cosh_b1b8a0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %cosh_b1b8a0
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %cosh_b1b8a0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.wgsl
index bf06df5..d814107 100644
--- a/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cosh/b1b8a0.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cosh_b1b8a0() {
-  var res : vec3<f16> = cosh(vec3<f16>(f16()));
+  var res : vec3<f16> = cosh(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cross/9857cb.wgsl b/test/tint/builtins/gen/literal/cross/9857cb.wgsl
index aaae266..fffed92 100644
--- a/test/tint/builtins/gen/literal/cross/9857cb.wgsl
+++ b/test/tint/builtins/gen/literal/cross/9857cb.wgsl
@@ -25,7 +25,7 @@
 
 // fn cross(vec3<f16>, vec3<f16>) -> vec3<f16>
 fn cross_9857cb() {
-  var res: vec3<f16> = cross(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = cross(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.wgsl
index f991031..04296c9 100644
--- a/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/cross/9857cb.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn cross_9857cb() {
-  var res : vec3<f16> = cross(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = cross(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl
index f749565..1a55b08 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl
@@ -25,7 +25,7 @@
 
 // fn degrees(vec<4, f16>) -> vec<4, f16>
 fn degrees_3055d3() {
-  var res: vec4<f16> = degrees(vec4<f16>(f16()));
+  var res: vec4<f16> = degrees(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.dxc.hlsl
index 196bdf5..ff572fd 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void degrees_3055d3() {
-  vector<float16_t, 4> res = tint_degrees((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = tint_degrees((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.glsl
index a9e5f5d..b9788e1 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void degrees_3055d3() {
-  f16vec4 res = tint_degrees(f16vec4(0.0hf));
+  f16vec4 res = tint_degrees(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void degrees_3055d3() {
-  f16vec4 res = tint_degrees(f16vec4(0.0hf));
+  f16vec4 res = tint_degrees(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void degrees_3055d3() {
-  f16vec4 res = tint_degrees(f16vec4(0.0hf));
+  f16vec4 res = tint_degrees(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.msl
index 2075cbd..e9fe3c7 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void degrees_3055d3() {
-  half4 res = tint_degrees(half4(0.0h));
+  half4 res = tint_degrees(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.spvasm
index 2d68e4e..171e19c 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %degrees_3055d3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Degrees %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Degrees %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %degrees_3055d3
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %degrees_3055d3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %degrees_3055d3
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %degrees_3055d3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %degrees_3055d3
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %degrees_3055d3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.wgsl
index 58d6ef5..e58a8a0 100644
--- a/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/3055d3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn degrees_3055d3() {
-  var res : vec4<f16> = degrees(vec4<f16>(f16()));
+  var res : vec4<f16> = degrees(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl
index cdd9a50..e1e9537 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl
@@ -25,7 +25,7 @@
 
 // fn degrees(f16) -> f16
 fn degrees_5e9805() {
-  var res: f16 = degrees(f16());
+  var res: f16 = degrees(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.dxc.hlsl
index 209c5b4..930472f 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void degrees_5e9805() {
-  float16_t res = tint_degrees(float16_t(0.0h));
+  float16_t res = tint_degrees(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.glsl
index 1a87241..3042f4c 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void degrees_5e9805() {
-  float16_t res = tint_degrees(0.0hf);
+  float16_t res = tint_degrees(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void degrees_5e9805() {
-  float16_t res = tint_degrees(0.0hf);
+  float16_t res = tint_degrees(1.0hf);
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void degrees_5e9805() {
-  float16_t res = tint_degrees(0.0hf);
+  float16_t res = tint_degrees(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.msl
index 1aacda2..280c0bc 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void degrees_5e9805() {
-  half res = tint_degrees(0.0h);
+  half res = tint_degrees(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.spvasm
index 028d4a8..9a33ca6 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %degrees_5e9805 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Degrees %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Degrees %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %degrees_5e9805
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %degrees_5e9805
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %degrees_5e9805
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %degrees_5e9805
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %degrees_5e9805
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %degrees_5e9805
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.wgsl
index 647c580..4056d0b 100644
--- a/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/5e9805.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn degrees_5e9805() {
-  var res : f16 = degrees(f16());
+  var res : f16 = degrees(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl
index c30a280..6ab63b2 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl
@@ -25,7 +25,7 @@
 
 // fn degrees(vec<3, f16>) -> vec<3, f16>
 fn degrees_dfe8f4() {
-  var res: vec3<f16> = degrees(vec3<f16>(f16()));
+  var res: vec3<f16> = degrees(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.dxc.hlsl
index 0dd63bf..b54ef76 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void degrees_dfe8f4() {
-  vector<float16_t, 3> res = tint_degrees((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = tint_degrees((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.glsl
index 59962ab..576497a 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void degrees_dfe8f4() {
-  f16vec3 res = tint_degrees(f16vec3(0.0hf));
+  f16vec3 res = tint_degrees(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void degrees_dfe8f4() {
-  f16vec3 res = tint_degrees(f16vec3(0.0hf));
+  f16vec3 res = tint_degrees(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void degrees_dfe8f4() {
-  f16vec3 res = tint_degrees(f16vec3(0.0hf));
+  f16vec3 res = tint_degrees(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.msl
index f6ef443..419df21 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void degrees_dfe8f4() {
-  half3 res = tint_degrees(half3(0.0h));
+  half3 res = tint_degrees(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.spvasm
index fb059e8..ca76456 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %degrees_dfe8f4 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Degrees %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Degrees %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %degrees_dfe8f4
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %degrees_dfe8f4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %degrees_dfe8f4
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %degrees_dfe8f4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %degrees_dfe8f4
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %degrees_dfe8f4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.wgsl
index 3d2cd7a..885b2b9 100644
--- a/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/dfe8f4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn degrees_dfe8f4() {
-  var res : vec3<f16> = degrees(vec3<f16>(f16()));
+  var res : vec3<f16> = degrees(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl
index 7cfc4a2..4c5bb05 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl
@@ -25,7 +25,7 @@
 
 // fn degrees(vec<2, f16>) -> vec<2, f16>
 fn degrees_f59715() {
-  var res: vec2<f16> = degrees(vec2<f16>(f16()));
+  var res: vec2<f16> = degrees(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.dxc.hlsl
index 8aac00f..68de11a 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void degrees_f59715() {
-  vector<float16_t, 2> res = tint_degrees((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = tint_degrees((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.glsl
index 99ed077..7a7c686 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void degrees_f59715() {
-  f16vec2 res = tint_degrees(f16vec2(0.0hf));
+  f16vec2 res = tint_degrees(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void degrees_f59715() {
-  f16vec2 res = tint_degrees(f16vec2(0.0hf));
+  f16vec2 res = tint_degrees(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void degrees_f59715() {
-  f16vec2 res = tint_degrees(f16vec2(0.0hf));
+  f16vec2 res = tint_degrees(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.msl
index 2c09325..af8aa30 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void degrees_f59715() {
-  half2 res = tint_degrees(half2(0.0h));
+  half2 res = tint_degrees(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.spvasm
index d9b7fb5..ca83372 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %degrees_f59715 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Degrees %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Degrees %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %degrees_f59715
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %degrees_f59715
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %degrees_f59715
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %degrees_f59715
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %degrees_f59715
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %degrees_f59715
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.wgsl
index b3b6057..0971312 100644
--- a/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/degrees/f59715.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn degrees_f59715() {
-  var res : vec2<f16> = degrees(vec2<f16>(f16()));
+  var res : vec2<f16> = degrees(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl
index 9ff80ce..0add05e 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl
@@ -25,7 +25,7 @@
 
 // fn determinant(mat<4, 4, f16>) -> f16
 fn determinant_32bfde() {
-  var res: f16 = determinant(mat4x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: f16 = determinant(mat4x4<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.dxc.hlsl
index 123af60..bae350d 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void determinant_32bfde() {
-  float16_t res = determinant(matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx));
+  float16_t res = determinant(matrix<float16_t, 4, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.glsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.glsl
index 32fc171..f94a854 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void determinant_32bfde() {
-  float16_t res = determinant(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  float16_t res = determinant(f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void determinant_32bfde() {
-  float16_t res = determinant(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  float16_t res = determinant(f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void determinant_32bfde() {
-  float16_t res = determinant(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  float16_t res = determinant(f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.msl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.msl
index 0f0a75d..f416fbf 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void determinant_32bfde() {
-  half res = determinant(half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h)));
+  half res = determinant(half4x4(half4(1.0h), half4(1.0h), half4(1.0h), half4(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.spvasm
index c3e9627..ffe5e4d 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -38,37 +38,39 @@
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
  %mat4v4half = OpTypeMatrix %v4half 4
-         %18 = OpConstantNull %mat4v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %19 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %20 = OpConstantComposite %mat4v4half %19 %19 %19 %19
 %_ptr_Function_half = OpTypePointer Function %half
-         %21 = OpConstantNull %half
-         %22 = OpTypeFunction %v4float
+         %23 = OpConstantNull %half
+         %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %determinant_32bfde = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %21
-         %13 = OpExtInst %half %15 Determinant %18
+        %res = OpVariable %_ptr_Function_half Function %23
+         %13 = OpExtInst %half %15 Determinant %20
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %22
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %determinant_32bfde
+%vertex_main_inner = OpFunction %v4float None %24
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %determinant_32bfde
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %28
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %30
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %determinant_32bfde
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %determinant_32bfde
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %determinant_32bfde
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %determinant_32bfde
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.wgsl
index 5d3cce9..237cc23 100644
--- a/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/32bfde.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn determinant_32bfde() {
-  var res : f16 = determinant(mat4x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : f16 = determinant(mat4x4<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl
index bb81d5b..5154ef7 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl
@@ -25,7 +25,7 @@
 
 // fn determinant(mat<3, 3, f16>) -> f16
 fn determinant_d7c86f() {
-  var res: f16 = determinant(mat3x3<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: f16 = determinant(mat3x3<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.dxc.hlsl
index 4971b2e..083d524 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void determinant_d7c86f() {
-  float16_t res = determinant(matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx));
+  float16_t res = determinant(matrix<float16_t, 3, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.glsl
index 13f877c..064604c 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void determinant_d7c86f() {
-  float16_t res = determinant(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  float16_t res = determinant(f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void determinant_d7c86f() {
-  float16_t res = determinant(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  float16_t res = determinant(f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void determinant_d7c86f() {
-  float16_t res = determinant(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  float16_t res = determinant(f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.msl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.msl
index cfb43b5..17c01fb 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void determinant_d7c86f() {
-  half res = determinant(half3x3(half3(0.0h), half3(0.0h), half3(0.0h)));
+  half res = determinant(half3x3(half3(1.0h), half3(1.0h), half3(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.spvasm
index e3ed5cc..c4cb0a3 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -38,37 +38,39 @@
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
  %mat3v3half = OpTypeMatrix %v3half 3
-         %18 = OpConstantNull %mat3v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %19 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %20 = OpConstantComposite %mat3v3half %19 %19 %19
 %_ptr_Function_half = OpTypePointer Function %half
-         %21 = OpConstantNull %half
-         %22 = OpTypeFunction %v4float
+         %23 = OpConstantNull %half
+         %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %determinant_d7c86f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %21
-         %13 = OpExtInst %half %15 Determinant %18
+        %res = OpVariable %_ptr_Function_half Function %23
+         %13 = OpExtInst %half %15 Determinant %20
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %22
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %determinant_d7c86f
+%vertex_main_inner = OpFunction %v4float None %24
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %determinant_d7c86f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %28
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %30
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %determinant_d7c86f
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %determinant_d7c86f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %determinant_d7c86f
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %determinant_d7c86f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.wgsl
index 2623778..d578f32 100644
--- a/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/d7c86f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn determinant_d7c86f() {
-  var res : f16 = determinant(mat3x3<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : f16 = determinant(mat3x3<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl
index 2b22f37..2741b6d 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl
@@ -25,7 +25,7 @@
 
 // fn determinant(mat<2, 2, f16>) -> f16
 fn determinant_fc12a5() {
-  var res: f16 = determinant(mat2x2<f16>(f16(), f16(), f16(), f16()));
+  var res: f16 = determinant(mat2x2<f16>(1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.dxc.hlsl
index f1f2a23..698a14c 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void determinant_fc12a5() {
-  float16_t res = determinant(matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx));
+  float16_t res = determinant(matrix<float16_t, 2, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.glsl
index 5239eec..b647997 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void determinant_fc12a5() {
-  float16_t res = determinant(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)));
+  float16_t res = determinant(f16mat2(f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void determinant_fc12a5() {
-  float16_t res = determinant(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)));
+  float16_t res = determinant(f16mat2(f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void determinant_fc12a5() {
-  float16_t res = determinant(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)));
+  float16_t res = determinant(f16mat2(f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.msl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.msl
index ef6ccaf..a639c13 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void determinant_fc12a5() {
-  half res = determinant(half2x2(half2(0.0h), half2(0.0h)));
+  half res = determinant(half2x2(half2(1.0h), half2(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.spvasm
index 7725163..2854245 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -38,37 +38,39 @@
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
  %mat2v2half = OpTypeMatrix %v2half 2
-         %18 = OpConstantNull %mat2v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %19 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
+         %20 = OpConstantComposite %mat2v2half %19 %19
 %_ptr_Function_half = OpTypePointer Function %half
-         %21 = OpConstantNull %half
-         %22 = OpTypeFunction %v4float
+         %23 = OpConstantNull %half
+         %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %determinant_fc12a5 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %21
-         %13 = OpExtInst %half %15 Determinant %18
+        %res = OpVariable %_ptr_Function_half Function %23
+         %13 = OpExtInst %half %15 Determinant %20
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %22
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %determinant_fc12a5
+%vertex_main_inner = OpFunction %v4float None %24
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %determinant_fc12a5
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %28
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %30
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %determinant_fc12a5
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %determinant_fc12a5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %determinant_fc12a5
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %determinant_fc12a5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.wgsl
index 0a10d8e..2a13c30 100644
--- a/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/determinant/fc12a5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn determinant_fc12a5() {
-  var res : f16 = determinant(mat2x2<f16>(f16(), f16(), f16(), f16()));
+  var res : f16 = determinant(mat2x2<f16>(1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl
index 1752332..78785ef 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl
@@ -25,7 +25,7 @@
 
 // fn distance(vec<4, f16>, vec<4, f16>) -> f16
 fn distance_7272f3() {
-  var res: f16 = distance(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: f16 = distance(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.dxc.hlsl
index 4e34e08..43150f3 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void distance_7272f3() {
-  float16_t res = distance((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  float16_t res = distance((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.glsl
index 3ecf59a..def5558 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_7272f3() {
-  float16_t res = distance(f16vec4(0.0hf), f16vec4(0.0hf));
+  float16_t res = distance(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void distance_7272f3() {
-  float16_t res = distance(f16vec4(0.0hf), f16vec4(0.0hf));
+  float16_t res = distance(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_7272f3() {
-  float16_t res = distance(f16vec4(0.0hf), f16vec4(0.0hf));
+  float16_t res = distance(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.msl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.msl
index 87c9be8..881f168 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void distance_7272f3() {
-  half res = distance(half4(0.0h), half4(0.0h));
+  half res = distance(half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.spvasm
index 491038e..508e80c 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %20 = OpConstantNull %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %distance_7272f3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %20
-         %13 = OpExtInst %half %15 Distance %17 %17
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Distance %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %distance_7272f3
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %distance_7272f3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %distance_7272f3
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %distance_7272f3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %distance_7272f3
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %distance_7272f3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.wgsl
index 5472c32..22004c9 100644
--- a/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/7272f3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn distance_7272f3() {
-  var res : f16 = distance(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : f16 = distance(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl
index a03bad7..4a27b52 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl
@@ -25,7 +25,7 @@
 
 // fn distance(f16, f16) -> f16
 fn distance_7d201f() {
-  var res: f16 = distance(f16(), f16());
+  var res: f16 = distance(1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.dxc.hlsl
index 10efc6d..d8b616f 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void distance_7d201f() {
-  float16_t res = distance(float16_t(0.0h), float16_t(0.0h));
+  float16_t res = distance(float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.glsl
index 30aee9f..00663ec 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_7d201f() {
-  float16_t res = distance(0.0hf, 0.0hf);
+  float16_t res = distance(1.0hf, 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void distance_7d201f() {
-  float16_t res = distance(0.0hf, 0.0hf);
+  float16_t res = distance(1.0hf, 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_7d201f() {
-  float16_t res = distance(0.0hf, 0.0hf);
+  float16_t res = distance(1.0hf, 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.msl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.msl
index e7baa97..fc5149e 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void distance_7d201f() {
-  half res = fabs(0.0h - 0.0h);
+  half res = fabs(1.0h - 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.spvasm
index 8a0a548..e5a3ac2 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %distance_7d201f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Distance %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Distance %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %distance_7d201f
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %distance_7d201f
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %distance_7d201f
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %distance_7d201f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %distance_7d201f
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %distance_7d201f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.wgsl
index 8de3851..c664ae0 100644
--- a/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/7d201f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn distance_7d201f() {
-  var res : f16 = distance(f16(), f16());
+  var res : f16 = distance(1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl
index affa3a3..502dfaa 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl
@@ -25,7 +25,7 @@
 
 // fn distance(vec<2, f16>, vec<2, f16>) -> f16
 fn distance_892a5d() {
-  var res: f16 = distance(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: f16 = distance(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.dxc.hlsl
index d35b147..ade1134 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void distance_892a5d() {
-  float16_t res = distance((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  float16_t res = distance((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.glsl
index 6c6b752..903ffc5 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_892a5d() {
-  float16_t res = distance(f16vec2(0.0hf), f16vec2(0.0hf));
+  float16_t res = distance(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void distance_892a5d() {
-  float16_t res = distance(f16vec2(0.0hf), f16vec2(0.0hf));
+  float16_t res = distance(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_892a5d() {
-  float16_t res = distance(f16vec2(0.0hf), f16vec2(0.0hf));
+  float16_t res = distance(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.msl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.msl
index 8977f67..627969b 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void distance_892a5d() {
-  half res = distance(half2(0.0h), half2(0.0h));
+  half res = distance(half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.spvasm
index 8f00450..4ddc326 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %20 = OpConstantNull %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %distance_892a5d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %20
-         %13 = OpExtInst %half %15 Distance %17 %17
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Distance %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %distance_892a5d
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %distance_892a5d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %distance_892a5d
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %distance_892a5d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %distance_892a5d
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %distance_892a5d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.wgsl
index 71ed2d0..53390b3 100644
--- a/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/892a5d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn distance_892a5d() {
-  var res : f16 = distance(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : f16 = distance(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl
index 80353c8..5d5a2d2 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl
@@ -25,7 +25,7 @@
 
 // fn distance(vec<3, f16>, vec<3, f16>) -> f16
 fn distance_928fa0() {
-  var res: f16 = distance(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: f16 = distance(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.dxc.hlsl
index c21d144..852e284 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void distance_928fa0() {
-  float16_t res = distance((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  float16_t res = distance((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.glsl
index c68cb10..30f8cf3 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_928fa0() {
-  float16_t res = distance(f16vec3(0.0hf), f16vec3(0.0hf));
+  float16_t res = distance(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void distance_928fa0() {
-  float16_t res = distance(f16vec3(0.0hf), f16vec3(0.0hf));
+  float16_t res = distance(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void distance_928fa0() {
-  float16_t res = distance(f16vec3(0.0hf), f16vec3(0.0hf));
+  float16_t res = distance(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.msl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.msl
index 0e034ab..9c928e6 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void distance_928fa0() {
-  half res = distance(half3(0.0h), half3(0.0h));
+  half res = distance(half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.spvasm
index 63605ca..d272d09 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %20 = OpConstantNull %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %distance_928fa0 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %20
-         %13 = OpExtInst %half %15 Distance %17 %17
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Distance %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %distance_928fa0
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %distance_928fa0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %distance_928fa0
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %distance_928fa0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %distance_928fa0
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %distance_928fa0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.wgsl
index 81c6451..3a283dd 100644
--- a/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/distance/928fa0.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn distance_928fa0() {
-  var res : f16 = distance(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : f16 = distance(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl
index 84f71c0..52cd299 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl
@@ -25,7 +25,7 @@
 
 // fn dot(vec<3, f16>, vec<3, f16>) -> f16
 fn dot_8e40f1() {
-  var res: f16 = dot(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: f16 = dot(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.dxc.hlsl
index 6e108ce..45e55de 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void dot_8e40f1() {
-  float16_t res = dot((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  float16_t res = dot((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.glsl
index 4342194..069a38d 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void dot_8e40f1() {
-  float16_t res = dot(f16vec3(0.0hf), f16vec3(0.0hf));
+  float16_t res = dot(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void dot_8e40f1() {
-  float16_t res = dot(f16vec3(0.0hf), f16vec3(0.0hf));
+  float16_t res = dot(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void dot_8e40f1() {
-  float16_t res = dot(f16vec3(0.0hf), f16vec3(0.0hf));
+  float16_t res = dot(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.msl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.msl
index 1c34dc5..9299636 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dot_8e40f1() {
-  half res = dot(half3(0.0h), half3(0.0h));
+  half res = dot(half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.spvasm
index 7fc21ec..005fa5a 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,37 +36,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %16 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %17 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpConstantNull %half
-         %20 = OpTypeFunction %v4float
+         %20 = OpConstantNull %half
+         %21 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %dot_8e40f1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %19
-         %13 = OpDot %half %16 %16
+        %res = OpVariable %_ptr_Function_half Function %20
+         %13 = OpDot %half %17 %17
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %dot_8e40f1
+%vertex_main_inner = OpFunction %v4float None %21
+         %23 = OpLabel
+         %24 = OpFunctionCall %void %dot_8e40f1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %26 = OpLabel
+         %27 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %27
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %dot_8e40f1
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %dot_8e40f1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %dot_8e40f1
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %dot_8e40f1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.wgsl
index 5b8c1a6..609ecd0 100644
--- a/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/8e40f1.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn dot_8e40f1() {
-  var res : f16 = dot(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : f16 = dot(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl
index e300f31..0846182 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl
@@ -25,7 +25,7 @@
 
 // fn dot(vec<2, f16>, vec<2, f16>) -> f16
 fn dot_cd5a04() {
-  var res: f16 = dot(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: f16 = dot(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.dxc.hlsl
index 04adad0..75f9749 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void dot_cd5a04() {
-  float16_t res = dot((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  float16_t res = dot((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.glsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.glsl
index c14d0ae..e49873a 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void dot_cd5a04() {
-  float16_t res = dot(f16vec2(0.0hf), f16vec2(0.0hf));
+  float16_t res = dot(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void dot_cd5a04() {
-  float16_t res = dot(f16vec2(0.0hf), f16vec2(0.0hf));
+  float16_t res = dot(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void dot_cd5a04() {
-  float16_t res = dot(f16vec2(0.0hf), f16vec2(0.0hf));
+  float16_t res = dot(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.msl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.msl
index 243b15a..01e7562 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dot_cd5a04() {
-  half res = dot(half2(0.0h), half2(0.0h));
+  half res = dot(half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.spvasm
index 7fbae98..0d140a4 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,37 +36,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %16 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %17 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpConstantNull %half
-         %20 = OpTypeFunction %v4float
+         %20 = OpConstantNull %half
+         %21 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %dot_cd5a04 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %19
-         %13 = OpDot %half %16 %16
+        %res = OpVariable %_ptr_Function_half Function %20
+         %13 = OpDot %half %17 %17
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %dot_cd5a04
+%vertex_main_inner = OpFunction %v4float None %21
+         %23 = OpLabel
+         %24 = OpFunctionCall %void %dot_cd5a04
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %26 = OpLabel
+         %27 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %27
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %dot_cd5a04
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %dot_cd5a04
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %dot_cd5a04
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %dot_cd5a04
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.wgsl
index 25778c7..3547523 100644
--- a/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/cd5a04.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn dot_cd5a04() {
-  var res : f16 = dot(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : f16 = dot(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl
index 39d1e51..2b47d38 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl
@@ -25,7 +25,7 @@
 
 // fn dot(vec<4, f16>, vec<4, f16>) -> f16
 fn dot_d0d179() {
-  var res: f16 = dot(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: f16 = dot(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.dxc.hlsl
index f05dcec..fd31033 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void dot_d0d179() {
-  float16_t res = dot((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  float16_t res = dot((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.glsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.glsl
index 90dbe8a..c48a12d 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void dot_d0d179() {
-  float16_t res = dot(f16vec4(0.0hf), f16vec4(0.0hf));
+  float16_t res = dot(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void dot_d0d179() {
-  float16_t res = dot(f16vec4(0.0hf), f16vec4(0.0hf));
+  float16_t res = dot(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void dot_d0d179() {
-  float16_t res = dot(f16vec4(0.0hf), f16vec4(0.0hf));
+  float16_t res = dot(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.msl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.msl
index becad5b..1110c66 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void dot_d0d179() {
-  half res = dot(half4(0.0h), half4(0.0h));
+  half res = dot(half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.spvasm
index 379f023..b465609 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 35
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,37 +36,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %16 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %17 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpConstantNull %half
-         %20 = OpTypeFunction %v4float
+         %20 = OpConstantNull %half
+         %21 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %dot_d0d179 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %19
-         %13 = OpDot %half %16 %16
+        %res = OpVariable %_ptr_Function_half Function %20
+         %13 = OpDot %half %17 %17
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %dot_d0d179
+%vertex_main_inner = OpFunction %v4float None %21
+         %23 = OpLabel
+         %24 = OpFunctionCall %void %dot_d0d179
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %26 = OpLabel
+         %27 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %27
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %dot_d0d179
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %dot_d0d179
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %dot_d0d179
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %dot_d0d179
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.wgsl
index 7e94f8b..17c0bba 100644
--- a/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/dot/d0d179.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn dot_d0d179() {
-  var res : f16 = dot(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : f16 = dot(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl
index 04d8cc6..ae8492e 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp(vec<3, f16>) -> vec<3, f16>
 fn exp_13806d() {
-  var res: vec3<f16> = exp(vec3<f16>(f16()));
+  var res: vec3<f16> = exp(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.dxc.hlsl
index 6d8ae98..8a2a30a 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_13806d() {
-  vector<float16_t, 3> res = exp((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = exp((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.glsl
index e2a7b73..18dca94 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_13806d() {
-  f16vec3 res = exp(f16vec3(0.0hf));
+  f16vec3 res = exp(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp_13806d() {
-  f16vec3 res = exp(f16vec3(0.0hf));
+  f16vec3 res = exp(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_13806d() {
-  f16vec3 res = exp(f16vec3(0.0hf));
+  f16vec3 res = exp(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.msl
index 1f4af8c..7150692 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_13806d() {
-  half3 res = exp(half3(0.0h));
+  half3 res = exp(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.spvasm
index a3679ff..039b69b 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %exp_13806d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Exp %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Exp %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %exp_13806d
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %exp_13806d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %exp_13806d
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %exp_13806d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %exp_13806d
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %exp_13806d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.wgsl
index 7ccb13f..4e78600 100644
--- a/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/13806d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp_13806d() {
-  var res : vec3<f16> = exp(vec3<f16>(f16()));
+  var res : vec3<f16> = exp(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl
index d2d1bb2..47f5320 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp(vec<2, f16>) -> vec<2, f16>
 fn exp_2e08e2() {
-  var res: vec2<f16> = exp(vec2<f16>(f16()));
+  var res: vec2<f16> = exp(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.dxc.hlsl
index 52dca1d..a9d2ab8 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_2e08e2() {
-  vector<float16_t, 2> res = exp((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = exp((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.glsl
index 04a9c64..ead6fec 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_2e08e2() {
-  f16vec2 res = exp(f16vec2(0.0hf));
+  f16vec2 res = exp(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp_2e08e2() {
-  f16vec2 res = exp(f16vec2(0.0hf));
+  f16vec2 res = exp(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_2e08e2() {
-  f16vec2 res = exp(f16vec2(0.0hf));
+  f16vec2 res = exp(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.msl
index fd0c319..5336de7 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_2e08e2() {
-  half2 res = exp(half2(0.0h));
+  half2 res = exp(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.spvasm
index 9d11ae3..25e43eb 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %exp_2e08e2 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Exp %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Exp %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %exp_2e08e2
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %exp_2e08e2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %exp_2e08e2
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %exp_2e08e2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %exp_2e08e2
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %exp_2e08e2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.wgsl
index 9962f0e..31ce159 100644
--- a/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/2e08e2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp_2e08e2() {
-  var res : vec2<f16> = exp(vec2<f16>(f16()));
+  var res : vec2<f16> = exp(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl
index 53ee480..947bb87 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp(vec<4, f16>) -> vec<4, f16>
 fn exp_611a87() {
-  var res: vec4<f16> = exp(vec4<f16>(f16()));
+  var res: vec4<f16> = exp(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.dxc.hlsl
index 47b6a04..4083b4d 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_611a87() {
-  vector<float16_t, 4> res = exp((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = exp((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.glsl
index f5b6a25..f9ec5fb 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_611a87() {
-  f16vec4 res = exp(f16vec4(0.0hf));
+  f16vec4 res = exp(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp_611a87() {
-  f16vec4 res = exp(f16vec4(0.0hf));
+  f16vec4 res = exp(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_611a87() {
-  f16vec4 res = exp(f16vec4(0.0hf));
+  f16vec4 res = exp(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.msl
index 32163a8..72cfc9e 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_611a87() {
-  half4 res = exp(half4(0.0h));
+  half4 res = exp(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.spvasm
index 749740e..2883d1e 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %exp_611a87 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Exp %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Exp %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %exp_611a87
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %exp_611a87
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %exp_611a87
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %exp_611a87
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %exp_611a87
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %exp_611a87
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.wgsl
index 63f247c..3b2b8d9 100644
--- a/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/611a87.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp_611a87() {
-  var res : vec4<f16> = exp(vec4<f16>(f16()));
+  var res : vec4<f16> = exp(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl
index 6572643..d265bf3 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp(f16) -> f16
 fn exp_c18fe9() {
-  var res: f16 = exp(f16());
+  var res: f16 = exp(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.dxc.hlsl
index 03ed79f..5d32e2d 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_c18fe9() {
-  float16_t res = exp(float16_t(0.0h));
+  float16_t res = exp(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.glsl
index a937a44..be9113a 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_c18fe9() {
-  float16_t res = exp(0.0hf);
+  float16_t res = exp(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp_c18fe9() {
-  float16_t res = exp(0.0hf);
+  float16_t res = exp(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp_c18fe9() {
-  float16_t res = exp(0.0hf);
+  float16_t res = exp(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.msl
index d933e7b..120d379 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_c18fe9() {
-  half res = exp(0.0h);
+  half res = exp(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.spvasm
index 050b62d..fab791b 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %exp_c18fe9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Exp %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Exp %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %exp_c18fe9
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %exp_c18fe9
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %exp_c18fe9
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %exp_c18fe9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %exp_c18fe9
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %exp_c18fe9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.wgsl
index a2dec57..e9ea41f 100644
--- a/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp/c18fe9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp_c18fe9() {
-  var res : f16 = exp(f16());
+  var res : f16 = exp(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl
index 104c4bb..1726a87 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp2(vec<2, f16>) -> vec<2, f16>
 fn exp2_151a4c() {
-  var res: vec2<f16> = exp2(vec2<f16>(f16()));
+  var res: vec2<f16> = exp2(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.dxc.hlsl
index a205613..b86be99 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp2_151a4c() {
-  vector<float16_t, 2> res = exp2((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = exp2((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.glsl
index 78394dc..e7a27302 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_151a4c() {
-  f16vec2 res = exp2(f16vec2(0.0hf));
+  f16vec2 res = exp2(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp2_151a4c() {
-  f16vec2 res = exp2(f16vec2(0.0hf));
+  f16vec2 res = exp2(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_151a4c() {
-  f16vec2 res = exp2(f16vec2(0.0hf));
+  f16vec2 res = exp2(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.msl
index e8e65ea..648a584 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp2_151a4c() {
-  half2 res = exp2(half2(0.0h));
+  half2 res = exp2(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.spvasm
index 3b271fa..21a8c06 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %exp2_151a4c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Exp2 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Exp2 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %exp2_151a4c
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %exp2_151a4c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %exp2_151a4c
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %exp2_151a4c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %exp2_151a4c
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %exp2_151a4c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.wgsl
index 698ac46..7c28484 100644
--- a/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/151a4c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp2_151a4c() {
-  var res : vec2<f16> = exp2(vec2<f16>(f16()));
+  var res : vec2<f16> = exp2(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl
index 790a5b1..dc570f2 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp2(vec<3, f16>) -> vec<3, f16>
 fn exp2_751377() {
-  var res: vec3<f16> = exp2(vec3<f16>(f16()));
+  var res: vec3<f16> = exp2(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.dxc.hlsl
index 46be625..df31b74 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp2_751377() {
-  vector<float16_t, 3> res = exp2((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = exp2((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.glsl
index af02e20..92bdff7 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_751377() {
-  f16vec3 res = exp2(f16vec3(0.0hf));
+  f16vec3 res = exp2(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp2_751377() {
-  f16vec3 res = exp2(f16vec3(0.0hf));
+  f16vec3 res = exp2(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_751377() {
-  f16vec3 res = exp2(f16vec3(0.0hf));
+  f16vec3 res = exp2(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.msl
index 201f1e2..94ad2ef 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp2_751377() {
-  half3 res = exp2(half3(0.0h));
+  half3 res = exp2(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.spvasm
index b255fb1..c9e1e3a 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %exp2_751377 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Exp2 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Exp2 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %exp2_751377
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %exp2_751377
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %exp2_751377
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %exp2_751377
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %exp2_751377
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %exp2_751377
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.wgsl
index 5730ea2..effbce1 100644
--- a/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/751377.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp2_751377() {
-  var res : vec3<f16> = exp2(vec3<f16>(f16()));
+  var res : vec3<f16> = exp2(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl
index 74f45c4..99e021e 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp2(f16) -> f16
 fn exp2_b408e4() {
-  var res: f16 = exp2(f16());
+  var res: f16 = exp2(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.dxc.hlsl
index 1161b51..b551f3f 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp2_b408e4() {
-  float16_t res = exp2(float16_t(0.0h));
+  float16_t res = exp2(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.glsl
index 5c041fc..84e9ac1 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_b408e4() {
-  float16_t res = exp2(0.0hf);
+  float16_t res = exp2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp2_b408e4() {
-  float16_t res = exp2(0.0hf);
+  float16_t res = exp2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_b408e4() {
-  float16_t res = exp2(0.0hf);
+  float16_t res = exp2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.msl
index 144f5ad..d28fe02 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp2_b408e4() {
-  half res = exp2(0.0h);
+  half res = exp2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.spvasm
index 00de130..ce19204 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %exp2_b408e4 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Exp2 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Exp2 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %exp2_b408e4
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %exp2_b408e4
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %exp2_b408e4
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %exp2_b408e4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %exp2_b408e4
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %exp2_b408e4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.wgsl
index 65c1649..b1c358e 100644
--- a/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/b408e4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp2_b408e4() {
-  var res : f16 = exp2(f16());
+  var res : f16 = exp2(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl
index 4bbdb03..654851e 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl
@@ -25,7 +25,7 @@
 
 // fn exp2(vec<4, f16>) -> vec<4, f16>
 fn exp2_ffa827() {
-  var res: vec4<f16> = exp2(vec4<f16>(f16()));
+  var res: vec4<f16> = exp2(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.dxc.hlsl
index 744ae47..1e83141 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp2_ffa827() {
-  vector<float16_t, 4> res = exp2((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = exp2((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.glsl
index 960c753..90847d5 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_ffa827() {
-  f16vec4 res = exp2(f16vec4(0.0hf));
+  f16vec4 res = exp2(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void exp2_ffa827() {
-  f16vec4 res = exp2(f16vec4(0.0hf));
+  f16vec4 res = exp2(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void exp2_ffa827() {
-  f16vec4 res = exp2(f16vec4(0.0hf));
+  f16vec4 res = exp2(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.msl
index add3f5e..46061e3 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp2_ffa827() {
-  half4 res = exp2(half4(0.0h));
+  half4 res = exp2(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.spvasm
index 9520e91..71e376e 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %exp2_ffa827 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Exp2 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Exp2 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %exp2_ffa827
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %exp2_ffa827
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %exp2_ffa827
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %exp2_ffa827
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %exp2_ffa827
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %exp2_ffa827
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.wgsl
index 230ad07..1bd743f 100644
--- a/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/exp2/ffa827.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn exp2_ffa827() {
-  var res : vec4<f16> = exp2(vec4<f16>(f16()));
+  var res : vec4<f16> = exp2(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl
index b790070..aeb6d72 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl
@@ -25,7 +25,7 @@
 
 // fn faceForward(vec<3, f16>, vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn faceForward_524986() {
-  var res: vec3<f16> = faceForward(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = faceForward(vec3<f16>(1.h), vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.dxc.hlsl
index f9ff272..d6cf67a 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void faceForward_524986() {
-  vector<float16_t, 3> res = faceforward((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = faceforward((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.glsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.glsl
index 7f22243..4a03ffe 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void faceForward_524986() {
-  f16vec3 res = faceforward(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = faceforward(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void faceForward_524986() {
-  f16vec3 res = faceforward(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = faceforward(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void faceForward_524986() {
-  f16vec3 res = faceforward(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = faceforward(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.msl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.msl
index 39be077..9eea5a1 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void faceForward_524986() {
-  half3 res = faceforward(half3(0.0h), half3(0.0h), half3(0.0h));
+  half3 res = faceforward(half3(1.0h), half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.spvasm
index e9ff4a6..ad5e4f5 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %faceForward_524986 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 FaceForward %17 %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 FaceForward %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %faceForward_524986
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %faceForward_524986
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %faceForward_524986
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %faceForward_524986
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %faceForward_524986
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %faceForward_524986
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.wgsl
index 9c4ec2b..43b0b35 100644
--- a/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/524986.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn faceForward_524986() {
-  var res : vec3<f16> = faceForward(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = faceForward(vec3<f16>(1.0h), vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl
index fb1dcfb..d2b290a 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl
@@ -25,7 +25,7 @@
 
 // fn faceForward(vec<4, f16>, vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn faceForward_cc63dc() {
-  var res: vec4<f16> = faceForward(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = faceForward(vec4<f16>(1.h), vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.dxc.hlsl
index b59f3b0..ec3d4f84 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void faceForward_cc63dc() {
-  vector<float16_t, 4> res = faceforward((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = faceforward((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.glsl
index ab00ae1..6a53621 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void faceForward_cc63dc() {
-  f16vec4 res = faceforward(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = faceforward(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void faceForward_cc63dc() {
-  f16vec4 res = faceforward(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = faceforward(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void faceForward_cc63dc() {
-  f16vec4 res = faceforward(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = faceforward(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.msl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.msl
index 982ab0a..423f02e 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void faceForward_cc63dc() {
-  half4 res = faceforward(half4(0.0h), half4(0.0h), half4(0.0h));
+  half4 res = faceforward(half4(1.0h), half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.spvasm
index bfa79fb..a5052c5 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %faceForward_cc63dc = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 FaceForward %17 %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 FaceForward %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %faceForward_cc63dc
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %faceForward_cc63dc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %faceForward_cc63dc
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %faceForward_cc63dc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %faceForward_cc63dc
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %faceForward_cc63dc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.wgsl
index 1fca871..5a7e113 100644
--- a/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/cc63dc.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn faceForward_cc63dc() {
-  var res : vec4<f16> = faceForward(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = faceForward(vec4<f16>(1.0h), vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl
index bf8db4f..69a787b 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl
@@ -25,7 +25,7 @@
 
 // fn faceForward(vec<2, f16>, vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn faceForward_fb0f2e() {
-  var res: vec2<f16> = faceForward(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = faceForward(vec2<f16>(1.h), vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.dxc.hlsl
index a4205ab..0cea4d4 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void faceForward_fb0f2e() {
-  vector<float16_t, 2> res = faceforward((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = faceforward((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.glsl
index 6682c02..91747bf 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void faceForward_fb0f2e() {
-  f16vec2 res = faceforward(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = faceforward(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void faceForward_fb0f2e() {
-  f16vec2 res = faceforward(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = faceforward(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void faceForward_fb0f2e() {
-  f16vec2 res = faceforward(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = faceforward(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.msl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.msl
index 9c07359..ef0dd6d 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void faceForward_fb0f2e() {
-  half2 res = faceforward(half2(0.0h), half2(0.0h), half2(0.0h));
+  half2 res = faceforward(half2(1.0h), half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.spvasm
index 20da054..b3e1ff0 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %faceForward_fb0f2e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 FaceForward %17 %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 FaceForward %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %faceForward_fb0f2e
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %faceForward_fb0f2e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %faceForward_fb0f2e
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %faceForward_fb0f2e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %faceForward_fb0f2e
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %faceForward_fb0f2e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.wgsl
index 96b39ad..6f9ce4c 100644
--- a/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/faceForward/fb0f2e.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn faceForward_fb0f2e() {
-  var res : vec2<f16> = faceForward(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = faceForward(vec2<f16>(1.0h), vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl
index bbe70ee..a8cfcea 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl
@@ -25,7 +25,7 @@
 
 // fn floor(vec<3, f16>) -> vec<3, f16>
 fn floor_3802c0() {
-  var res: vec3<f16> = floor(vec3<f16>(f16()));
+  var res: vec3<f16> = floor(vec3<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.dxc.hlsl
index 9974a5b..446e096 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void floor_3802c0() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.glsl
index 1007c7d..c3920b3 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_3802c0() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void floor_3802c0() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_3802c0() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.msl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.msl
index 90432ad..0a637cd 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void floor_3802c0() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.spvasm
index 51bbbe3..f2c7055 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/floor/3802c0.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %floor_3802c0 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %floor_3802c0
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %floor_3802c0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %floor_3802c0
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %floor_3802c0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %floor_3802c0
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %floor_3802c0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.wgsl
index 454c669..5840b54 100644
--- a/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/3802c0.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn floor_3802c0() {
-  var res : vec3<f16> = floor(vec3<f16>(f16()));
+  var res : vec3<f16> = floor(vec3<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl
index 77a94d5..9cf2adb 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl
@@ -25,7 +25,7 @@
 
 // fn floor(vec<2, f16>) -> vec<2, f16>
 fn floor_84658c() {
-  var res: vec2<f16> = floor(vec2<f16>(f16()));
+  var res: vec2<f16> = floor(vec2<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.dxc.hlsl
index 5f5a3b6..dbdd75f 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void floor_84658c() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.glsl
index ef5b290..dce9c85 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_84658c() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void floor_84658c() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_84658c() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.msl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.msl
index 5ee3802..c619d7c 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void floor_84658c() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.spvasm
index 72b7f51..b6a4945 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/floor/84658c.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %floor_84658c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %floor_84658c
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %floor_84658c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %floor_84658c
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %floor_84658c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %floor_84658c
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %floor_84658c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.wgsl
index bbf2ee4..4b7c4d6 100644
--- a/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/84658c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn floor_84658c() {
-  var res : vec2<f16> = floor(vec2<f16>(f16()));
+  var res : vec2<f16> = floor(vec2<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl
index f64f4ec..f5d0a88 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl
@@ -25,7 +25,7 @@
 
 // fn floor(vec<4, f16>) -> vec<4, f16>
 fn floor_a2d31b() {
-  var res: vec4<f16> = floor(vec4<f16>(f16()));
+  var res: vec4<f16> = floor(vec4<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.dxc.hlsl
index 334112b..e8e43d8 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void floor_a2d31b() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.glsl
index 4d06c11..3463a7f 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_a2d31b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void floor_a2d31b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_a2d31b() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.msl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.msl
index 0e3e4ee..a1b0f04 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void floor_a2d31b() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.spvasm
index a877d97..6f84fa2 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %floor_a2d31b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %floor_a2d31b
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %floor_a2d31b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %floor_a2d31b
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %floor_a2d31b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %floor_a2d31b
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %floor_a2d31b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.wgsl
index 54977de..1772e94 100644
--- a/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/a2d31b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn floor_a2d31b() {
-  var res : vec4<f16> = floor(vec4<f16>(f16()));
+  var res : vec4<f16> = floor(vec4<f16>(1.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl
index 5defc31..9eb9fa7 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl
@@ -25,7 +25,7 @@
 
 // fn floor(f16) -> f16
 fn floor_b6e09c() {
-  var res: f16 = floor(f16());
+  var res: f16 = floor(1.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.dxc.hlsl
index 13f7908..fb8121e 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void floor_b6e09c() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.glsl
index 3970d69..4cf7082 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_b6e09c() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void floor_b6e09c() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void floor_b6e09c() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.msl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.msl
index 5f14018..b84aca8 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void floor_b6e09c() {
-  half res = 0.0h;
+  half res = 1.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.spvasm
index 8e6ff79..bb1076b 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %floor_b6e09c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_0
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %floor_b6e09c
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %floor_b6e09c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %floor_b6e09c
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %floor_b6e09c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %floor_b6e09c
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %floor_b6e09c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.wgsl
index 59a04cc..35c2316 100644
--- a/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/floor/b6e09c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn floor_b6e09c() {
-  var res : f16 = floor(f16());
+  var res : f16 = floor(1.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl
index 0254023..ab5ebb9 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl
@@ -25,7 +25,7 @@
 
 // fn fma(vec<4, f16>, vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn fma_ab7818() {
-  var res: vec4<f16> = fma(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = fma(vec4<f16>(1.h), vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.dxc.hlsl
index 0621f2a..3336b31 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fma_ab7818() {
-  vector<float16_t, 4> res = mad((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = mad((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.glsl
index ea53342..fa4e760 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_ab7818() {
-  f16vec4 res = ((f16vec4(0.0hf)) * (f16vec4(0.0hf)) + (f16vec4(0.0hf)));
+  f16vec4 res = ((f16vec4(1.0hf)) * (f16vec4(1.0hf)) + (f16vec4(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fma_ab7818() {
-  f16vec4 res = ((f16vec4(0.0hf)) * (f16vec4(0.0hf)) + (f16vec4(0.0hf)));
+  f16vec4 res = ((f16vec4(1.0hf)) * (f16vec4(1.0hf)) + (f16vec4(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_ab7818() {
-  f16vec4 res = ((f16vec4(0.0hf)) * (f16vec4(0.0hf)) + (f16vec4(0.0hf)));
+  f16vec4 res = ((f16vec4(1.0hf)) * (f16vec4(1.0hf)) + (f16vec4(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.msl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.msl
index 1e22223..eb2484d 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fma_ab7818() {
-  half4 res = fma(half4(0.0h), half4(0.0h), half4(0.0h));
+  half4 res = fma(half4(1.0h), half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.spvasm
index a5bc45f..ccf40ea 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %fma_ab7818 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Fma %17 %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Fma %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %fma_ab7818
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %fma_ab7818
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %fma_ab7818
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %fma_ab7818
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %fma_ab7818
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %fma_ab7818
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.wgsl
index 0732ab8..d0f3ce4 100644
--- a/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/ab7818.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fma_ab7818() {
-  var res : vec4<f16> = fma(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = fma(vec4<f16>(1.0h), vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl
index 332799f..abfb8df 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl
@@ -25,7 +25,7 @@
 
 // fn fma(vec<2, f16>, vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn fma_bf21b6() {
-  var res: vec2<f16> = fma(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = fma(vec2<f16>(1.h), vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.dxc.hlsl
index 85963f9..9e48041 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fma_bf21b6() {
-  vector<float16_t, 2> res = mad((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = mad((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.glsl
index 576c850..627c7c9 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_bf21b6() {
-  f16vec2 res = ((f16vec2(0.0hf)) * (f16vec2(0.0hf)) + (f16vec2(0.0hf)));
+  f16vec2 res = ((f16vec2(1.0hf)) * (f16vec2(1.0hf)) + (f16vec2(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fma_bf21b6() {
-  f16vec2 res = ((f16vec2(0.0hf)) * (f16vec2(0.0hf)) + (f16vec2(0.0hf)));
+  f16vec2 res = ((f16vec2(1.0hf)) * (f16vec2(1.0hf)) + (f16vec2(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_bf21b6() {
-  f16vec2 res = ((f16vec2(0.0hf)) * (f16vec2(0.0hf)) + (f16vec2(0.0hf)));
+  f16vec2 res = ((f16vec2(1.0hf)) * (f16vec2(1.0hf)) + (f16vec2(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.msl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.msl
index 7d0d9df..54c227b 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fma_bf21b6() {
-  half2 res = fma(half2(0.0h), half2(0.0h), half2(0.0h));
+  half2 res = fma(half2(1.0h), half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.spvasm
index 4759d35..6b33758 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %fma_bf21b6 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Fma %17 %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Fma %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %fma_bf21b6
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %fma_bf21b6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %fma_bf21b6
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %fma_bf21b6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %fma_bf21b6
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %fma_bf21b6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.wgsl
index dcd733b..6d9f0bd 100644
--- a/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/bf21b6.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fma_bf21b6() {
-  var res : vec2<f16> = fma(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = fma(vec2<f16>(1.0h), vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl
index 5e605cc..3dfeb73 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl
@@ -25,7 +25,7 @@
 
 // fn fma(f16, f16, f16) -> f16
 fn fma_c8abb3() {
-  var res: f16 = fma(f16(), f16(), f16());
+  var res: f16 = fma(1.h, 1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.dxc.hlsl
index 02d0e31..f6e79c5 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fma_c8abb3() {
-  float16_t res = mad(float16_t(0.0h), float16_t(0.0h), float16_t(0.0h));
+  float16_t res = mad(float16_t(1.0h), float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.glsl
index 86e6a49..8540f07 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_c8abb3() {
-  float16_t res = ((0.0hf) * (0.0hf) + (0.0hf));
+  float16_t res = ((1.0hf) * (1.0hf) + (1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fma_c8abb3() {
-  float16_t res = ((0.0hf) * (0.0hf) + (0.0hf));
+  float16_t res = ((1.0hf) * (1.0hf) + (1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_c8abb3() {
-  float16_t res = ((0.0hf) * (0.0hf) + (0.0hf));
+  float16_t res = ((1.0hf) * (1.0hf) + (1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.msl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.msl
index 9222c9b..1152af9 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fma_c8abb3() {
-  half res = fma(0.0h, 0.0h, 0.0h);
+  half res = fma(1.0h, 1.0h, 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.spvasm
index bc7d248..8bde975 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %fma_c8abb3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Fma %16 %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Fma %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %fma_c8abb3
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %fma_c8abb3
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %fma_c8abb3
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %fma_c8abb3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %fma_c8abb3
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %fma_c8abb3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.wgsl
index 44eba43..400a45e 100644
--- a/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/c8abb3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fma_c8abb3() {
-  var res : f16 = fma(f16(), f16(), f16());
+  var res : f16 = fma(1.0h, 1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl
index 765d3e6..1d0b583 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl
@@ -25,7 +25,7 @@
 
 // fn fma(vec<3, f16>, vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn fma_e7abdc() {
-  var res: vec3<f16> = fma(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = fma(vec3<f16>(1.h), vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.dxc.hlsl
index 5ab1666..4930e9e 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fma_e7abdc() {
-  vector<float16_t, 3> res = mad((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = mad((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.glsl
index c4e4c74..182adee 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_e7abdc() {
-  f16vec3 res = ((f16vec3(0.0hf)) * (f16vec3(0.0hf)) + (f16vec3(0.0hf)));
+  f16vec3 res = ((f16vec3(1.0hf)) * (f16vec3(1.0hf)) + (f16vec3(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fma_e7abdc() {
-  f16vec3 res = ((f16vec3(0.0hf)) * (f16vec3(0.0hf)) + (f16vec3(0.0hf)));
+  f16vec3 res = ((f16vec3(1.0hf)) * (f16vec3(1.0hf)) + (f16vec3(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fma_e7abdc() {
-  f16vec3 res = ((f16vec3(0.0hf)) * (f16vec3(0.0hf)) + (f16vec3(0.0hf)));
+  f16vec3 res = ((f16vec3(1.0hf)) * (f16vec3(1.0hf)) + (f16vec3(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.msl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.msl
index 3622508..2360c4d 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fma_e7abdc() {
-  half3 res = fma(half3(0.0h), half3(0.0h), half3(0.0h));
+  half3 res = fma(half3(1.0h), half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.spvasm
index daa3de5..b2d0b4c 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %fma_e7abdc = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Fma %17 %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Fma %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %fma_e7abdc
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %fma_e7abdc
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %fma_e7abdc
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %fma_e7abdc
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %fma_e7abdc
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %fma_e7abdc
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.wgsl
index 45afac1..b83db18 100644
--- a/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fma/e7abdc.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fma_e7abdc() {
-  var res : vec3<f16> = fma(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = fma(vec3<f16>(1.0h), vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl
index df799a0..835b78a 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl
@@ -25,7 +25,7 @@
 
 // fn fract(vec<2, f16>) -> vec<2, f16>
 fn fract_181aa9() {
-  var res: vec2<f16> = fract(vec2<f16>(f16()));
+  var res: vec2<f16> = fract(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.dxc.hlsl
index ff11d385..e602eda 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fract_181aa9() {
-  vector<float16_t, 2> res = frac((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = frac((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.glsl
index 1e4d6bf..c837c60 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_181aa9() {
-  f16vec2 res = fract(f16vec2(0.0hf));
+  f16vec2 res = fract(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fract_181aa9() {
-  f16vec2 res = fract(f16vec2(0.0hf));
+  f16vec2 res = fract(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_181aa9() {
-  f16vec2 res = fract(f16vec2(0.0hf));
+  f16vec2 res = fract(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.msl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.msl
index b807118..c9a1ea8 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fract_181aa9() {
-  half2 res = fract(half2(0.0h));
+  half2 res = fract(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.spvasm
index 1bd3c4f..9f1b31c 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %fract_181aa9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Fract %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Fract %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %fract_181aa9
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %fract_181aa9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %fract_181aa9
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %fract_181aa9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %fract_181aa9
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %fract_181aa9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.wgsl
index fbad396..c67b415 100644
--- a/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/181aa9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fract_181aa9() {
-  var res : vec2<f16> = fract(vec2<f16>(f16()));
+  var res : vec2<f16> = fract(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl
index 5f4dd0e..13cadd7 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl
@@ -25,7 +25,7 @@
 
 // fn fract(vec<4, f16>) -> vec<4, f16>
 fn fract_498c77() {
-  var res: vec4<f16> = fract(vec4<f16>(f16()));
+  var res: vec4<f16> = fract(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.dxc.hlsl
index b6fe7b1..b58ad69 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fract_498c77() {
-  vector<float16_t, 4> res = frac((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = frac((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.glsl
index 352a8ee..b4f58b9 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_498c77() {
-  f16vec4 res = fract(f16vec4(0.0hf));
+  f16vec4 res = fract(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fract_498c77() {
-  f16vec4 res = fract(f16vec4(0.0hf));
+  f16vec4 res = fract(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_498c77() {
-  f16vec4 res = fract(f16vec4(0.0hf));
+  f16vec4 res = fract(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.msl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.msl
index 02f42f4..521e56d 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fract_498c77() {
-  half4 res = fract(half4(0.0h));
+  half4 res = fract(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.spvasm
index 8ab3fda..d4bf720 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %fract_498c77 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Fract %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Fract %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %fract_498c77
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %fract_498c77
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %fract_498c77
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %fract_498c77
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %fract_498c77
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %fract_498c77
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.wgsl
index 33a0794..3c8ac4e 100644
--- a/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/498c77.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fract_498c77() {
-  var res : vec4<f16> = fract(vec4<f16>(f16()));
+  var res : vec4<f16> = fract(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl
index a2c98fd..27348ee 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl
@@ -25,7 +25,7 @@
 
 // fn fract(vec<3, f16>) -> vec<3, f16>
 fn fract_958a1d() {
-  var res: vec3<f16> = fract(vec3<f16>(f16()));
+  var res: vec3<f16> = fract(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.dxc.hlsl
index 0c8e9a6..998cc75 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fract_958a1d() {
-  vector<float16_t, 3> res = frac((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = frac((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.glsl
index 19520f7..de3b9ee 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_958a1d() {
-  f16vec3 res = fract(f16vec3(0.0hf));
+  f16vec3 res = fract(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fract_958a1d() {
-  f16vec3 res = fract(f16vec3(0.0hf));
+  f16vec3 res = fract(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_958a1d() {
-  f16vec3 res = fract(f16vec3(0.0hf));
+  f16vec3 res = fract(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.msl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.msl
index fb0e54a..9a814ff 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fract_958a1d() {
-  half3 res = fract(half3(0.0h));
+  half3 res = fract(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.spvasm
index ea074c7..79831a4 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %fract_958a1d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Fract %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Fract %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %fract_958a1d
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %fract_958a1d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %fract_958a1d
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %fract_958a1d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %fract_958a1d
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %fract_958a1d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.wgsl
index c5cafe6..5fdd153 100644
--- a/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/958a1d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fract_958a1d() {
-  var res : vec3<f16> = fract(vec3<f16>(f16()));
+  var res : vec3<f16> = fract(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl
index e502ba9..8ea12ea 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl
@@ -25,7 +25,7 @@
 
 // fn fract(f16) -> f16
 fn fract_eb38ce() {
-  var res: f16 = fract(f16());
+  var res: f16 = fract(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.dxc.hlsl
index ffebafe..a4e26da 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void fract_eb38ce() {
-  float16_t res = frac(float16_t(0.0h));
+  float16_t res = frac(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.glsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.glsl
index ba80d87..dbd83c9 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_eb38ce() {
-  float16_t res = fract(0.0hf);
+  float16_t res = fract(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void fract_eb38ce() {
-  float16_t res = fract(0.0hf);
+  float16_t res = fract(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void fract_eb38ce() {
-  float16_t res = fract(0.0hf);
+  float16_t res = fract(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.msl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.msl
index 7b6600f..e5b9d42 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void fract_eb38ce() {
-  half res = fract(0.0h);
+  half res = fract(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.spvasm
index 0cb23c0..d4f1736 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %fract_eb38ce = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Fract %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Fract %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %fract_eb38ce
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %fract_eb38ce
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %fract_eb38ce
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %fract_eb38ce
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %fract_eb38ce
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %fract_eb38ce
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.wgsl
index 11a5545..c6aa88c 100644
--- a/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/fract/eb38ce.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn fract_eb38ce() {
-  var res : f16 = fract(f16());
+  var res : f16 = fract(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl
index 12ecb47..17720e6 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl
@@ -25,7 +25,7 @@
 
 // fn frexp(vec<4, f16>) -> __frexp_result_vec<4, f16>
 fn frexp_3dd21e() {
-  var res = frexp(vec4<f16>(f16()));
+  var res = frexp(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.dxc.hlsl
index a2155f1..513bf10 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.dxc.hlsl
@@ -10,7 +10,7 @@
 }
 
 void frexp_3dd21e() {
-  frexp_result_vec4_f16 res = tint_frexp((float16_t(0.0h)).xxxx);
+  frexp_result_vec4_f16 res = tint_frexp((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.glsl
index ba7ca1f..16ebca6 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void frexp_3dd21e() {
-  frexp_result_vec4_f16 res = tint_frexp(f16vec4(0.0hf));
+  frexp_result_vec4_f16 res = tint_frexp(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void frexp_3dd21e() {
-  frexp_result_vec4_f16 res = tint_frexp(f16vec4(0.0hf));
+  frexp_result_vec4_f16 res = tint_frexp(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void frexp_3dd21e() {
-  frexp_result_vec4_f16 res = tint_frexp(f16vec4(0.0hf));
+  frexp_result_vec4_f16 res = tint_frexp(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.msl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.msl
index 91c87e7..e87a091 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void frexp_3dd21e() {
-  frexp_result_vec4_f16 res = tint_frexp(half4(0.0h));
+  frexp_result_vec4_f16 res = tint_frexp(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.spvasm
index 6585dc0..f798344 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 38
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -45,37 +45,38 @@
         %int = OpTypeInt 32 1
       %v4int = OpTypeVector %int 4
 %__frexp_result_vec4_f16 = OpTypeStruct %v4half %v4int
-         %20 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %21 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function___frexp_result_vec4_f16 = OpTypePointer Function %__frexp_result_vec4_f16
-         %23 = OpConstantNull %__frexp_result_vec4_f16
-         %24 = OpTypeFunction %v4float
+         %24 = OpConstantNull %__frexp_result_vec4_f16
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %frexp_3dd21e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function___frexp_result_vec4_f16 Function %23
-         %13 = OpExtInst %__frexp_result_vec4_f16 %19 FrexpStruct %20
+        %res = OpVariable %_ptr_Function___frexp_result_vec4_f16 Function %24
+         %13 = OpExtInst %__frexp_result_vec4_f16 %19 FrexpStruct %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %frexp_3dd21e
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %frexp_3dd21e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
+         %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
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_3dd21e
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %frexp_3dd21e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_3dd21e
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %frexp_3dd21e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.wgsl
index a33fbd0..575b3c9 100644
--- a/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/3dd21e.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn frexp_3dd21e() {
-  var res = frexp(vec4<f16>(f16()));
+  var res = frexp(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl
index 6f4f993..2843cee 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl
@@ -25,7 +25,7 @@
 
 // fn frexp(f16) -> __frexp_result<f16>
 fn frexp_5257dd() {
-  var res = frexp(f16());
+  var res = frexp(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.dxc.hlsl
index 9e34fba..0ea874f 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.dxc.hlsl
@@ -10,7 +10,7 @@
 }
 
 void frexp_5257dd() {
-  frexp_result_f16 res = tint_frexp(float16_t(0.0h));
+  frexp_result_f16 res = tint_frexp(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.glsl
index f08939e..191bed3 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void frexp_5257dd() {
-  frexp_result_f16 res = tint_frexp(0.0hf);
+  frexp_result_f16 res = tint_frexp(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void frexp_5257dd() {
-  frexp_result_f16 res = tint_frexp(0.0hf);
+  frexp_result_f16 res = tint_frexp(1.0hf);
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void frexp_5257dd() {
-  frexp_result_f16 res = tint_frexp(0.0hf);
+  frexp_result_f16 res = tint_frexp(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.msl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.msl
index 1920b16..44ba76b 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void frexp_5257dd() {
-  frexp_result_f16 res = tint_frexp(0.0h);
+  frexp_result_f16 res = tint_frexp(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.spvasm
index 6c20d39..79d1964 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.spvasm
@@ -43,7 +43,7 @@
        %half = OpTypeFloat 16
         %int = OpTypeInt 32 1
 %__frexp_result_f16 = OpTypeStruct %half %int
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function___frexp_result_f16 = OpTypePointer Function %__frexp_result_f16
          %21 = OpConstantNull %__frexp_result_f16
          %22 = OpTypeFunction %v4float
@@ -51,7 +51,7 @@
 %frexp_5257dd = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function___frexp_result_f16 Function %21
-         %13 = OpExtInst %__frexp_result_f16 %17 FrexpStruct %18
+         %13 = OpExtInst %__frexp_result_f16 %17 FrexpStruct %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.wgsl
index ca55834..fbf57be 100644
--- a/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/5257dd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn frexp_5257dd() {
-  var res = frexp(f16());
+  var res = frexp(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl
index 7d784db..9483fb2 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl
@@ -25,7 +25,7 @@
 
 // fn frexp(vec<2, f16>) -> __frexp_result_vec<2, f16>
 fn frexp_5f47bf() {
-  var res = frexp(vec2<f16>(f16()));
+  var res = frexp(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.dxc.hlsl
index b39e0d6..5408e3d 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.dxc.hlsl
@@ -10,7 +10,7 @@
 }
 
 void frexp_5f47bf() {
-  frexp_result_vec2_f16 res = tint_frexp((float16_t(0.0h)).xx);
+  frexp_result_vec2_f16 res = tint_frexp((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.glsl
index 4a75e6c..30a4538 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void frexp_5f47bf() {
-  frexp_result_vec2_f16 res = tint_frexp(f16vec2(0.0hf));
+  frexp_result_vec2_f16 res = tint_frexp(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void frexp_5f47bf() {
-  frexp_result_vec2_f16 res = tint_frexp(f16vec2(0.0hf));
+  frexp_result_vec2_f16 res = tint_frexp(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void frexp_5f47bf() {
-  frexp_result_vec2_f16 res = tint_frexp(f16vec2(0.0hf));
+  frexp_result_vec2_f16 res = tint_frexp(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.msl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.msl
index a2290a8..2448316 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void frexp_5f47bf() {
-  frexp_result_vec2_f16 res = tint_frexp(half2(0.0h));
+  frexp_result_vec2_f16 res = tint_frexp(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.spvasm
index e1c51b9..88ffe88 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 38
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -45,37 +45,38 @@
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
 %__frexp_result_vec2_f16 = OpTypeStruct %v2half %v2int
-         %20 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %21 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function___frexp_result_vec2_f16 = OpTypePointer Function %__frexp_result_vec2_f16
-         %23 = OpConstantNull %__frexp_result_vec2_f16
-         %24 = OpTypeFunction %v4float
+         %24 = OpConstantNull %__frexp_result_vec2_f16
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %frexp_5f47bf = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function___frexp_result_vec2_f16 Function %23
-         %13 = OpExtInst %__frexp_result_vec2_f16 %19 FrexpStruct %20
+        %res = OpVariable %_ptr_Function___frexp_result_vec2_f16 Function %24
+         %13 = OpExtInst %__frexp_result_vec2_f16 %19 FrexpStruct %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %frexp_5f47bf
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %frexp_5f47bf
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
+         %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
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_5f47bf
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %frexp_5f47bf
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_5f47bf
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %frexp_5f47bf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.wgsl
index 5dd980e..f933947 100644
--- a/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/5f47bf.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn frexp_5f47bf() {
-  var res = frexp(vec2<f16>(f16()));
+  var res = frexp(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl
index 9b89a6b..774db54 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl
@@ -25,7 +25,7 @@
 
 // fn frexp(vec<3, f16>) -> __frexp_result_vec<3, f16>
 fn frexp_ae4a66() {
-  var res = frexp(vec3<f16>(f16()));
+  var res = frexp(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.dxc.hlsl
index 35d6455..0d0e950 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.dxc.hlsl
@@ -10,7 +10,7 @@
 }
 
 void frexp_ae4a66() {
-  frexp_result_vec3_f16 res = tint_frexp((float16_t(0.0h)).xxx);
+  frexp_result_vec3_f16 res = tint_frexp((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.glsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.glsl
index e1b82e8..a3f39d9 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void frexp_ae4a66() {
-  frexp_result_vec3_f16 res = tint_frexp(f16vec3(0.0hf));
+  frexp_result_vec3_f16 res = tint_frexp(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void frexp_ae4a66() {
-  frexp_result_vec3_f16 res = tint_frexp(f16vec3(0.0hf));
+  frexp_result_vec3_f16 res = tint_frexp(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void frexp_ae4a66() {
-  frexp_result_vec3_f16 res = tint_frexp(f16vec3(0.0hf));
+  frexp_result_vec3_f16 res = tint_frexp(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.msl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.msl
index b58cc10..b2398cf 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void frexp_ae4a66() {
-  frexp_result_vec3_f16 res = tint_frexp(half3(0.0h));
+  frexp_result_vec3_f16 res = tint_frexp(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.spvasm
index 5bf4a21b..5f14309 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 38
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -45,37 +45,38 @@
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
 %__frexp_result_vec3_f16 = OpTypeStruct %v3half %v3int
-         %20 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %21 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function___frexp_result_vec3_f16 = OpTypePointer Function %__frexp_result_vec3_f16
-         %23 = OpConstantNull %__frexp_result_vec3_f16
-         %24 = OpTypeFunction %v4float
+         %24 = OpConstantNull %__frexp_result_vec3_f16
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %frexp_ae4a66 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function___frexp_result_vec3_f16 Function %23
-         %13 = OpExtInst %__frexp_result_vec3_f16 %19 FrexpStruct %20
+        %res = OpVariable %_ptr_Function___frexp_result_vec3_f16 Function %24
+         %13 = OpExtInst %__frexp_result_vec3_f16 %19 FrexpStruct %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %frexp_ae4a66
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %frexp_ae4a66
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
+         %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
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %frexp_ae4a66
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %frexp_ae4a66
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %frexp_ae4a66
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %frexp_ae4a66
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.wgsl
index fcec0eb..6e1393a 100644
--- a/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/frexp/ae4a66.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn frexp_ae4a66() {
-  var res = frexp(vec3<f16>(f16()));
+  var res = frexp(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl
index fba79b2..afe3a8b 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl
@@ -25,7 +25,7 @@
 
 // fn inverseSqrt(f16) -> f16
 fn inverseSqrt_440300() {
-  var res: f16 = inverseSqrt(f16());
+  var res: f16 = inverseSqrt(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.dxc.hlsl
index 39bea64..147b2ec 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void inverseSqrt_440300() {
-  float16_t res = rsqrt(float16_t(0.0h));
+  float16_t res = rsqrt(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.glsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.glsl
index 8cc5283..9f1eaf6 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_440300() {
-  float16_t res = inversesqrt(0.0hf);
+  float16_t res = inversesqrt(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void inverseSqrt_440300() {
-  float16_t res = inversesqrt(0.0hf);
+  float16_t res = inversesqrt(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_440300() {
-  float16_t res = inversesqrt(0.0hf);
+  float16_t res = inversesqrt(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.msl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.msl
index 0cab7ac..0b73e38 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void inverseSqrt_440300() {
-  half res = rsqrt(0.0h);
+  half res = rsqrt(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.spvasm
index 49ae296..d2b8dc4 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %inverseSqrt_440300 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 InverseSqrt %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 InverseSqrt %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %inverseSqrt_440300
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %inverseSqrt_440300
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %inverseSqrt_440300
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %inverseSqrt_440300
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %inverseSqrt_440300
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %inverseSqrt_440300
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.wgsl
index c2b635a..239d135 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/440300.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn inverseSqrt_440300() {
-  var res : f16 = inverseSqrt(f16());
+  var res : f16 = inverseSqrt(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl
index af9bc17..453596b 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl
@@ -25,7 +25,7 @@
 
 // fn inverseSqrt(vec<2, f16>) -> vec<2, f16>
 fn inverseSqrt_5f51f8() {
-  var res: vec2<f16> = inverseSqrt(vec2<f16>(f16()));
+  var res: vec2<f16> = inverseSqrt(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.dxc.hlsl
index f58be18..c84c61d 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void inverseSqrt_5f51f8() {
-  vector<float16_t, 2> res = rsqrt((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = rsqrt((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.glsl
index 4e73df6..3b37871 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_5f51f8() {
-  f16vec2 res = inversesqrt(f16vec2(0.0hf));
+  f16vec2 res = inversesqrt(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void inverseSqrt_5f51f8() {
-  f16vec2 res = inversesqrt(f16vec2(0.0hf));
+  f16vec2 res = inversesqrt(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_5f51f8() {
-  f16vec2 res = inversesqrt(f16vec2(0.0hf));
+  f16vec2 res = inversesqrt(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.msl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.msl
index 2e7d4bd9..d396e65 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void inverseSqrt_5f51f8() {
-  half2 res = rsqrt(half2(0.0h));
+  half2 res = rsqrt(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.spvasm
index cd5caca..10e31d2 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %inverseSqrt_5f51f8 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 InverseSqrt %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 InverseSqrt %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %inverseSqrt_5f51f8
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %inverseSqrt_5f51f8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %inverseSqrt_5f51f8
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %inverseSqrt_5f51f8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %inverseSqrt_5f51f8
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %inverseSqrt_5f51f8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.wgsl
index 672f0e3..6db63ba 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/5f51f8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn inverseSqrt_5f51f8() {
-  var res : vec2<f16> = inverseSqrt(vec2<f16>(f16()));
+  var res : vec2<f16> = inverseSqrt(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl
index 2a389e2..da9f44f 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl
@@ -25,7 +25,7 @@
 
 // fn inverseSqrt(vec<3, f16>) -> vec<3, f16>
 fn inverseSqrt_b85ebd() {
-  var res: vec3<f16> = inverseSqrt(vec3<f16>(f16()));
+  var res: vec3<f16> = inverseSqrt(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.dxc.hlsl
index ef654c9..bf7a098 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void inverseSqrt_b85ebd() {
-  vector<float16_t, 3> res = rsqrt((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = rsqrt((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.glsl
index 12e5cab..ee6af34 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_b85ebd() {
-  f16vec3 res = inversesqrt(f16vec3(0.0hf));
+  f16vec3 res = inversesqrt(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void inverseSqrt_b85ebd() {
-  f16vec3 res = inversesqrt(f16vec3(0.0hf));
+  f16vec3 res = inversesqrt(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_b85ebd() {
-  f16vec3 res = inversesqrt(f16vec3(0.0hf));
+  f16vec3 res = inversesqrt(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.msl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.msl
index 351560a..d5823b9 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void inverseSqrt_b85ebd() {
-  half3 res = rsqrt(half3(0.0h));
+  half3 res = rsqrt(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.spvasm
index 05243bc..76557ce 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %inverseSqrt_b85ebd = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 InverseSqrt %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 InverseSqrt %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %inverseSqrt_b85ebd
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %inverseSqrt_b85ebd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %inverseSqrt_b85ebd
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %inverseSqrt_b85ebd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %inverseSqrt_b85ebd
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %inverseSqrt_b85ebd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.wgsl
index e9c1e7e..8345b10 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/b85ebd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn inverseSqrt_b85ebd() {
-  var res : vec3<f16> = inverseSqrt(vec3<f16>(f16()));
+  var res : vec3<f16> = inverseSqrt(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl
index 8657926..3763326 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl
@@ -25,7 +25,7 @@
 
 // fn inverseSqrt(vec<4, f16>) -> vec<4, f16>
 fn inverseSqrt_cbdc70() {
-  var res: vec4<f16> = inverseSqrt(vec4<f16>(f16()));
+  var res: vec4<f16> = inverseSqrt(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.dxc.hlsl
index ed1f192..1f6b955 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void inverseSqrt_cbdc70() {
-  vector<float16_t, 4> res = rsqrt((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = rsqrt((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.glsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.glsl
index 43f1eda..f0261cd 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_cbdc70() {
-  f16vec4 res = inversesqrt(f16vec4(0.0hf));
+  f16vec4 res = inversesqrt(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void inverseSqrt_cbdc70() {
-  f16vec4 res = inversesqrt(f16vec4(0.0hf));
+  f16vec4 res = inversesqrt(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void inverseSqrt_cbdc70() {
-  f16vec4 res = inversesqrt(f16vec4(0.0hf));
+  f16vec4 res = inversesqrt(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.msl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.msl
index f1610f8..f1f1cc1 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void inverseSqrt_cbdc70() {
-  half4 res = rsqrt(half4(0.0h));
+  half4 res = rsqrt(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.spvasm
index 43367c1..f27f99c 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %inverseSqrt_cbdc70 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 InverseSqrt %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 InverseSqrt %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %inverseSqrt_cbdc70
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %inverseSqrt_cbdc70
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %inverseSqrt_cbdc70
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %inverseSqrt_cbdc70
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %inverseSqrt_cbdc70
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %inverseSqrt_cbdc70
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.wgsl
index 2290320..8ef3f09 100644
--- a/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/inverseSqrt/cbdc70.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn inverseSqrt_cbdc70() {
-  var res : vec4<f16> = inverseSqrt(vec4<f16>(f16()));
+  var res : vec4<f16> = inverseSqrt(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl
index 69dc8b4..c5c06c3 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl
@@ -25,7 +25,7 @@
 
 // fn ldexp(vec<2, f16>, vec<2, i32>) -> vec<2, f16>
 fn ldexp_3d90b4() {
-  var res: vec2<f16> = ldexp(vec2<f16>(f16()), vec2<i32>(1i));
+  var res: vec2<f16> = ldexp(vec2<f16>(1.h), vec2<i32>(1i));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.dxc.hlsl
index ae0933e..beb62a6 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ldexp_3d90b4() {
-  vector<float16_t, 2> res = ldexp((float16_t(0.0h)).xx, (1).xx);
+  vector<float16_t, 2> res = ldexp((float16_t(1.0h)).xx, (1).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.glsl
index 74ee06a..7779006 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_3d90b4() {
-  f16vec2 res = ldexp(f16vec2(0.0hf), ivec2(1));
+  f16vec2 res = ldexp(f16vec2(1.0hf), ivec2(1));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ldexp_3d90b4() {
-  f16vec2 res = ldexp(f16vec2(0.0hf), ivec2(1));
+  f16vec2 res = ldexp(f16vec2(1.0hf), ivec2(1));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_3d90b4() {
-  f16vec2 res = ldexp(f16vec2(0.0hf), ivec2(1));
+  f16vec2 res = ldexp(f16vec2(1.0hf), ivec2(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.msl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.msl
index 9d9e2ac..458ac36 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ldexp_3d90b4() {
-  half2 res = ldexp(half2(0.0h), int2(1));
+  half2 res = ldexp(half2(1.0h), int2(1));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.spvasm
index 0847908..69d848c 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,40 +37,42 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
         %int = OpTypeInt 32 1
       %v2int = OpTypeVector %int 2
       %int_1 = OpConstant %int 1
-         %21 = OpConstantComposite %v2int %int_1 %int_1
+         %22 = OpConstantComposite %v2int %int_1 %int_1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %24 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v2half
+         %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ldexp_3d90b4 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Ldexp %17 %21
+        %res = OpVariable %_ptr_Function_v2half Function %25
+         %13 = OpExtInst %v2half %16 Ldexp %18 %22
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %ldexp_3d90b4
+%vertex_main_inner = OpFunction %v4float None %26
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %ldexp_3d90b4
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
+         %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
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %ldexp_3d90b4
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %ldexp_3d90b4
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %ldexp_3d90b4
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %ldexp_3d90b4
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.wgsl
index c41562f..5c65862 100644
--- a/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/3d90b4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ldexp_3d90b4() {
-  var res : vec2<f16> = ldexp(vec2<f16>(f16()), vec2<i32>(1i));
+  var res : vec2<f16> = ldexp(vec2<f16>(1.0h), vec2<i32>(1i));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl
index 5fde9f3..555800b 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl
@@ -25,7 +25,7 @@
 
 // fn ldexp(f16, i32) -> f16
 fn ldexp_624e0c() {
-  var res: f16 = ldexp(f16(), 1i);
+  var res: f16 = ldexp(1.h, 1i);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.dxc.hlsl
index c978bcf..400d56b 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ldexp_624e0c() {
-  float16_t res = ldexp(float16_t(0.0h), 1);
+  float16_t res = ldexp(float16_t(1.0h), 1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.glsl
index f856c62..1ad1643 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_624e0c() {
-  float16_t res = ldexp(0.0hf, 1);
+  float16_t res = ldexp(1.0hf, 1);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ldexp_624e0c() {
-  float16_t res = ldexp(0.0hf, 1);
+  float16_t res = ldexp(1.0hf, 1);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_624e0c() {
-  float16_t res = ldexp(0.0hf, 1);
+  float16_t res = ldexp(1.0hf, 1);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.msl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.msl
index e63d736..87d24f3 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ldexp_624e0c() {
-  half res = ldexp(0.0h, 1);
+  half res = ldexp(1.0h, 1);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.spvasm
index 13ce908..ca7b0f2 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,38 +36,39 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
         %int = OpTypeInt 32 1
       %int_1 = OpConstant %int 1
 %_ptr_Function_half = OpTypePointer Function %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ldexp_624e0c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Ldexp %16 %int_1
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Ldexp %half_0x1p_0 %int_1
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %ldexp_624e0c
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %ldexp_624e0c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %ldexp_624e0c
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %ldexp_624e0c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %ldexp_624e0c
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %ldexp_624e0c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.wgsl
index 9eebbae..540d1ad 100644
--- a/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/624e0c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ldexp_624e0c() {
-  var res : f16 = ldexp(f16(), 1i);
+  var res : f16 = ldexp(1.0h, 1i);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl
index b6e104b..2ec9d3c 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl
@@ -25,7 +25,7 @@
 
 // fn ldexp(vec<3, f16>, vec<3, i32>) -> vec<3, f16>
 fn ldexp_7485ce() {
-  var res: vec3<f16> = ldexp(vec3<f16>(f16()), vec3<i32>(1i));
+  var res: vec3<f16> = ldexp(vec3<f16>(1.h), vec3<i32>(1i));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.dxc.hlsl
index 731bb5d..030092c 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ldexp_7485ce() {
-  vector<float16_t, 3> res = ldexp((float16_t(0.0h)).xxx, (1).xxx);
+  vector<float16_t, 3> res = ldexp((float16_t(1.0h)).xxx, (1).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.glsl
index 4a19e3c..105e249 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_7485ce() {
-  f16vec3 res = ldexp(f16vec3(0.0hf), ivec3(1));
+  f16vec3 res = ldexp(f16vec3(1.0hf), ivec3(1));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ldexp_7485ce() {
-  f16vec3 res = ldexp(f16vec3(0.0hf), ivec3(1));
+  f16vec3 res = ldexp(f16vec3(1.0hf), ivec3(1));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_7485ce() {
-  f16vec3 res = ldexp(f16vec3(0.0hf), ivec3(1));
+  f16vec3 res = ldexp(f16vec3(1.0hf), ivec3(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.msl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.msl
index b5d93bf..a29ffa3 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ldexp_7485ce() {
-  half3 res = ldexp(half3(0.0h), int3(1));
+  half3 res = ldexp(half3(1.0h), int3(1));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.spvasm
index 985d489..44a5e07 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,40 +37,42 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
         %int = OpTypeInt 32 1
       %v3int = OpTypeVector %int 3
       %int_1 = OpConstant %int 1
-         %21 = OpConstantComposite %v3int %int_1 %int_1 %int_1
+         %22 = OpConstantComposite %v3int %int_1 %int_1 %int_1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %24 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v3half
+         %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ldexp_7485ce = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Ldexp %17 %21
+        %res = OpVariable %_ptr_Function_v3half Function %25
+         %13 = OpExtInst %v3half %16 Ldexp %18 %22
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %ldexp_7485ce
+%vertex_main_inner = OpFunction %v4float None %26
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %ldexp_7485ce
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
+         %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
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %ldexp_7485ce
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %ldexp_7485ce
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %ldexp_7485ce
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %ldexp_7485ce
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.wgsl
index 8ddaf04..d55a6aa 100644
--- a/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/7485ce.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ldexp_7485ce() {
-  var res : vec3<f16> = ldexp(vec3<f16>(f16()), vec3<i32>(1i));
+  var res : vec3<f16> = ldexp(vec3<f16>(1.0h), vec3<i32>(1i));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl
index 2e56210..03cec0f 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl
@@ -25,7 +25,7 @@
 
 // fn ldexp(vec<4, f16>, vec<4, i32>) -> vec<4, f16>
 fn ldexp_7fa13c() {
-  var res: vec4<f16> = ldexp(vec4<f16>(f16()), vec4<i32>(1i));
+  var res: vec4<f16> = ldexp(vec4<f16>(1.h), vec4<i32>(1i));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.dxc.hlsl
index 774c31e..36931fc 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void ldexp_7fa13c() {
-  vector<float16_t, 4> res = ldexp((float16_t(0.0h)).xxxx, (1).xxxx);
+  vector<float16_t, 4> res = ldexp((float16_t(1.0h)).xxxx, (1).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.glsl
index 30b6c1d..2ac9122 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_7fa13c() {
-  f16vec4 res = ldexp(f16vec4(0.0hf), ivec4(1));
+  f16vec4 res = ldexp(f16vec4(1.0hf), ivec4(1));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void ldexp_7fa13c() {
-  f16vec4 res = ldexp(f16vec4(0.0hf), ivec4(1));
+  f16vec4 res = ldexp(f16vec4(1.0hf), ivec4(1));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void ldexp_7fa13c() {
-  f16vec4 res = ldexp(f16vec4(0.0hf), ivec4(1));
+  f16vec4 res = ldexp(f16vec4(1.0hf), ivec4(1));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.msl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.msl
index b348e4a..536316a 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void ldexp_7fa13c() {
-  half4 res = ldexp(half4(0.0h), int4(1));
+  half4 res = ldexp(half4(1.0h), int4(1));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.spvasm
index f389bc3..1ddace3 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 38
+; Bound: 40
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,40 +37,42 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
         %int = OpTypeInt 32 1
       %v4int = OpTypeVector %int 4
       %int_1 = OpConstant %int 1
-         %21 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
+         %22 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %24 = OpTypeFunction %v4float
+         %25 = OpConstantNull %v4half
+         %26 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %ldexp_7fa13c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Ldexp %17 %21
+        %res = OpVariable %_ptr_Function_v4half Function %25
+         %13 = OpExtInst %v4half %16 Ldexp %18 %22
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %24
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %ldexp_7fa13c
+%vertex_main_inner = OpFunction %v4float None %26
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %ldexp_7fa13c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %30
+         %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
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %ldexp_7fa13c
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %ldexp_7fa13c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %36 = OpLabel
-         %37 = OpFunctionCall %void %ldexp_7fa13c
+         %38 = OpLabel
+         %39 = OpFunctionCall %void %ldexp_7fa13c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.wgsl
index 25b5d9d..9c2998f 100644
--- a/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/ldexp/7fa13c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn ldexp_7fa13c() {
-  var res : vec4<f16> = ldexp(vec4<f16>(f16()), vec4<i32>(1i));
+  var res : vec4<f16> = ldexp(vec4<f16>(1.0h), vec4<i32>(1i));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl
index 4306efe..61b3d2b 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl
@@ -25,7 +25,7 @@
 
 // fn length(vec<2, f16>) -> f16
 fn length_3f0e13() {
-  var res: f16 = length(vec2<f16>(f16()));
+  var res: f16 = length(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.dxc.hlsl
index 08660e8..aeb2c63 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void length_3f0e13() {
-  float16_t res = length((float16_t(0.0h)).xx);
+  float16_t res = length((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.glsl
index ff3bb99..d1738a3 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_3f0e13() {
-  float16_t res = length(f16vec2(0.0hf));
+  float16_t res = length(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void length_3f0e13() {
-  float16_t res = length(f16vec2(0.0hf));
+  float16_t res = length(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_3f0e13() {
-  float16_t res = length(f16vec2(0.0hf));
+  float16_t res = length(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.msl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.msl
index 2aadef9..82464e6 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void length_3f0e13() {
-  half res = length(half2(0.0h));
+  half res = length(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.spvasm
index 5809762..c026dd5 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %20 = OpConstantNull %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %length_3f0e13 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %20
-         %13 = OpExtInst %half %15 Length %17
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Length %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %length_3f0e13
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %length_3f0e13
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %length_3f0e13
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %length_3f0e13
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %length_3f0e13
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %length_3f0e13
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.wgsl
index d97f9c8..295b05e 100644
--- a/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/3f0e13.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn length_3f0e13() {
-  var res : f16 = length(vec2<f16>(f16()));
+  var res : f16 = length(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl
index be2dbf1..50a2ef1 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl
@@ -25,7 +25,7 @@
 
 // fn length(vec<4, f16>) -> f16
 fn length_5b1a9b() {
-  var res: f16 = length(vec4<f16>(f16()));
+  var res: f16 = length(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.dxc.hlsl
index efaee52..df13890 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void length_5b1a9b() {
-  float16_t res = length((float16_t(0.0h)).xxxx);
+  float16_t res = length((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.glsl
index 0fc5433..faca950 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_5b1a9b() {
-  float16_t res = length(f16vec4(0.0hf));
+  float16_t res = length(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void length_5b1a9b() {
-  float16_t res = length(f16vec4(0.0hf));
+  float16_t res = length(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_5b1a9b() {
-  float16_t res = length(f16vec4(0.0hf));
+  float16_t res = length(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.msl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.msl
index c1013ee..dff63ba 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void length_5b1a9b() {
-  half res = length(half4(0.0h));
+  half res = length(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.spvasm
index c112767..bdc9042 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %20 = OpConstantNull %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %length_5b1a9b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %20
-         %13 = OpExtInst %half %15 Length %17
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Length %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %length_5b1a9b
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %length_5b1a9b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %length_5b1a9b
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %length_5b1a9b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %length_5b1a9b
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %length_5b1a9b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.wgsl
index 526971a..e94fb3f 100644
--- a/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/5b1a9b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn length_5b1a9b() {
-  var res : f16 = length(vec4<f16>(f16()));
+  var res : f16 = length(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl
index a51f78a..cca9b19 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl
@@ -25,7 +25,7 @@
 
 // fn length(vec<3, f16>) -> f16
 fn length_ba16d6() {
-  var res: f16 = length(vec3<f16>(f16()));
+  var res: f16 = length(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.dxc.hlsl
index c0c7954..9cb7003 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void length_ba16d6() {
-  float16_t res = length((float16_t(0.0h)).xxx);
+  float16_t res = length((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.glsl
index 57c51de..676602a 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_ba16d6() {
-  float16_t res = length(f16vec3(0.0hf));
+  float16_t res = length(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void length_ba16d6() {
-  float16_t res = length(f16vec3(0.0hf));
+  float16_t res = length(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_ba16d6() {
-  float16_t res = length(f16vec3(0.0hf));
+  float16_t res = length(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.msl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.msl
index c5e5059..02c8d79 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void length_ba16d6() {
-  half res = length(half3(0.0h));
+  half res = length(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.spvasm
index 9cb2b45..bb6cac0 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_half = OpTypePointer Function %half
-         %20 = OpConstantNull %half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %length_ba16d6 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %20
-         %13 = OpExtInst %half %15 Length %17
+        %res = OpVariable %_ptr_Function_half Function %21
+         %13 = OpExtInst %half %15 Length %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %length_ba16d6
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %length_ba16d6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %length_ba16d6
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %length_ba16d6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %length_ba16d6
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %length_ba16d6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.wgsl
index ef23cb8..7c54ecb 100644
--- a/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/ba16d6.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn length_ba16d6() {
-  var res : f16 = length(vec3<f16>(f16()));
+  var res : f16 = length(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl b/test/tint/builtins/gen/literal/length/c158da.wgsl
index 70b692f..cde0e0c 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl
@@ -25,7 +25,7 @@
 
 // fn length(f16) -> f16
 fn length_c158da() {
-  var res: f16 = length(f16());
+  var res: f16 = length(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.dxc.hlsl
index 5b0e775..05771c2 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void length_c158da() {
-  float16_t res = length(float16_t(0.0h));
+  float16_t res = length(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.glsl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.glsl
index afc15b3..d60a08b 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_c158da() {
-  float16_t res = length(0.0hf);
+  float16_t res = length(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void length_c158da() {
-  float16_t res = length(0.0hf);
+  float16_t res = length(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void length_c158da() {
-  float16_t res = length(0.0hf);
+  float16_t res = length(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.msl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.msl
index f9f3a70..b1858e1 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void length_c158da() {
-  half res = fabs(0.0h);
+  half res = fabs(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.spvasm
index 8199018..ec976a1 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %length_c158da = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Length %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Length %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %length_c158da
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %length_c158da
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %length_c158da
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %length_c158da
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %length_c158da
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %length_c158da
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.wgsl
index 3cbfcfe..66e82b1 100644
--- a/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/length/c158da.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn length_c158da() {
-  var res : f16 = length(f16());
+  var res : f16 = length(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl
index 761a154..21cfca0 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl
@@ -25,7 +25,7 @@
 
 // fn log(vec<3, f16>) -> vec<3, f16>
 fn log_6ff86f() {
-  var res: vec3<f16> = log(vec3<f16>(f16()));
+  var res: vec3<f16> = log(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.dxc.hlsl
index b141371..8d17f97 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log_6ff86f() {
-  vector<float16_t, 3> res = log((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = log((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.glsl
index 2d6e06d..5efd1c3 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_6ff86f() {
-  f16vec3 res = log(f16vec3(0.0hf));
+  f16vec3 res = log(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log_6ff86f() {
-  f16vec3 res = log(f16vec3(0.0hf));
+  f16vec3 res = log(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_6ff86f() {
-  f16vec3 res = log(f16vec3(0.0hf));
+  f16vec3 res = log(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.msl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.msl
index ae29414..5b4c531 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log_6ff86f() {
-  half3 res = log(half3(0.0h));
+  half3 res = log(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.spvasm
index 51676f2..2579458 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %log_6ff86f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Log %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Log %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %log_6ff86f
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %log_6ff86f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %log_6ff86f
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %log_6ff86f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %log_6ff86f
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %log_6ff86f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.wgsl
index 9fbbe3e..856ac22 100644
--- a/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/6ff86f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log_6ff86f() {
-  var res : vec3<f16> = log(vec3<f16>(f16()));
+  var res : vec3<f16> = log(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl
index 0f6db81..82cf025 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl
@@ -25,7 +25,7 @@
 
 // fn log(vec<2, f16>) -> vec<2, f16>
 fn log_8f0e32() {
-  var res: vec2<f16> = log(vec2<f16>(f16()));
+  var res: vec2<f16> = log(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.dxc.hlsl
index c73463a..eebe64c 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log_8f0e32() {
-  vector<float16_t, 2> res = log((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = log((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.glsl
index 923ec6a..b75bf0d 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_8f0e32() {
-  f16vec2 res = log(f16vec2(0.0hf));
+  f16vec2 res = log(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log_8f0e32() {
-  f16vec2 res = log(f16vec2(0.0hf));
+  f16vec2 res = log(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_8f0e32() {
-  f16vec2 res = log(f16vec2(0.0hf));
+  f16vec2 res = log(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.msl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.msl
index ecced22..2d48740 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log_8f0e32() {
-  half2 res = log(half2(0.0h));
+  half2 res = log(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.spvasm
index 7ff10aa..2a6e432 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %log_8f0e32 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Log %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Log %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %log_8f0e32
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %log_8f0e32
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %log_8f0e32
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %log_8f0e32
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %log_8f0e32
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %log_8f0e32
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.wgsl
index e2a7276..d483486 100644
--- a/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/8f0e32.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log_8f0e32() {
-  var res : vec2<f16> = log(vec2<f16>(f16()));
+  var res : vec2<f16> = log(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl
index 659b08c..905c963 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl
@@ -25,7 +25,7 @@
 
 // fn log(f16) -> f16
 fn log_c9f489() {
-  var res: f16 = log(f16());
+  var res: f16 = log(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.dxc.hlsl
index eb5150b..358ac77 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log_c9f489() {
-  float16_t res = log(float16_t(0.0h));
+  float16_t res = log(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.glsl
index 62eeaa9..2ae51ee 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_c9f489() {
-  float16_t res = log(0.0hf);
+  float16_t res = log(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log_c9f489() {
-  float16_t res = log(0.0hf);
+  float16_t res = log(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_c9f489() {
-  float16_t res = log(0.0hf);
+  float16_t res = log(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.msl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.msl
index 65bd95a..cae5ee0 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log_c9f489() {
-  half res = log(0.0h);
+  half res = log(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.spvasm
index 304b6ec..ddf328c 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %log_c9f489 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Log %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Log %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %log_c9f489
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %log_c9f489
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %log_c9f489
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %log_c9f489
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %log_c9f489
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %log_c9f489
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.wgsl
index 6279a42..b3b61f4 100644
--- a/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/c9f489.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log_c9f489() {
-  var res : f16 = log(f16());
+  var res : f16 = log(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl
index 4482675..92cf108 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl
@@ -25,7 +25,7 @@
 
 // fn log(vec<4, f16>) -> vec<4, f16>
 fn log_cdbdc1() {
-  var res: vec4<f16> = log(vec4<f16>(f16()));
+  var res: vec4<f16> = log(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.dxc.hlsl
index 754e290..0ce91e5 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log_cdbdc1() {
-  vector<float16_t, 4> res = log((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = log((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.glsl
index 41e6eab..272fe40 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_cdbdc1() {
-  f16vec4 res = log(f16vec4(0.0hf));
+  f16vec4 res = log(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log_cdbdc1() {
-  f16vec4 res = log(f16vec4(0.0hf));
+  f16vec4 res = log(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log_cdbdc1() {
-  f16vec4 res = log(f16vec4(0.0hf));
+  f16vec4 res = log(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.msl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.msl
index 77806e8..7463beb 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log_cdbdc1() {
-  half4 res = log(half4(0.0h));
+  half4 res = log(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.spvasm
index 6eea354..a8a48f1 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %log_cdbdc1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Log %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Log %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %log_cdbdc1
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %log_cdbdc1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %log_cdbdc1
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %log_cdbdc1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %log_cdbdc1
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %log_cdbdc1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.wgsl
index 645ccf9..dbe96d2 100644
--- a/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log/cdbdc1.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log_cdbdc1() {
-  var res : vec4<f16> = log(vec4<f16>(f16()));
+  var res : vec4<f16> = log(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl
index 493fbb2..ae09148 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl
@@ -25,7 +25,7 @@
 
 // fn log2(vec<3, f16>) -> vec<3, f16>
 fn log2_38b478() {
-  var res: vec3<f16> = log2(vec3<f16>(f16()));
+  var res: vec3<f16> = log2(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.dxc.hlsl
index 029b567..487dd6f 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log2_38b478() {
-  vector<float16_t, 3> res = log2((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = log2((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.glsl
index e0f07c6..a48af86 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_38b478() {
-  f16vec3 res = log2(f16vec3(0.0hf));
+  f16vec3 res = log2(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log2_38b478() {
-  f16vec3 res = log2(f16vec3(0.0hf));
+  f16vec3 res = log2(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_38b478() {
-  f16vec3 res = log2(f16vec3(0.0hf));
+  f16vec3 res = log2(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.msl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.msl
index a36b81f..8a6fb00 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log2_38b478() {
-  half3 res = log2(half3(0.0h));
+  half3 res = log2(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.spvasm
index de97fed..e150bb5 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %log2_38b478 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Log2 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Log2 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %log2_38b478
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %log2_38b478
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %log2_38b478
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %log2_38b478
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %log2_38b478
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %log2_38b478
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.wgsl
index 9dee10e..993448c 100644
--- a/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/38b478.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log2_38b478() {
-  var res : vec3<f16> = log2(vec3<f16>(f16()));
+  var res : vec3<f16> = log2(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl b/test/tint/builtins/gen/literal/log2/776088.wgsl
index 3843754..4ee097b 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl
@@ -25,7 +25,7 @@
 
 // fn log2(vec<4, f16>) -> vec<4, f16>
 fn log2_776088() {
-  var res: vec4<f16> = log2(vec4<f16>(f16()));
+  var res: vec4<f16> = log2(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.dxc.hlsl
index 2a3af8f..70fb5d8 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log2_776088() {
-  vector<float16_t, 4> res = log2((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = log2((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.glsl
index ebf4aa1..2024e28 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_776088() {
-  f16vec4 res = log2(f16vec4(0.0hf));
+  f16vec4 res = log2(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log2_776088() {
-  f16vec4 res = log2(f16vec4(0.0hf));
+  f16vec4 res = log2(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_776088() {
-  f16vec4 res = log2(f16vec4(0.0hf));
+  f16vec4 res = log2(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.msl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.msl
index eae4b4d..62e73b1 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log2_776088() {
-  half4 res = log2(half4(0.0h));
+  half4 res = log2(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.spvasm
index 47d547b..aa2534c2 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %log2_776088 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Log2 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Log2 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %log2_776088
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %log2_776088
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %log2_776088
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %log2_776088
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %log2_776088
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %log2_776088
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.wgsl
index 87971b4..252f507 100644
--- a/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/776088.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log2_776088() {
-  var res : vec4<f16> = log2(vec4<f16>(f16()));
+  var res : vec4<f16> = log2(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl
index 669e8ca..c330372 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl
@@ -25,7 +25,7 @@
 
 // fn log2(f16) -> f16
 fn log2_8c10b3() {
-  var res: f16 = log2(f16());
+  var res: f16 = log2(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.dxc.hlsl
index 9edb6af..6049929 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log2_8c10b3() {
-  float16_t res = log2(float16_t(0.0h));
+  float16_t res = log2(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.glsl
index 7b9deb9..92d34db 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_8c10b3() {
-  float16_t res = log2(0.0hf);
+  float16_t res = log2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log2_8c10b3() {
-  float16_t res = log2(0.0hf);
+  float16_t res = log2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_8c10b3() {
-  float16_t res = log2(0.0hf);
+  float16_t res = log2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.msl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.msl
index 0ea021a..55342a8 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log2_8c10b3() {
-  half res = log2(0.0h);
+  half res = log2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.spvasm
index f269f68..121842e 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %log2_8c10b3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Log2 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Log2 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %log2_8c10b3
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %log2_8c10b3
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %log2_8c10b3
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %log2_8c10b3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %log2_8c10b3
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %log2_8c10b3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.wgsl
index 6de59ec..f92de71 100644
--- a/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/8c10b3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log2_8c10b3() {
-  var res : f16 = log2(f16());
+  var res : f16 = log2(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl
index 9f7c93a..09b40fd 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl
@@ -25,7 +25,7 @@
 
 // fn log2(vec<2, f16>) -> vec<2, f16>
 fn log2_fb9f0b() {
-  var res: vec2<f16> = log2(vec2<f16>(f16()));
+  var res: vec2<f16> = log2(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.dxc.hlsl
index 1614719..86a9e68 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void log2_fb9f0b() {
-  vector<float16_t, 2> res = log2((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = log2((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.glsl
index 73abe1d..b768f1b 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_fb9f0b() {
-  f16vec2 res = log2(f16vec2(0.0hf));
+  f16vec2 res = log2(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void log2_fb9f0b() {
-  f16vec2 res = log2(f16vec2(0.0hf));
+  f16vec2 res = log2(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void log2_fb9f0b() {
-  f16vec2 res = log2(f16vec2(0.0hf));
+  f16vec2 res = log2(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.msl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.msl
index 0532f4d..bd5984f 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void log2_fb9f0b() {
-  half2 res = log2(half2(0.0h));
+  half2 res = log2(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.spvasm
index 2dfd8bd..f68a857 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %log2_fb9f0b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Log2 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Log2 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %log2_fb9f0b
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %log2_fb9f0b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %log2_fb9f0b
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %log2_fb9f0b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %log2_fb9f0b
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %log2_fb9f0b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.wgsl
index 4fdced8..1967a3f 100644
--- a/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/log2/fb9f0b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn log2_fb9f0b() {
-  var res : vec2<f16> = log2(vec2<f16>(f16()));
+  var res : vec2<f16> = log2(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl
index 1a46cb5..6166980 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl
@@ -25,7 +25,7 @@
 
 // fn max(f16, f16) -> f16
 fn max_111ac0() {
-  var res: f16 = max(f16(), f16());
+  var res: f16 = max(1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.dxc.hlsl
index 972d568..c9db3e2 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void max_111ac0() {
-  float16_t res = max(float16_t(0.0h), float16_t(0.0h));
+  float16_t res = max(float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.glsl
index b0864de..943c60f 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_111ac0() {
-  float16_t res = max(0.0hf, 0.0hf);
+  float16_t res = max(1.0hf, 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void max_111ac0() {
-  float16_t res = max(0.0hf, 0.0hf);
+  float16_t res = max(1.0hf, 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_111ac0() {
-  float16_t res = max(0.0hf, 0.0hf);
+  float16_t res = max(1.0hf, 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.msl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.msl
index ccbcac5..69dd931 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void max_111ac0() {
-  half res = fmax(0.0h, 0.0h);
+  half res = fmax(1.0h, 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.spvasm
index b3c0805..e04ad04 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %max_111ac0 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 NMax %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 NMax %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %max_111ac0
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %max_111ac0
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %max_111ac0
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %max_111ac0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %max_111ac0
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %max_111ac0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.wgsl
index 86e79dd..831d7f5 100644
--- a/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/111ac0.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn max_111ac0() {
-  var res : f16 = max(f16(), f16());
+  var res : f16 = max(1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl b/test/tint/builtins/gen/literal/max/34956e.wgsl
index 2b22a89..39bbadc 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl
@@ -25,7 +25,7 @@
 
 // fn max(vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn max_34956e() {
-  var res: vec2<f16> = max(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = max(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.dxc.hlsl
index 5ecb9bd..dd144b0 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void max_34956e() {
-  vector<float16_t, 2> res = max((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = max((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.glsl
index c9fb73c..0679c18 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_34956e() {
-  f16vec2 res = max(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = max(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void max_34956e() {
-  f16vec2 res = max(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = max(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_34956e() {
-  f16vec2 res = max(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = max(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.msl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.msl
index 4f65540..17fec33 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void max_34956e() {
-  half2 res = fmax(half2(0.0h), half2(0.0h));
+  half2 res = fmax(half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.spvasm
index e8003c2..deeb7ae 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %max_34956e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 NMax %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 NMax %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %max_34956e
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %max_34956e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %max_34956e
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %max_34956e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %max_34956e
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %max_34956e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.wgsl
index 45ee030..59c80c2 100644
--- a/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/34956e.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn max_34956e() {
-  var res : vec2<f16> = max(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = max(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl b/test/tint/builtins/gen/literal/max/445169.wgsl
index 8752c1e..50d4b67 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl
@@ -25,7 +25,7 @@
 
 // fn max(vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn max_445169() {
-  var res: vec3<f16> = max(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = max(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.dxc.hlsl
index a291c4c..98fa00e 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void max_445169() {
-  vector<float16_t, 3> res = max((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = max((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.glsl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.glsl
index dd8ccdf..6afef2a 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_445169() {
-  f16vec3 res = max(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = max(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void max_445169() {
-  f16vec3 res = max(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = max(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_445169() {
-  f16vec3 res = max(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = max(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.msl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.msl
index 5bd10e9..af560e2 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void max_445169() {
-  half3 res = fmax(half3(0.0h), half3(0.0h));
+  half3 res = fmax(half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.spvasm
index 3e1a6af..71ed2c5 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %max_445169 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 NMax %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 NMax %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %max_445169
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %max_445169
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %max_445169
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %max_445169
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %max_445169
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %max_445169
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.wgsl
index 4e1c567..738ca7d 100644
--- a/test/tint/builtins/gen/literal/max/445169.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/445169.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn max_445169() {
-  var res : vec3<f16> = max(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = max(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl
index fd8638a..f5ef502 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl
@@ -25,7 +25,7 @@
 
 // fn max(vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn max_e14f2b() {
-  var res: vec4<f16> = max(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = max(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.dxc.hlsl
index 5f79027..fe6838d 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void max_e14f2b() {
-  vector<float16_t, 4> res = max((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = max((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.glsl
index f4f78bb..6c09089 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_e14f2b() {
-  f16vec4 res = max(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = max(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void max_e14f2b() {
-  f16vec4 res = max(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = max(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void max_e14f2b() {
-  f16vec4 res = max(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = max(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.msl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.msl
index 3620c05..549bcd9 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void max_e14f2b() {
-  half4 res = fmax(half4(0.0h), half4(0.0h));
+  half4 res = fmax(half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.spvasm
index 6198104..704cc68 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %max_e14f2b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 NMax %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 NMax %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %max_e14f2b
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %max_e14f2b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %max_e14f2b
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %max_e14f2b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %max_e14f2b
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %max_e14f2b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.wgsl
index e0d214c..c15e410 100644
--- a/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/max/e14f2b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn max_e14f2b() {
-  var res : vec4<f16> = max(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = max(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl
index f8cf0d3..4b6d299 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl
@@ -25,7 +25,7 @@
 
 // fn min(vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn min_7c710a() {
-  var res: vec4<f16> = min(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = min(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.dxc.hlsl
index b065ca8..691e844 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void min_7c710a() {
-  vector<float16_t, 4> res = min((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = min((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.glsl
index f794845..f6a2b3f 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_7c710a() {
-  f16vec4 res = min(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = min(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void min_7c710a() {
-  f16vec4 res = min(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = min(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_7c710a() {
-  f16vec4 res = min(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = min(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.msl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.msl
index 7805826..37a0096 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void min_7c710a() {
-  half4 res = fmin(half4(0.0h), half4(0.0h));
+  half4 res = fmin(half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.spvasm
index 60cd2d2..d696b24 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %min_7c710a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 NMin %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 NMin %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %min_7c710a
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %min_7c710a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %min_7c710a
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %min_7c710a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %min_7c710a
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %min_7c710a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.wgsl
index ee18161..adefdcf 100644
--- a/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/7c710a.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn min_7c710a() {
-  var res : vec4<f16> = min(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = min(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl
index 568017c..767c17e 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl
@@ -25,7 +25,7 @@
 
 // fn min(vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn min_ab0acd() {
-  var res: vec3<f16> = min(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = min(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.dxc.hlsl
index 839e6b7..dbc2823 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void min_ab0acd() {
-  vector<float16_t, 3> res = min((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = min((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.glsl
index bc985d7..7924ccd 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_ab0acd() {
-  f16vec3 res = min(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = min(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void min_ab0acd() {
-  f16vec3 res = min(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = min(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_ab0acd() {
-  f16vec3 res = min(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = min(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.msl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.msl
index cbac2a3..5093e84 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void min_ab0acd() {
-  half3 res = fmin(half3(0.0h), half3(0.0h));
+  half3 res = fmin(half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.spvasm
index 42feca5..59059f1 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %min_ab0acd = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 NMin %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 NMin %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %min_ab0acd
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %min_ab0acd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %min_ab0acd
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %min_ab0acd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %min_ab0acd
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %min_ab0acd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.wgsl
index 01c09ea..2ad7141 100644
--- a/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/ab0acd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn min_ab0acd() {
-  var res : vec3<f16> = min(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = min(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl
index 4222ad4..e56adbe 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl
@@ -25,7 +25,7 @@
 
 // fn min(f16, f16) -> f16
 fn min_ac84d6() {
-  var res: f16 = min(f16(), f16());
+  var res: f16 = min(1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.dxc.hlsl
index 3d05db9..e32d65a 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void min_ac84d6() {
-  float16_t res = min(float16_t(0.0h), float16_t(0.0h));
+  float16_t res = min(float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.glsl
index b79ac60..51fea2f 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_ac84d6() {
-  float16_t res = min(0.0hf, 0.0hf);
+  float16_t res = min(1.0hf, 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void min_ac84d6() {
-  float16_t res = min(0.0hf, 0.0hf);
+  float16_t res = min(1.0hf, 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_ac84d6() {
-  float16_t res = min(0.0hf, 0.0hf);
+  float16_t res = min(1.0hf, 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.msl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.msl
index d267417..f14256e 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void min_ac84d6() {
-  half res = fmin(0.0h, 0.0h);
+  half res = fmin(1.0h, 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.spvasm
index e76e5c3..a951b59 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %min_ac84d6 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 NMin %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 NMin %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %min_ac84d6
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %min_ac84d6
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %min_ac84d6
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %min_ac84d6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %min_ac84d6
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %min_ac84d6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.wgsl
index 9e33bab..317af36 100644
--- a/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/ac84d6.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn min_ac84d6() {
-  var res : f16 = min(f16(), f16());
+  var res : f16 = min(1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl
index b769097..0b6c927 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl
@@ -25,7 +25,7 @@
 
 // fn min(vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn min_e780f9() {
-  var res: vec2<f16> = min(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = min(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.dxc.hlsl
index f9c75ce..4698c10 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void min_e780f9() {
-  vector<float16_t, 2> res = min((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = min((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.glsl
index 85e7175..0fadb10 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_e780f9() {
-  f16vec2 res = min(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = min(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void min_e780f9() {
-  f16vec2 res = min(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = min(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void min_e780f9() {
-  f16vec2 res = min(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = min(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.msl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.msl
index 675ed30..6cfd466 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void min_e780f9() {
-  half2 res = fmin(half2(0.0h), half2(0.0h));
+  half2 res = fmin(half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.spvasm
index 45dd579..e004d7d 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %min_e780f9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 NMin %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 NMin %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %min_e780f9
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %min_e780f9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %min_e780f9
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %min_e780f9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %min_e780f9
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %min_e780f9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.wgsl
index 6da42f2..4b146a5 100644
--- a/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/min/e780f9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn min_e780f9() {
-  var res : vec2<f16> = min(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = min(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl
index 66ba786..336f36d 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(f16, f16, f16) -> f16
 fn mix_38cbbb() {
-  var res: f16 = mix(f16(), f16(), f16());
+  var res: f16 = mix(1.h, 1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.dxc.hlsl
index f658161..fe8cb23 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_38cbbb() {
-  float16_t res = lerp(float16_t(0.0h), float16_t(0.0h), float16_t(0.0h));
+  float16_t res = lerp(float16_t(1.0h), float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.glsl
index 51e98af..b2c39b0 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_38cbbb() {
-  float16_t res = mix(0.0hf, 0.0hf, 0.0hf);
+  float16_t res = mix(1.0hf, 1.0hf, 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_38cbbb() {
-  float16_t res = mix(0.0hf, 0.0hf, 0.0hf);
+  float16_t res = mix(1.0hf, 1.0hf, 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_38cbbb() {
-  float16_t res = mix(0.0hf, 0.0hf, 0.0hf);
+  float16_t res = mix(1.0hf, 1.0hf, 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.msl
index 57e66f3..877a6d1 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_38cbbb() {
-  half res = mix(0.0h, 0.0h, 0.0h);
+  half res = mix(1.0h, 1.0h, 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.spvasm
index cbd032d..e54008e 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_38cbbb = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 FMix %16 %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 FMix %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %mix_38cbbb
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %mix_38cbbb
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %mix_38cbbb
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %mix_38cbbb
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %mix_38cbbb
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %mix_38cbbb
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.wgsl
index 383a567..b4d4b19 100644
--- a/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/38cbbb.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_38cbbb() {
-  var res : f16 = mix(f16(), f16(), f16());
+  var res : f16 = mix(1.0h, 1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl
index 73b7505..3e9338d 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(vec<3, f16>, vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn mix_63f2fd() {
-  var res: vec3<f16> = mix(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = mix(vec3<f16>(1.h), vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.dxc.hlsl
index 3729fef..038d87a 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_63f2fd() {
-  vector<float16_t, 3> res = lerp((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = lerp((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.glsl
index e51235b..0888f63 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_63f2fd() {
-  f16vec3 res = mix(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = mix(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_63f2fd() {
-  f16vec3 res = mix(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = mix(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_63f2fd() {
-  f16vec3 res = mix(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = mix(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.msl
index 8a9ca6f..4f982d4 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_63f2fd() {
-  half3 res = mix(half3(0.0h), half3(0.0h), half3(0.0h));
+  half3 res = mix(half3(1.0h), half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.spvasm
index 85d9a38..ea02f00 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_63f2fd = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 FMix %17 %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 FMix %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %mix_63f2fd
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %mix_63f2fd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %mix_63f2fd
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %mix_63f2fd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %mix_63f2fd
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %mix_63f2fd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.wgsl
index 8aa39e8..bbf29ed 100644
--- a/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/63f2fd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_63f2fd() {
-  var res : vec3<f16> = mix(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = mix(vec3<f16>(1.0h), vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl
index 3c89b03..e8a4274 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(vec<2, f16>, vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn mix_98ee3e() {
-  var res: vec2<f16> = mix(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = mix(vec2<f16>(1.h), vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.dxc.hlsl
index 2cc67ba..b069843 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_98ee3e() {
-  vector<float16_t, 2> res = lerp((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = lerp((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.glsl
index 977312c..afc4ed8 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_98ee3e() {
-  f16vec2 res = mix(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = mix(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_98ee3e() {
-  f16vec2 res = mix(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = mix(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_98ee3e() {
-  f16vec2 res = mix(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = mix(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.msl
index 4f98b7a..f7c0dab 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_98ee3e() {
-  half2 res = mix(half2(0.0h), half2(0.0h), half2(0.0h));
+  half2 res = mix(half2(1.0h), half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.spvasm
index 47c734a..6e07580 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_98ee3e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 FMix %17 %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 FMix %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %mix_98ee3e
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %mix_98ee3e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %mix_98ee3e
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %mix_98ee3e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %mix_98ee3e
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %mix_98ee3e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.wgsl
index bb4929d..c159cdb 100644
--- a/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/98ee3e.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_98ee3e() {
-  var res : vec2<f16> = mix(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = mix(vec2<f16>(1.0h), vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl
index 21231ef..5b83bcd 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(vec<3, f16>, vec<3, f16>, f16) -> vec<3, f16>
 fn mix_c1aec6() {
-  var res: vec3<f16> = mix(vec3<f16>(f16()), vec3<f16>(f16()), f16());
+  var res: vec3<f16> = mix(vec3<f16>(1.h), vec3<f16>(1.h), 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.dxc.hlsl
index 3463407..70e51cd 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_c1aec6() {
-  vector<float16_t, 3> res = lerp((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, float16_t(0.0h));
+  vector<float16_t, 3> res = lerp((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.glsl
index 8411e25..62f28cb 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_c1aec6() {
-  f16vec3 res = mix(f16vec3(0.0hf), f16vec3(0.0hf), 0.0hf);
+  f16vec3 res = mix(f16vec3(1.0hf), f16vec3(1.0hf), 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_c1aec6() {
-  f16vec3 res = mix(f16vec3(0.0hf), f16vec3(0.0hf), 0.0hf);
+  f16vec3 res = mix(f16vec3(1.0hf), f16vec3(1.0hf), 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_c1aec6() {
-  f16vec3 res = mix(f16vec3(0.0hf), f16vec3(0.0hf), 0.0hf);
+  f16vec3 res = mix(f16vec3(1.0hf), f16vec3(1.0hf), 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.msl
index a8285ba..96b23d1 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_c1aec6() {
-  half3 res = mix(half3(0.0h), half3(0.0h), 0.0h);
+  half3 res = mix(half3(1.0h), half3(1.0h), 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.spvasm
index 7b6a048..a69dc54 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,39 +37,40 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %23 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_c1aec6 = OpFunction %void None %9
          %12 = OpLabel
-         %19 = OpVariable %_ptr_Function_v3half Function %17
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %21 = OpCompositeConstruct %v3half %18 %18 %18
-         %13 = OpExtInst %v3half %16 FMix %17 %17 %21
+         %19 = OpVariable %_ptr_Function_v3half Function %21
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %22 = OpCompositeConstruct %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %13 = OpExtInst %v3half %16 FMix %18 %18 %22
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %mix_c1aec6
+%vertex_main_inner = OpFunction %v4float None %24
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %mix_c1aec6
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %29
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %30
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %mix_c1aec6
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %mix_c1aec6
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %mix_c1aec6
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %mix_c1aec6
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.wgsl
index 6665965..a3e11f3 100644
--- a/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/c1aec6.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_c1aec6() {
-  var res : vec3<f16> = mix(vec3<f16>(f16()), vec3<f16>(f16()), f16());
+  var res : vec3<f16> = mix(vec3<f16>(1.0h), vec3<f16>(1.0h), 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl
index 6adeecb..454dc07 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(vec<2, f16>, vec<2, f16>, f16) -> vec<2, f16>
 fn mix_e46a83() {
-  var res: vec2<f16> = mix(vec2<f16>(f16()), vec2<f16>(f16()), f16());
+  var res: vec2<f16> = mix(vec2<f16>(1.h), vec2<f16>(1.h), 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.dxc.hlsl
index fa0f9c2..9869a22 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_e46a83() {
-  vector<float16_t, 2> res = lerp((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, float16_t(0.0h));
+  vector<float16_t, 2> res = lerp((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.glsl
index bae9e6d..077db7e 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_e46a83() {
-  f16vec2 res = mix(f16vec2(0.0hf), f16vec2(0.0hf), 0.0hf);
+  f16vec2 res = mix(f16vec2(1.0hf), f16vec2(1.0hf), 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_e46a83() {
-  f16vec2 res = mix(f16vec2(0.0hf), f16vec2(0.0hf), 0.0hf);
+  f16vec2 res = mix(f16vec2(1.0hf), f16vec2(1.0hf), 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_e46a83() {
-  f16vec2 res = mix(f16vec2(0.0hf), f16vec2(0.0hf), 0.0hf);
+  f16vec2 res = mix(f16vec2(1.0hf), f16vec2(1.0hf), 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.msl
index 15babbe..5cd4eea 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_e46a83() {
-  half2 res = mix(half2(0.0h), half2(0.0h), 0.0h);
+  half2 res = mix(half2(1.0h), half2(1.0h), 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.spvasm
index 8dfbb2c..48c4d38 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,39 +37,40 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %23 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_e46a83 = OpFunction %void None %9
          %12 = OpLabel
-         %19 = OpVariable %_ptr_Function_v2half Function %17
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %21 = OpCompositeConstruct %v2half %18 %18
-         %13 = OpExtInst %v2half %16 FMix %17 %17 %21
+         %19 = OpVariable %_ptr_Function_v2half Function %21
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %22 = OpCompositeConstruct %v2half %half_0x1p_0 %half_0x1p_0
+         %13 = OpExtInst %v2half %16 FMix %18 %18 %22
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %mix_e46a83
+%vertex_main_inner = OpFunction %v4float None %24
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %mix_e46a83
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %29
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %30
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %mix_e46a83
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %mix_e46a83
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %mix_e46a83
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %mix_e46a83
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.wgsl
index 44b19f2..bc20255 100644
--- a/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/e46a83.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_e46a83() {
-  var res : vec2<f16> = mix(vec2<f16>(f16()), vec2<f16>(f16()), f16());
+  var res : vec2<f16> = mix(vec2<f16>(1.0h), vec2<f16>(1.0h), 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl
index 7bf17b5..1f93f66 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(vec<4, f16>, vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn mix_ee2468() {
-  var res: vec4<f16> = mix(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = mix(vec4<f16>(1.h), vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.dxc.hlsl
index daaa4163..d3b7179 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_ee2468() {
-  vector<float16_t, 4> res = lerp((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = lerp((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.glsl
index 16c94d2..89f0516 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_ee2468() {
-  f16vec4 res = mix(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = mix(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_ee2468() {
-  f16vec4 res = mix(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = mix(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_ee2468() {
-  f16vec4 res = mix(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = mix(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.msl
index 2eabc89..6edc032 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_ee2468() {
-  half4 res = mix(half4(0.0h), half4(0.0h), half4(0.0h));
+  half4 res = mix(half4(1.0h), half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.spvasm
index 8ff66bb..86ff608 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_ee2468 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 FMix %17 %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 FMix %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %mix_ee2468
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %mix_ee2468
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %mix_ee2468
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %mix_ee2468
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %mix_ee2468
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %mix_ee2468
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.wgsl
index 15e8531..2e3a3b8 100644
--- a/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/ee2468.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_ee2468() {
-  var res : vec4<f16> = mix(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = mix(vec4<f16>(1.0h), vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl
index 5ff2c85..99c4e02 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl
@@ -25,7 +25,7 @@
 
 // fn mix(vec<4, f16>, vec<4, f16>, f16) -> vec<4, f16>
 fn mix_f1a543() {
-  var res: vec4<f16> = mix(vec4<f16>(f16()), vec4<f16>(f16()), f16());
+  var res: vec4<f16> = mix(vec4<f16>(1.h), vec4<f16>(1.h), 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.dxc.hlsl
index 0701d56..706583d 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void mix_f1a543() {
-  vector<float16_t, 4> res = lerp((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, float16_t(0.0h));
+  vector<float16_t, 4> res = lerp((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.glsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.glsl
index 730990d..d3bfff0 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_f1a543() {
-  f16vec4 res = mix(f16vec4(0.0hf), f16vec4(0.0hf), 0.0hf);
+  f16vec4 res = mix(f16vec4(1.0hf), f16vec4(1.0hf), 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void mix_f1a543() {
-  f16vec4 res = mix(f16vec4(0.0hf), f16vec4(0.0hf), 0.0hf);
+  f16vec4 res = mix(f16vec4(1.0hf), f16vec4(1.0hf), 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void mix_f1a543() {
-  f16vec4 res = mix(f16vec4(0.0hf), f16vec4(0.0hf), 0.0hf);
+  f16vec4 res = mix(f16vec4(1.0hf), f16vec4(1.0hf), 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.msl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.msl
index 823de59..6ef592f 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void mix_f1a543() {
-  half4 res = mix(half4(0.0h), half4(0.0h), 0.0h);
+  half4 res = mix(half4(1.0h), half4(1.0h), 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.spvasm
index 7f1efc5..7bbe369 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 38
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,39 +37,40 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %23 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %24 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %mix_f1a543 = OpFunction %void None %9
          %12 = OpLabel
-         %19 = OpVariable %_ptr_Function_v4half Function %17
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %21 = OpCompositeConstruct %v4half %18 %18 %18 %18
-         %13 = OpExtInst %v4half %16 FMix %17 %17 %21
+         %19 = OpVariable %_ptr_Function_v4half Function %21
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %22 = OpCompositeConstruct %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %13 = OpExtInst %v4half %16 FMix %18 %18 %22
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %mix_f1a543
+%vertex_main_inner = OpFunction %v4float None %24
+         %26 = OpLabel
+         %27 = OpFunctionCall %void %mix_f1a543
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %29
+         %29 = OpLabel
+         %30 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %30
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %mix_f1a543
+         %33 = OpLabel
+         %34 = OpFunctionCall %void %mix_f1a543
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %mix_f1a543
+         %36 = OpLabel
+         %37 = OpFunctionCall %void %mix_f1a543
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.wgsl
index c42b7da..90cd459 100644
--- a/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/mix/f1a543.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn mix_f1a543() {
-  var res : vec4<f16> = mix(vec4<f16>(f16()), vec4<f16>(f16()), f16());
+  var res : vec4<f16> = mix(vec4<f16>(1.0h), vec4<f16>(1.0h), 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl
index 236e165..fe0b656 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl
@@ -25,7 +25,7 @@
 
 // fn modf(vec<3, f16>) -> __modf_result_vec<3, f16>
 fn modf_45005f() {
-  var res = modf(vec3<f16>(f16()));
+  var res = modf(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.dxc.hlsl
index 30ed6b2..e4a0033 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.dxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 void modf_45005f() {
-  modf_result_vec3_f16 res = tint_modf((float16_t(0.0h)).xxx);
+  modf_result_vec3_f16 res = tint_modf((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.glsl
index c2ef9d1..d402eda 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void modf_45005f() {
-  modf_result_vec3_f16 res = tint_modf(f16vec3(0.0hf));
+  modf_result_vec3_f16 res = tint_modf(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void modf_45005f() {
-  modf_result_vec3_f16 res = tint_modf(f16vec3(0.0hf));
+  modf_result_vec3_f16 res = tint_modf(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void modf_45005f() {
-  modf_result_vec3_f16 res = tint_modf(f16vec3(0.0hf));
+  modf_result_vec3_f16 res = tint_modf(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.msl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.msl
index b07ab06..a3071d4 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void modf_45005f() {
-  modf_result_vec3_f16 res = tint_modf(half3(0.0h));
+  modf_result_vec3_f16 res = tint_modf(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.spvasm
index 1e06f7a..63c4bd4 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -43,37 +43,38 @@
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
 %__modf_result_vec3_f16 = OpTypeStruct %v3half %v3half
-         %18 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %19 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function___modf_result_vec3_f16 = OpTypePointer Function %__modf_result_vec3_f16
-         %21 = OpConstantNull %__modf_result_vec3_f16
-         %22 = OpTypeFunction %v4float
+         %22 = OpConstantNull %__modf_result_vec3_f16
+         %23 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %modf_45005f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function___modf_result_vec3_f16 Function %21
-         %13 = OpExtInst %__modf_result_vec3_f16 %17 ModfStruct %18
+        %res = OpVariable %_ptr_Function___modf_result_vec3_f16 Function %22
+         %13 = OpExtInst %__modf_result_vec3_f16 %17 ModfStruct %19
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %22
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %modf_45005f
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %modf_45005f
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %28
+         %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
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_45005f
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %modf_45005f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_45005f
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %modf_45005f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.wgsl
index 57f4b3b..43f497e 100644
--- a/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/45005f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn modf_45005f() {
-  var res = modf(vec3<f16>(f16()));
+  var res = modf(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl
index 71e2638..591a299 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl
@@ -25,7 +25,7 @@
 
 // fn modf(f16) -> __modf_result<f16>
 fn modf_8dbbbf() {
-  var res = modf(f16());
+  var res = modf(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.dxc.hlsl
index 802fe2a..c84d408 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.dxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 void modf_8dbbbf() {
-  modf_result_f16 res = tint_modf(float16_t(0.0h));
+  modf_result_f16 res = tint_modf(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.glsl
index f949198..f9757b9 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void modf_8dbbbf() {
-  modf_result_f16 res = tint_modf(0.0hf);
+  modf_result_f16 res = tint_modf(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void modf_8dbbbf() {
-  modf_result_f16 res = tint_modf(0.0hf);
+  modf_result_f16 res = tint_modf(1.0hf);
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void modf_8dbbbf() {
-  modf_result_f16 res = tint_modf(0.0hf);
+  modf_result_f16 res = tint_modf(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.msl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.msl
index f0a8d58..e9472e7 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void modf_8dbbbf() {
-  modf_result_f16 res = tint_modf(0.0h);
+  modf_result_f16 res = tint_modf(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.spvasm
index 53162e3..ebb1132 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.spvasm
@@ -42,7 +42,7 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
 %__modf_result_f16 = OpTypeStruct %half %half
-         %17 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function___modf_result_f16 = OpTypePointer Function %__modf_result_f16
          %20 = OpConstantNull %__modf_result_f16
          %21 = OpTypeFunction %v4float
@@ -50,7 +50,7 @@
 %modf_8dbbbf = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function___modf_result_f16 Function %20
-         %13 = OpExtInst %__modf_result_f16 %16 ModfStruct %17
+         %13 = OpExtInst %__modf_result_f16 %16 ModfStruct %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.wgsl
index 2ab39a6..c3619a7 100644
--- a/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/8dbbbf.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn modf_8dbbbf() {
-  var res = modf(f16());
+  var res = modf(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl b/test/tint/builtins/gen/literal/modf/995934.wgsl
index ef2c6ae..bcb6006 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl
@@ -25,7 +25,7 @@
 
 // fn modf(vec<4, f16>) -> __modf_result_vec<4, f16>
 fn modf_995934() {
-  var res = modf(vec4<f16>(f16()));
+  var res = modf(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.dxc.hlsl
index d1b1051..24c71de 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.dxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 void modf_995934() {
-  modf_result_vec4_f16 res = tint_modf((float16_t(0.0h)).xxxx);
+  modf_result_vec4_f16 res = tint_modf((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.glsl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.glsl
index f3e71cb..065a9e7 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void modf_995934() {
-  modf_result_vec4_f16 res = tint_modf(f16vec4(0.0hf));
+  modf_result_vec4_f16 res = tint_modf(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void modf_995934() {
-  modf_result_vec4_f16 res = tint_modf(f16vec4(0.0hf));
+  modf_result_vec4_f16 res = tint_modf(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void modf_995934() {
-  modf_result_vec4_f16 res = tint_modf(f16vec4(0.0hf));
+  modf_result_vec4_f16 res = tint_modf(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.msl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.msl
index 93df00a..76d3c04 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void modf_995934() {
-  modf_result_vec4_f16 res = tint_modf(half4(0.0h));
+  modf_result_vec4_f16 res = tint_modf(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.spvasm
index 6fa7c2f..b19f599 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -43,37 +43,38 @@
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
 %__modf_result_vec4_f16 = OpTypeStruct %v4half %v4half
-         %18 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %19 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function___modf_result_vec4_f16 = OpTypePointer Function %__modf_result_vec4_f16
-         %21 = OpConstantNull %__modf_result_vec4_f16
-         %22 = OpTypeFunction %v4float
+         %22 = OpConstantNull %__modf_result_vec4_f16
+         %23 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %modf_995934 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function___modf_result_vec4_f16 Function %21
-         %13 = OpExtInst %__modf_result_vec4_f16 %17 ModfStruct %18
+        %res = OpVariable %_ptr_Function___modf_result_vec4_f16 Function %22
+         %13 = OpExtInst %__modf_result_vec4_f16 %17 ModfStruct %19
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %22
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %modf_995934
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %modf_995934
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %28
+         %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
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_995934
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %modf_995934
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_995934
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %modf_995934
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.wgsl
index 1568993..a73275d 100644
--- a/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/995934.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn modf_995934() {
-  var res = modf(vec4<f16>(f16()));
+  var res = modf(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl
index 5b3d8b5..1a66aad 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl
@@ -25,7 +25,7 @@
 
 // fn modf(vec<2, f16>) -> __modf_result_vec<2, f16>
 fn modf_a545b9() {
-  var res = modf(vec2<f16>(f16()));
+  var res = modf(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.dxc.hlsl
index d146291..1805568 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.dxc.hlsl
@@ -9,7 +9,7 @@
 }
 
 void modf_a545b9() {
-  modf_result_vec2_f16 res = tint_modf((float16_t(0.0h)).xx);
+  modf_result_vec2_f16 res = tint_modf((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.glsl
index 9a4b37a..7c2f892 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.glsl
@@ -14,7 +14,7 @@
 
 
 void modf_a545b9() {
-  modf_result_vec2_f16 res = tint_modf(f16vec2(0.0hf));
+  modf_result_vec2_f16 res = tint_modf(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -47,7 +47,7 @@
 
 
 void modf_a545b9() {
-  modf_result_vec2_f16 res = tint_modf(f16vec2(0.0hf));
+  modf_result_vec2_f16 res = tint_modf(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -74,7 +74,7 @@
 
 
 void modf_a545b9() {
-  modf_result_vec2_f16 res = tint_modf(f16vec2(0.0hf));
+  modf_result_vec2_f16 res = tint_modf(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.msl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.msl
index a9f218a..d7ce71e 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.msl
@@ -13,7 +13,7 @@
 }
 
 void modf_a545b9() {
-  modf_result_vec2_f16 res = tint_modf(half2(0.0h));
+  modf_result_vec2_f16 res = tint_modf(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.spvasm
index a47a138..63d3be1 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 36
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -43,37 +43,38 @@
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
 %__modf_result_vec2_f16 = OpTypeStruct %v2half %v2half
-         %18 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %19 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function___modf_result_vec2_f16 = OpTypePointer Function %__modf_result_vec2_f16
-         %21 = OpConstantNull %__modf_result_vec2_f16
-         %22 = OpTypeFunction %v4float
+         %22 = OpConstantNull %__modf_result_vec2_f16
+         %23 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %modf_a545b9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function___modf_result_vec2_f16 Function %21
-         %13 = OpExtInst %__modf_result_vec2_f16 %17 ModfStruct %18
+        %res = OpVariable %_ptr_Function___modf_result_vec2_f16 Function %22
+         %13 = OpExtInst %__modf_result_vec2_f16 %17 ModfStruct %19
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %22
-         %24 = OpLabel
-         %25 = OpFunctionCall %void %modf_a545b9
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %modf_a545b9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %27 = OpLabel
-         %28 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %28
+         %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
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %modf_a545b9
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %modf_a545b9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %34 = OpLabel
-         %35 = OpFunctionCall %void %modf_a545b9
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %modf_a545b9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.wgsl
index 177b0e9..9d2b453 100644
--- a/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/modf/a545b9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn modf_a545b9() {
-  var res = modf(vec2<f16>(f16()));
+  var res = modf(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl
index 3c612c6..7e2eb67 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl
@@ -25,7 +25,7 @@
 
 // fn normalize(vec<3, f16>) -> vec<3, f16>
 fn normalize_39d5ec() {
-  var res: vec3<f16> = normalize(vec3<f16>(f16()));
+  var res: vec3<f16> = normalize(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.dxc.hlsl
index 4ad650f..517a86a 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_39d5ec() {
-  vector<float16_t, 3> res = normalize((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = normalize((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.glsl
index e129ddc..70d93b7 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_39d5ec() {
-  f16vec3 res = normalize(f16vec3(0.0hf));
+  f16vec3 res = normalize(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void normalize_39d5ec() {
-  f16vec3 res = normalize(f16vec3(0.0hf));
+  f16vec3 res = normalize(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_39d5ec() {
-  f16vec3 res = normalize(f16vec3(0.0hf));
+  f16vec3 res = normalize(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.msl
index 683a2ad..42dca1d 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_39d5ec() {
-  half3 res = normalize(half3(0.0h));
+  half3 res = normalize(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.spvasm
index 7f52307..0c7ec62 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %normalize_39d5ec = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Normalize %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Normalize %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %normalize_39d5ec
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %normalize_39d5ec
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %normalize_39d5ec
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %normalize_39d5ec
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %normalize_39d5ec
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %normalize_39d5ec
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.wgsl
index f8f2e8f..27eaacd 100644
--- a/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/39d5ec.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn normalize_39d5ec() {
-  var res : vec3<f16> = normalize(vec3<f16>(f16()));
+  var res : vec3<f16> = normalize(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl
index 8b3c478..5dcb17c 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl
@@ -25,7 +25,7 @@
 
 // fn normalize(vec<2, f16>) -> vec<2, f16>
 fn normalize_7990f3() {
-  var res: vec2<f16> = normalize(vec2<f16>(f16()));
+  var res: vec2<f16> = normalize(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.dxc.hlsl
index b0e04e1..ee11b6f 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_7990f3() {
-  vector<float16_t, 2> res = normalize((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = normalize((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.glsl
index f59eb6d..4546245 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_7990f3() {
-  f16vec2 res = normalize(f16vec2(0.0hf));
+  f16vec2 res = normalize(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void normalize_7990f3() {
-  f16vec2 res = normalize(f16vec2(0.0hf));
+  f16vec2 res = normalize(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_7990f3() {
-  f16vec2 res = normalize(f16vec2(0.0hf));
+  f16vec2 res = normalize(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.msl
index bea065f..1a691aa 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_7990f3() {
-  half2 res = normalize(half2(0.0h));
+  half2 res = normalize(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.spvasm
index d00d9f3..d38b1e8 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %normalize_7990f3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Normalize %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Normalize %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %normalize_7990f3
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %normalize_7990f3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %normalize_7990f3
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %normalize_7990f3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %normalize_7990f3
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %normalize_7990f3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.wgsl
index ce0b29f..996f7d3 100644
--- a/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/7990f3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn normalize_7990f3() {
-  var res : vec2<f16> = normalize(vec2<f16>(f16()));
+  var res : vec2<f16> = normalize(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl
index 81f49c1..6b73d2f 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl
@@ -25,7 +25,7 @@
 
 // fn normalize(vec<4, f16>) -> vec<4, f16>
 fn normalize_b8cb8d() {
-  var res: vec4<f16> = normalize(vec4<f16>(f16()));
+  var res: vec4<f16> = normalize(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.dxc.hlsl
index 24ac211..df8561e 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_b8cb8d() {
-  vector<float16_t, 4> res = normalize((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = normalize((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.glsl
index 897b4f9..727d29a 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_b8cb8d() {
-  f16vec4 res = normalize(f16vec4(0.0hf));
+  f16vec4 res = normalize(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void normalize_b8cb8d() {
-  f16vec4 res = normalize(f16vec4(0.0hf));
+  f16vec4 res = normalize(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_b8cb8d() {
-  f16vec4 res = normalize(f16vec4(0.0hf));
+  f16vec4 res = normalize(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.msl
index 4481b97..ddeaa45 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_b8cb8d() {
-  half4 res = normalize(half4(0.0h));
+  half4 res = normalize(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.spvasm
index ce722dba..7b84f9b 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %normalize_b8cb8d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Normalize %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Normalize %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %normalize_b8cb8d
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %normalize_b8cb8d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %normalize_b8cb8d
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %normalize_b8cb8d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %normalize_b8cb8d
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %normalize_b8cb8d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.wgsl
index 0721427..2549e2b 100644
--- a/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/normalize/b8cb8d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn normalize_b8cb8d() {
-  var res : vec4<f16> = normalize(vec4<f16>(f16()));
+  var res : vec4<f16> = normalize(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl
index 58ab00c..b6306ef 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl
@@ -25,7 +25,7 @@
 
 // fn pow(vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn pow_4f33b2() {
-  var res: vec4<f16> = pow(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = pow(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.dxc.hlsl
index 2804058..279bbac 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void pow_4f33b2() {
-  vector<float16_t, 4> res = pow((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = pow((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.glsl
index cec05e4..2a31c91 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_4f33b2() {
-  f16vec4 res = pow(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = pow(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void pow_4f33b2() {
-  f16vec4 res = pow(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = pow(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_4f33b2() {
-  f16vec4 res = pow(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = pow(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.msl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.msl
index abc7e9e..8f249be 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void pow_4f33b2() {
-  half4 res = pow(half4(0.0h), half4(0.0h));
+  half4 res = pow(half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.spvasm
index 669759d..be0a42a 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %pow_4f33b2 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Pow %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Pow %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %pow_4f33b2
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %pow_4f33b2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %pow_4f33b2
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %pow_4f33b2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %pow_4f33b2
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %pow_4f33b2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.wgsl
index bb9db59..241f554 100644
--- a/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/4f33b2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn pow_4f33b2() {
-  var res : vec4<f16> = pow(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = pow(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl
index c9a6522..b2c268d 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl
@@ -25,7 +25,7 @@
 
 // fn pow(f16, f16) -> f16
 fn pow_ce9ef5() {
-  var res: f16 = pow(f16(), f16());
+  var res: f16 = pow(1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.dxc.hlsl
index 1f9e712..b2a002c 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void pow_ce9ef5() {
-  float16_t res = pow(float16_t(0.0h), float16_t(0.0h));
+  float16_t res = pow(float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.glsl
index 23f08db..3363c82 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_ce9ef5() {
-  float16_t res = pow(0.0hf, 0.0hf);
+  float16_t res = pow(1.0hf, 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void pow_ce9ef5() {
-  float16_t res = pow(0.0hf, 0.0hf);
+  float16_t res = pow(1.0hf, 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_ce9ef5() {
-  float16_t res = pow(0.0hf, 0.0hf);
+  float16_t res = pow(1.0hf, 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.msl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.msl
index 9346414..45bbe91 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void pow_ce9ef5() {
-  half res = pow(0.0h, 0.0h);
+  half res = pow(1.0h, 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.spvasm
index 219cfcf..67c7240 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %pow_ce9ef5 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Pow %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Pow %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %pow_ce9ef5
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %pow_ce9ef5
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %pow_ce9ef5
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %pow_ce9ef5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %pow_ce9ef5
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %pow_ce9ef5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.wgsl
index dc2c9c4..ba7dac9 100644
--- a/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/ce9ef5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn pow_ce9ef5() {
-  var res : f16 = pow(f16(), f16());
+  var res : f16 = pow(1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl
index b63e93e..9a19834 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl
@@ -25,7 +25,7 @@
 
 // fn pow(vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn pow_f37b25() {
-  var res: vec2<f16> = pow(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = pow(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.dxc.hlsl
index 8efda2b..6a13f47 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void pow_f37b25() {
-  vector<float16_t, 2> res = pow((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = pow((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.glsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.glsl
index ac933cb..c49c6cc 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_f37b25() {
-  f16vec2 res = pow(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = pow(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void pow_f37b25() {
-  f16vec2 res = pow(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = pow(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_f37b25() {
-  f16vec2 res = pow(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = pow(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.msl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.msl
index 3962dd1..f2862ed 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void pow_f37b25() {
-  half2 res = pow(half2(0.0h), half2(0.0h));
+  half2 res = pow(half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.spvasm
index 53e3689..88e21b6 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %pow_f37b25 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Pow %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Pow %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %pow_f37b25
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %pow_f37b25
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %pow_f37b25
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %pow_f37b25
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %pow_f37b25
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %pow_f37b25
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.wgsl
index 96ff2a2..4ab482e 100644
--- a/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/f37b25.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn pow_f37b25() {
-  var res : vec2<f16> = pow(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = pow(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl
index 51ecff3..8e718c8 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl
@@ -25,7 +25,7 @@
 
 // fn pow(vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn pow_fa5429() {
-  var res: vec3<f16> = pow(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = pow(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.dxc.hlsl
index fc999c6..a7106e4 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void pow_fa5429() {
-  vector<float16_t, 3> res = pow((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = pow((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.glsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.glsl
index 113b3ab..289c6e6 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_fa5429() {
-  f16vec3 res = pow(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = pow(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void pow_fa5429() {
-  f16vec3 res = pow(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = pow(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void pow_fa5429() {
-  f16vec3 res = pow(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = pow(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.msl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.msl
index 249c3f3..220abc4 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void pow_fa5429() {
-  half3 res = pow(half3(0.0h), half3(0.0h));
+  half3 res = pow(half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.spvasm
index bc20475..68917f8 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %pow_fa5429 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Pow %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Pow %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %pow_fa5429
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %pow_fa5429
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %pow_fa5429
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %pow_fa5429
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %pow_fa5429
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %pow_fa5429
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.wgsl
index 46002ea..703d869 100644
--- a/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/pow/fa5429.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn pow_fa5429() {
-  var res : vec3<f16> = pow(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = pow(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl
index c60793b..a9c61e5 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl
@@ -25,7 +25,7 @@
 
 // fn radians(f16) -> f16
 fn radians_208fd9() {
-  var res: f16 = radians(f16());
+  var res: f16 = radians(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.dxc.hlsl
index b7b76cd..fb9a879 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void radians_208fd9() {
-  float16_t res = tint_radians(float16_t(0.0h));
+  float16_t res = tint_radians(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.glsl
index cf4c962..a48668c 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void radians_208fd9() {
-  float16_t res = tint_radians(0.0hf);
+  float16_t res = tint_radians(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void radians_208fd9() {
-  float16_t res = tint_radians(0.0hf);
+  float16_t res = tint_radians(1.0hf);
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void radians_208fd9() {
-  float16_t res = tint_radians(0.0hf);
+  float16_t res = tint_radians(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.msl
index d12b406..72d93d6 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void radians_208fd9() {
-  half res = tint_radians(0.0h);
+  half res = tint_radians(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.spvasm
index 8fc9e39..e218859 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %radians_208fd9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Radians %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Radians %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %radians_208fd9
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %radians_208fd9
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %radians_208fd9
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %radians_208fd9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %radians_208fd9
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %radians_208fd9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.wgsl
index 1febb6e..24a3c0d 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn radians_208fd9() {
-  var res : f16 = radians(f16());
+  var res : f16 = radians(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl
index a7887fb..b72488c 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl
@@ -25,7 +25,7 @@
 
 // fn radians(vec<4, f16>) -> vec<4, f16>
 fn radians_44f20b() {
-  var res: vec4<f16> = radians(vec4<f16>(f16()));
+  var res: vec4<f16> = radians(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.dxc.hlsl
index 6c3cce9..3c88857 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void radians_44f20b() {
-  vector<float16_t, 4> res = tint_radians((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = tint_radians((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.glsl
index 2b3d4c7..caa4ab8 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void radians_44f20b() {
-  f16vec4 res = tint_radians(f16vec4(0.0hf));
+  f16vec4 res = tint_radians(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void radians_44f20b() {
-  f16vec4 res = tint_radians(f16vec4(0.0hf));
+  f16vec4 res = tint_radians(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void radians_44f20b() {
-  f16vec4 res = tint_radians(f16vec4(0.0hf));
+  f16vec4 res = tint_radians(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.msl
index 1e20066..0f7b12f 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void radians_44f20b() {
-  half4 res = tint_radians(half4(0.0h));
+  half4 res = tint_radians(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.spvasm
index 6321aaa..993e544 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %radians_44f20b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Radians %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Radians %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %radians_44f20b
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %radians_44f20b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %radians_44f20b
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %radians_44f20b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %radians_44f20b
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %radians_44f20b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.wgsl
index 35170cc..1f1f177 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn radians_44f20b() {
-  var res : vec4<f16> = radians(vec4<f16>(f16()));
+  var res : vec4<f16> = radians(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl
index 4e2a23c..dfe0486 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl
@@ -25,7 +25,7 @@
 
 // fn radians(vec<3, f16>) -> vec<3, f16>
 fn radians_7ea4c7() {
-  var res: vec3<f16> = radians(vec3<f16>(f16()));
+  var res: vec3<f16> = radians(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.dxc.hlsl
index a9f6f96..72427f3 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void radians_7ea4c7() {
-  vector<float16_t, 3> res = tint_radians((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = tint_radians((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.glsl
index a8cc9ab..75c124c 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void radians_7ea4c7() {
-  f16vec3 res = tint_radians(f16vec3(0.0hf));
+  f16vec3 res = tint_radians(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void radians_7ea4c7() {
-  f16vec3 res = tint_radians(f16vec3(0.0hf));
+  f16vec3 res = tint_radians(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void radians_7ea4c7() {
-  f16vec3 res = tint_radians(f16vec3(0.0hf));
+  f16vec3 res = tint_radians(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.msl
index 34ca856..a8f0e1f 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void radians_7ea4c7() {
-  half3 res = tint_radians(half3(0.0h));
+  half3 res = tint_radians(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.spvasm
index 9ef7401..3253f44 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %radians_7ea4c7 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Radians %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Radians %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %radians_7ea4c7
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %radians_7ea4c7
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %radians_7ea4c7
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %radians_7ea4c7
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %radians_7ea4c7
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %radians_7ea4c7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.wgsl
index 56b01aa..094dfb7 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn radians_7ea4c7() {
-  var res : vec3<f16> = radians(vec3<f16>(f16()));
+  var res : vec3<f16> = radians(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl
index f3d4acb..6b45a23 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl
@@ -25,7 +25,7 @@
 
 // fn radians(vec<2, f16>) -> vec<2, f16>
 fn radians_fbacf0() {
-  var res: vec2<f16> = radians(vec2<f16>(f16()));
+  var res: vec2<f16> = radians(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.dxc.hlsl
index 8d3e076..77ad4e4 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void radians_fbacf0() {
-  vector<float16_t, 2> res = tint_radians((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = tint_radians((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.glsl
index ce24c39..2d748f9 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void radians_fbacf0() {
-  f16vec2 res = tint_radians(f16vec2(0.0hf));
+  f16vec2 res = tint_radians(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -33,7 +33,7 @@
 
 
 void radians_fbacf0() {
-  f16vec2 res = tint_radians(f16vec2(0.0hf));
+  f16vec2 res = tint_radians(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -53,7 +53,7 @@
 
 
 void radians_fbacf0() {
-  f16vec2 res = tint_radians(f16vec2(0.0hf));
+  f16vec2 res = tint_radians(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.msl
index 9359855..ca066a6 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.msl
@@ -7,7 +7,7 @@
 }
 
 void radians_fbacf0() {
-  half2 res = tint_radians(half2(0.0h));
+  half2 res = tint_radians(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.spvasm
index f798f51..3fe420d 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %radians_fbacf0 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Radians %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Radians %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %radians_fbacf0
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %radians_fbacf0
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %radians_fbacf0
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %radians_fbacf0
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %radians_fbacf0
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %radians_fbacf0
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.wgsl
index 0aba9cc..061f0a0 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn radians_fbacf0() {
-  var res : vec2<f16> = radians(vec2<f16>(f16()));
+  var res : vec2<f16> = radians(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl
index 9d8a01b..03673f7 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl
@@ -25,7 +25,7 @@
 
 // fn reflect(vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn reflect_310de5() {
-  var res: vec4<f16> = reflect(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = reflect(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.dxc.hlsl
index 4a7f8f4..df49cea 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void reflect_310de5() {
-  vector<float16_t, 4> res = reflect((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = reflect((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.glsl
index 92a222f..278aae3 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void reflect_310de5() {
-  f16vec4 res = reflect(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = reflect(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void reflect_310de5() {
-  f16vec4 res = reflect(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = reflect(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void reflect_310de5() {
-  f16vec4 res = reflect(f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = reflect(f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.msl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.msl
index 774dfb7..cea7ea6 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void reflect_310de5() {
-  half4 res = reflect(half4(0.0h), half4(0.0h));
+  half4 res = reflect(half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.spvasm
index e77a355..bc8cf64 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %reflect_310de5 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Reflect %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Reflect %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %reflect_310de5
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %reflect_310de5
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %reflect_310de5
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %reflect_310de5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %reflect_310de5
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %reflect_310de5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.wgsl
index 61a2100..a726a49 100644
--- a/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/310de5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn reflect_310de5() {
-  var res : vec4<f16> = reflect(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = reflect(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl
index 85df287..097b214 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl
@@ -25,7 +25,7 @@
 
 // fn reflect(vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn reflect_61ca21() {
-  var res: vec3<f16> = reflect(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = reflect(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.dxc.hlsl
index 5a2f305..f5e64c6 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void reflect_61ca21() {
-  vector<float16_t, 3> res = reflect((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = reflect((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.glsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.glsl
index c3b3b78..c797b56 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void reflect_61ca21() {
-  f16vec3 res = reflect(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = reflect(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void reflect_61ca21() {
-  f16vec3 res = reflect(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = reflect(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void reflect_61ca21() {
-  f16vec3 res = reflect(f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = reflect(f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.msl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.msl
index 2bd9b84..cf8a1a6 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void reflect_61ca21() {
-  half3 res = reflect(half3(0.0h), half3(0.0h));
+  half3 res = reflect(half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.spvasm
index 10d9a35..289c8ce 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %reflect_61ca21 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Reflect %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Reflect %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %reflect_61ca21
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %reflect_61ca21
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %reflect_61ca21
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %reflect_61ca21
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %reflect_61ca21
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %reflect_61ca21
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.wgsl
index a30006a..194bb6b 100644
--- a/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/61ca21.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn reflect_61ca21() {
-  var res : vec3<f16> = reflect(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = reflect(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl
index 854ac7e..a559dc9 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl
@@ -25,7 +25,7 @@
 
 // fn reflect(vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn reflect_bb15ac() {
-  var res: vec2<f16> = reflect(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = reflect(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.dxc.hlsl
index ec357fa..573d3ee 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void reflect_bb15ac() {
-  vector<float16_t, 2> res = reflect((float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = reflect((float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.glsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.glsl
index 6ea875d..5e9063d 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void reflect_bb15ac() {
-  f16vec2 res = reflect(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = reflect(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void reflect_bb15ac() {
-  f16vec2 res = reflect(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = reflect(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void reflect_bb15ac() {
-  f16vec2 res = reflect(f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = reflect(f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.msl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.msl
index 5ade63c..a3e72b8 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void reflect_bb15ac() {
-  half2 res = reflect(half2(0.0h), half2(0.0h));
+  half2 res = reflect(half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.spvasm
index c9e584e..275c45f 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %reflect_bb15ac = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Reflect %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Reflect %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %reflect_bb15ac
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %reflect_bb15ac
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %reflect_bb15ac
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %reflect_bb15ac
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %reflect_bb15ac
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %reflect_bb15ac
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.wgsl
index 8e50cf3..bb64ffa 100644
--- a/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/reflect/bb15ac.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn reflect_bb15ac() {
-  var res : vec2<f16> = reflect(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = reflect(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl
index 5614a4e..c37f22f 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl
@@ -25,7 +25,7 @@
 
 // fn refract(vec<4, f16>, vec<4, f16>, f16) -> vec<4, f16>
 fn refract_0594ba() {
-  var res: vec4<f16> = refract(vec4<f16>(f16()), vec4<f16>(f16()), f16());
+  var res: vec4<f16> = refract(vec4<f16>(1.h), vec4<f16>(1.h), 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.dxc.hlsl
index cdb4a1c..7e12794 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void refract_0594ba() {
-  vector<float16_t, 4> res = refract((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, float16_t(0.0h));
+  vector<float16_t, 4> res = refract((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.glsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.glsl
index dd0c411..c5293b5 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void refract_0594ba() {
-  f16vec4 res = refract(f16vec4(0.0hf), f16vec4(0.0hf), 0.0hf);
+  f16vec4 res = refract(f16vec4(1.0hf), f16vec4(1.0hf), 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void refract_0594ba() {
-  f16vec4 res = refract(f16vec4(0.0hf), f16vec4(0.0hf), 0.0hf);
+  f16vec4 res = refract(f16vec4(1.0hf), f16vec4(1.0hf), 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void refract_0594ba() {
-  f16vec4 res = refract(f16vec4(0.0hf), f16vec4(0.0hf), 0.0hf);
+  f16vec4 res = refract(f16vec4(1.0hf), f16vec4(1.0hf), 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.msl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.msl
index 5bb163e..e5623fa 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void refract_0594ba() {
-  half4 res = refract(half4(0.0h), half4(0.0h), 0.0h);
+  half4 res = refract(half4(1.0h), half4(1.0h), 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.spvasm
index 5d0cc45..9c59d3b 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %refract_0594ba = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Refract %17 %17 %18
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Refract %18 %18 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %refract_0594ba
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %refract_0594ba
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %refract_0594ba
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %refract_0594ba
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %refract_0594ba
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %refract_0594ba
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.wgsl
index ab78c7e..5d932c0 100644
--- a/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/refract/0594ba.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn refract_0594ba() {
-  var res : vec4<f16> = refract(vec4<f16>(f16()), vec4<f16>(f16()), f16());
+  var res : vec4<f16> = refract(vec4<f16>(1.0h), vec4<f16>(1.0h), 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl
index 130e449..f8f50f2 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl
@@ -25,7 +25,7 @@
 
 // fn refract(vec<2, f16>, vec<2, f16>, f16) -> vec<2, f16>
 fn refract_570cb3() {
-  var res: vec2<f16> = refract(vec2<f16>(f16()), vec2<f16>(f16()), f16());
+  var res: vec2<f16> = refract(vec2<f16>(1.h), vec2<f16>(1.h), 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.dxc.hlsl
index 1f7f29d..4a35894 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void refract_570cb3() {
-  vector<float16_t, 2> res = refract((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, float16_t(0.0h));
+  vector<float16_t, 2> res = refract((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.glsl
index 14fad7d..b0f0ad1 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void refract_570cb3() {
-  f16vec2 res = refract(f16vec2(0.0hf), f16vec2(0.0hf), 0.0hf);
+  f16vec2 res = refract(f16vec2(1.0hf), f16vec2(1.0hf), 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void refract_570cb3() {
-  f16vec2 res = refract(f16vec2(0.0hf), f16vec2(0.0hf), 0.0hf);
+  f16vec2 res = refract(f16vec2(1.0hf), f16vec2(1.0hf), 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void refract_570cb3() {
-  f16vec2 res = refract(f16vec2(0.0hf), f16vec2(0.0hf), 0.0hf);
+  f16vec2 res = refract(f16vec2(1.0hf), f16vec2(1.0hf), 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.msl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.msl
index da86c8c..1414d82 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void refract_570cb3() {
-  half2 res = refract(half2(0.0h), half2(0.0h), 0.0h);
+  half2 res = refract(half2(1.0h), half2(1.0h), 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.spvasm
index 238e6f1..63fcc15 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %refract_570cb3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Refract %17 %17 %18
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Refract %18 %18 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %refract_570cb3
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %refract_570cb3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %refract_570cb3
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %refract_570cb3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %refract_570cb3
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %refract_570cb3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.wgsl
index 45a3472..1c1d33c 100644
--- a/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/refract/570cb3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn refract_570cb3() {
-  var res : vec2<f16> = refract(vec2<f16>(f16()), vec2<f16>(f16()), f16());
+  var res : vec2<f16> = refract(vec2<f16>(1.0h), vec2<f16>(1.0h), 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl
index ccc6f61..6e38525 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl
@@ -25,7 +25,7 @@
 
 // fn refract(vec<3, f16>, vec<3, f16>, f16) -> vec<3, f16>
 fn refract_8984af() {
-  var res: vec3<f16> = refract(vec3<f16>(f16()), vec3<f16>(f16()), f16());
+  var res: vec3<f16> = refract(vec3<f16>(1.h), vec3<f16>(1.h), 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.dxc.hlsl
index 82aa4ad..5e25ebc 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void refract_8984af() {
-  vector<float16_t, 3> res = refract((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, float16_t(0.0h));
+  vector<float16_t, 3> res = refract((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.glsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.glsl
index cd538f6..5bfbd94 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void refract_8984af() {
-  f16vec3 res = refract(f16vec3(0.0hf), f16vec3(0.0hf), 0.0hf);
+  f16vec3 res = refract(f16vec3(1.0hf), f16vec3(1.0hf), 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void refract_8984af() {
-  f16vec3 res = refract(f16vec3(0.0hf), f16vec3(0.0hf), 0.0hf);
+  f16vec3 res = refract(f16vec3(1.0hf), f16vec3(1.0hf), 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void refract_8984af() {
-  f16vec3 res = refract(f16vec3(0.0hf), f16vec3(0.0hf), 0.0hf);
+  f16vec3 res = refract(f16vec3(1.0hf), f16vec3(1.0hf), 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.msl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.msl
index 54ca61d..977ac05 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void refract_8984af() {
-  half3 res = refract(half3(0.0h), half3(0.0h), 0.0h);
+  half3 res = refract(half3(1.0h), half3(1.0h), 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.spvasm
index 28804a8..7192390 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 35
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,37 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
-         %18 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %21 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %refract_8984af = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Refract %17 %17 %18
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Refract %18 %18 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %21
-         %23 = OpLabel
-         %24 = OpFunctionCall %void %refract_8984af
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %refract_8984af
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %27
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %refract_8984af
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %refract_8984af
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %33 = OpLabel
-         %34 = OpFunctionCall %void %refract_8984af
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %refract_8984af
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.wgsl
index 8ce7e19..7dd0916 100644
--- a/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/refract/8984af.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn refract_8984af() {
-  var res : vec3<f16> = refract(vec3<f16>(f16()), vec3<f16>(f16()), f16());
+  var res : vec3<f16> = refract(vec3<f16>(1.0h), vec3<f16>(1.0h), 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl
index d5223dc..f9753e1 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(f16) -> f16
 fn round_9078ef() {
-  var res: f16 = round(f16());
+  var res: f16 = round(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.dxc.hlsl
index e695f9b..54293a2 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_9078ef() {
-  float16_t res = round(float16_t(0.0h));
+  float16_t res = round(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.glsl
index 34f4fd1..f29b5bd 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_9078ef() {
-  float16_t res = round(0.0hf);
+  float16_t res = round(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_9078ef() {
-  float16_t res = round(0.0hf);
+  float16_t res = round(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_9078ef() {
-  float16_t res = round(0.0hf);
+  float16_t res = round(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.msl
index c400dc4..dc3bbdb 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_9078ef() {
-  half res = rint(0.0h);
+  half res = rint(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.spvasm
index 80c9f07..44eed14 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_9078ef = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 RoundEven %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 RoundEven %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %round_9078ef
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %round_9078ef
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %round_9078ef
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %round_9078ef
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %round_9078ef
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %round_9078ef
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.wgsl
index f918a90..d0750a8 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_9078ef() {
-  var res : f16 = round(f16());
+  var res : f16 = round(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl
index 3ca7f69..a2bd758 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(vec<2, f16>) -> vec<2, f16>
 fn round_d87e84() {
-  var res: vec2<f16> = round(vec2<f16>(f16()));
+  var res: vec2<f16> = round(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.dxc.hlsl
index dc48afa..154f888 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_d87e84() {
-  vector<float16_t, 2> res = round((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = round((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.glsl
index e2e82c9..00afdb0 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_d87e84() {
-  f16vec2 res = round(f16vec2(0.0hf));
+  f16vec2 res = round(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_d87e84() {
-  f16vec2 res = round(f16vec2(0.0hf));
+  f16vec2 res = round(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_d87e84() {
-  f16vec2 res = round(f16vec2(0.0hf));
+  f16vec2 res = round(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.msl
index af2b9b2..31cb08a 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_d87e84() {
-  half2 res = rint(half2(0.0h));
+  half2 res = rint(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.spvasm
index e6698b4..d94035e 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_d87e84 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 RoundEven %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 RoundEven %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %round_d87e84
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %round_d87e84
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %round_d87e84
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %round_d87e84
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %round_d87e84
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %round_d87e84
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.wgsl
index d3a6cc4..a771f35 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_d87e84() {
-  var res : vec2<f16> = round(vec2<f16>(f16()));
+  var res : vec2<f16> = round(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl
index dfa1264..a942899 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(vec<3, f16>) -> vec<3, f16>
 fn round_e1bba2() {
-  var res: vec3<f16> = round(vec3<f16>(f16()));
+  var res: vec3<f16> = round(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.dxc.hlsl
index 4941302..061b32c 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_e1bba2() {
-  vector<float16_t, 3> res = round((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = round((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.glsl
index 873d32a..0717d6b 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_e1bba2() {
-  f16vec3 res = round(f16vec3(0.0hf));
+  f16vec3 res = round(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_e1bba2() {
-  f16vec3 res = round(f16vec3(0.0hf));
+  f16vec3 res = round(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_e1bba2() {
-  f16vec3 res = round(f16vec3(0.0hf));
+  f16vec3 res = round(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.msl
index c4670c6..5f47a88 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_e1bba2() {
-  half3 res = rint(half3(0.0h));
+  half3 res = rint(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.spvasm
index 122df56..8e82f20 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_e1bba2 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 RoundEven %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 RoundEven %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %round_e1bba2
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %round_e1bba2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %round_e1bba2
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %round_e1bba2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %round_e1bba2
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %round_e1bba2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.wgsl
index 6da5186..2c270f9 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_e1bba2() {
-  var res : vec3<f16> = round(vec3<f16>(f16()));
+  var res : vec3<f16> = round(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl
index 6293239..a3889e4 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(vec<4, f16>) -> vec<4, f16>
 fn round_f665b5() {
-  var res: vec4<f16> = round(vec4<f16>(f16()));
+  var res: vec4<f16> = round(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.dxc.hlsl
index 287b5e1..c0820c5 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_f665b5() {
-  vector<float16_t, 4> res = round((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = round((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.glsl
index bc044ed..4293476 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_f665b5() {
-  f16vec4 res = round(f16vec4(0.0hf));
+  f16vec4 res = round(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_f665b5() {
-  f16vec4 res = round(f16vec4(0.0hf));
+  f16vec4 res = round(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_f665b5() {
-  f16vec4 res = round(f16vec4(0.0hf));
+  f16vec4 res = round(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.msl
index db3fa98..92a75ec 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_f665b5() {
-  half4 res = rint(half4(0.0h));
+  half4 res = rint(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.spvasm
index 9600ad7..a0a5f90 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_f665b5 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 RoundEven %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 RoundEven %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %round_f665b5
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %round_f665b5
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %round_f665b5
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %round_f665b5
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %round_f665b5
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %round_f665b5
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.wgsl
index 9338453..dbecbec 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_f665b5() {
-  var res : vec4<f16> = round(vec4<f16>(f16()));
+  var res : vec4<f16> = round(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl
index 3fe90cf..14b69ba 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl
@@ -25,7 +25,7 @@
 
 // fn saturate(vec<3, f16>) -> vec<3, f16>
 fn saturate_462535() {
-  var res: vec3<f16> = saturate(vec3<f16>(f16()));
+  var res: vec3<f16> = saturate(vec3<f16>(2.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.dxc.hlsl
index 23800c3..ce230c9 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void saturate_462535() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl
index 683f6d0..d525902 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_462535() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void saturate_462535() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_462535() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.msl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.msl
index 35014be..4fab232 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void saturate_462535() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm
index dfa8ca2..0c3162d 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/saturate/462535.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %saturate_462535 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %saturate_462535
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %saturate_462535
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %saturate_462535
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %saturate_462535
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %saturate_462535
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %saturate_462535
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.wgsl
index 25d4562..f4f845c 100644
--- a/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/462535.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn saturate_462535() {
-  var res : vec3<f16> = saturate(vec3<f16>(f16()));
+  var res : vec3<f16> = saturate(vec3<f16>(2.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl
index c5dc478..ec40321 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl
@@ -25,7 +25,7 @@
 
 // fn saturate(vec<2, f16>) -> vec<2, f16>
 fn saturate_cd2028() {
-  var res: vec2<f16> = saturate(vec2<f16>(f16()));
+  var res: vec2<f16> = saturate(vec2<f16>(2.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.dxc.hlsl
index 97f10e9..9d77a0f 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void saturate_cd2028() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl
index 821559f..d63e3e7 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_cd2028() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void saturate_cd2028() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_cd2028() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.msl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.msl
index 0f23c02..c941ffe 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void saturate_cd2028() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm
index d1d24df..2312102 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %saturate_cd2028 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %saturate_cd2028
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %saturate_cd2028
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %saturate_cd2028
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %saturate_cd2028
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %saturate_cd2028
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %saturate_cd2028
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.wgsl
index f2a06c9..47ce6c7 100644
--- a/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/cd2028.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn saturate_cd2028() {
-  var res : vec2<f16> = saturate(vec2<f16>(f16()));
+  var res : vec2<f16> = saturate(vec2<f16>(2.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl
index 861fc12..22dd45f 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl
@@ -25,7 +25,7 @@
 
 // fn saturate(vec<4, f16>) -> vec<4, f16>
 fn saturate_dcde71() {
-  var res: vec4<f16> = saturate(vec4<f16>(f16()));
+  var res: vec4<f16> = saturate(vec4<f16>(2.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.dxc.hlsl
index 23cb232..250ea3a 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void saturate_dcde71() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl
index 96296a0..0b80f1d 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_dcde71() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void saturate_dcde71() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_dcde71() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.msl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.msl
index 3dc2267..403440d 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void saturate_dcde71() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm
index c2fbd4a..1ae8455 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %saturate_dcde71 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %saturate_dcde71
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %saturate_dcde71
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %saturate_dcde71
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %saturate_dcde71
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %saturate_dcde71
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %saturate_dcde71
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.wgsl
index 8d23bd2..2c8aba9 100644
--- a/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/dcde71.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn saturate_dcde71() {
-  var res : vec4<f16> = saturate(vec4<f16>(f16()));
+  var res : vec4<f16> = saturate(vec4<f16>(2.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl
index edd402f..14ba3d6 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl
@@ -25,7 +25,7 @@
 
 // fn saturate(f16) -> f16
 fn saturate_e8df56() {
-  var res: f16 = saturate(f16());
+  var res: f16 = saturate(2.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.dxc.hlsl
index 61c28d8..2774be4 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void saturate_e8df56() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl
index 4aab0f3..7e416e1 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_e8df56() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void saturate_e8df56() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void saturate_e8df56() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.msl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.msl
index 0219c63..6af9d37 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void saturate_e8df56() {
-  half res = 0.0h;
+  half res = 1.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm
index 846ff53..3f552d8 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %saturate_e8df56 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_0
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %saturate_e8df56
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %saturate_e8df56
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %saturate_e8df56
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %saturate_e8df56
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %saturate_e8df56
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %saturate_e8df56
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.wgsl
index 4662bb5..e983300 100644
--- a/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/saturate/e8df56.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn saturate_e8df56() {
-  var res : f16 = saturate(f16());
+  var res : f16 = saturate(2.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl
index 9632064..6f12933 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(f16, f16, bool) -> f16
 fn select_10e73b() {
-  var res: f16 = select(f16(), f16(), true);
+  var res: f16 = select(1.h, 1.h, true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.dxc.hlsl
index c52b572..3988b98 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_10e73b() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.glsl
index 65d3a98..943a733 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_10e73b() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_10e73b() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_10e73b() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.msl
index 41bda4f..009867d 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_10e73b() {
-  half res = 0.0h;
+  half res = 1.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.spvasm
index 8c2401f..1dd283e 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_10e73b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_0
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %select_10e73b
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %select_10e73b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %select_10e73b
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %select_10e73b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %select_10e73b
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %select_10e73b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.wgsl
index 4aa334d..426915f 100644
--- a/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/10e73b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_10e73b() {
-  var res : f16 = select(f16(), f16(), true);
+  var res : f16 = select(1.0h, 1.0h, true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl
index 2278b71..d7a24db 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(vec<3, f16>, vec<3, f16>, bool) -> vec<3, f16>
 fn select_1ada2a() {
-  var res: vec3<f16> = select(vec3<f16>(f16()), vec3<f16>(f16()), true);
+  var res: vec3<f16> = select(vec3<f16>(1.h), vec3<f16>(1.h), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.dxc.hlsl
index c719f6c..7d01083 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_1ada2a() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.glsl
index 9150c64..cd6989b 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_1ada2a() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_1ada2a() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_1ada2a() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.msl
index f310524..5d1e6c6 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_1ada2a() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.spvasm
index e2e371b..9f67b7c 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/1ada2a.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_1ada2a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_1ada2a
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_1ada2a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_1ada2a
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_1ada2a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_1ada2a
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_1ada2a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.wgsl
index 64fb3712..9d30044 100644
--- a/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/1ada2a.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_1ada2a() {
-  var res : vec3<f16> = select(vec3<f16>(f16()), vec3<f16>(f16()), true);
+  var res : vec3<f16> = select(vec3<f16>(1.0h), vec3<f16>(1.0h), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl b/test/tint/builtins/gen/literal/select/53d518.wgsl
index a511c17..037dcf9 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(vec<3, f16>, vec<3, f16>, vec<3, bool>) -> vec<3, f16>
 fn select_53d518() {
-  var res: vec3<f16> = select(vec3<f16>(f16()), vec3<f16>(f16()), vec3<bool>(true));
+  var res: vec3<f16> = select(vec3<f16>(1.h), vec3<f16>(1.h), vec3<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.dxc.hlsl
index 861ff19..6f16f8d 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_53d518() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.glsl
index b4d88fd..2048423 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_53d518() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_53d518() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_53d518() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.msl
index 071a65a..885f80c 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_53d518() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.spvasm
index 3697f80..6b0b0ef 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/53d518.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_53d518 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_53d518
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_53d518
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_53d518
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_53d518
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_53d518
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_53d518
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.wgsl
index 425a44b..e443ffd 100644
--- a/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/53d518.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_53d518() {
-  var res : vec3<f16> = select(vec3<f16>(f16()), vec3<f16>(f16()), vec3<bool>(true));
+  var res : vec3<f16> = select(vec3<f16>(1.0h), vec3<f16>(1.0h), vec3<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl
index f1fda9e..9ed0584 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(vec<4, f16>, vec<4, f16>, bool) -> vec<4, f16>
 fn select_830dd9() {
-  var res: vec4<f16> = select(vec4<f16>(f16()), vec4<f16>(f16()), true);
+  var res: vec4<f16> = select(vec4<f16>(1.h), vec4<f16>(1.h), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.dxc.hlsl
index 9ccab1b..49e6f4a 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_830dd9() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.glsl
index 665c49e..9d787eb 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_830dd9() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_830dd9() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_830dd9() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.msl
index 6763d90..2663656 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_830dd9() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.spvasm
index debde2a..889da66 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/830dd9.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_830dd9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_830dd9
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_830dd9
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_830dd9
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_830dd9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_830dd9
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_830dd9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.wgsl
index cb99917..ddcd264 100644
--- a/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/830dd9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_830dd9() {
-  var res : vec4<f16> = select(vec4<f16>(f16()), vec4<f16>(f16()), true);
+  var res : vec4<f16> = select(vec4<f16>(1.0h), vec4<f16>(1.0h), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl
index 0cb4dc0..0b75a15 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(vec<2, f16>, vec<2, f16>, bool) -> vec<2, f16>
 fn select_86f9bd() {
-  var res: vec2<f16> = select(vec2<f16>(f16()), vec2<f16>(f16()), true);
+  var res: vec2<f16> = select(vec2<f16>(1.h), vec2<f16>(1.h), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.dxc.hlsl
index 8b55bbb..02858f1 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_86f9bd() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.glsl
index 002de10..1cec4b7 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_86f9bd() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_86f9bd() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_86f9bd() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.msl
index fd67e7b..9503bb5 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_86f9bd() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.spvasm
index 8711cd27..68c891c 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/86f9bd.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_86f9bd = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_86f9bd
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_86f9bd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_86f9bd
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_86f9bd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_86f9bd
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_86f9bd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.wgsl
index 0454417..5f3fa5c 100644
--- a/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/86f9bd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_86f9bd() {
-  var res : vec2<f16> = select(vec2<f16>(f16()), vec2<f16>(f16()), true);
+  var res : vec2<f16> = select(vec2<f16>(1.0h), vec2<f16>(1.0h), true);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl
index 9f4e789..2a16d51 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(vec<4, f16>, vec<4, f16>, vec<4, bool>) -> vec<4, f16>
 fn select_a081f1() {
-  var res: vec4<f16> = select(vec4<f16>(f16()), vec4<f16>(f16()), vec4<bool>(true));
+  var res: vec4<f16> = select(vec4<f16>(1.h), vec4<f16>(1.h), vec4<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.dxc.hlsl
index 4d8b7a1..5cc9a61 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_a081f1() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.glsl
index 8b2a610..73c1209 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_a081f1() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_a081f1() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_a081f1() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.msl
index 75ed4b4..6b4ae38 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_a081f1() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.spvasm
index c775c95..0f5187e 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/a081f1.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_a081f1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_a081f1
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_a081f1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_a081f1
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_a081f1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_a081f1
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_a081f1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.wgsl
index feefad7..2dcaddf 100644
--- a/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/a081f1.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_a081f1() {
-  var res : vec4<f16> = select(vec4<f16>(f16()), vec4<f16>(f16()), vec4<bool>(true));
+  var res : vec4<f16> = select(vec4<f16>(1.0h), vec4<f16>(1.0h), vec4<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl
index 1d862f6..7f703db 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl
@@ -25,7 +25,7 @@
 
 // fn select(vec<2, f16>, vec<2, f16>, vec<2, bool>) -> vec<2, f16>
 fn select_ed7c13() {
-  var res: vec2<f16> = select(vec2<f16>(f16()), vec2<f16>(f16()), vec2<bool>(true));
+  var res: vec2<f16> = select(vec2<f16>(1.h), vec2<f16>(1.h), vec2<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.dxc.hlsl
index a15279a..5ba22f5 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void select_ed7c13() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.glsl
index a5fad2c..1ac6e9a 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_ed7c13() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void select_ed7c13() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void select_ed7c13() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.msl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.msl
index f02a9f6..a73404c 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void select_ed7c13() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.spvasm
index 7a647b8..3f969ce 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/select/ed7c13.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %select_ed7c13 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %select_ed7c13
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %select_ed7c13
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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_ed7c13
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %select_ed7c13
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %select_ed7c13
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %select_ed7c13
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.wgsl
index 427fba2..7df76f4 100644
--- a/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/select/ed7c13.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn select_ed7c13() {
-  var res : vec2<f16> = select(vec2<f16>(f16()), vec2<f16>(f16()), vec2<bool>(true));
+  var res : vec2<f16> = select(vec2<f16>(1.0h), vec2<f16>(1.0h), vec2<bool>(true));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl b/test/tint/builtins/gen/literal/sign/160933.wgsl
index 13a6c3b..95c8575 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl
@@ -25,7 +25,7 @@
 
 // fn sign(vec<4, f16>) -> vec<4, f16>
 fn sign_160933() {
-  var res: vec4<f16> = sign(vec4<f16>(f16()));
+  var res: vec4<f16> = sign(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.dxc.hlsl
index 9152c39..dca4974 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sign_160933() {
-  vector<float16_t, 4> res = (float16_t(0.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.0h)).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.glsl
index 0c3ed69..765c87b 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_160933() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sign_160933() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_160933() {
-  f16vec4 res = f16vec4(0.0hf);
+  f16vec4 res = f16vec4(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.msl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.msl
index 2f05c90..351bd94 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sign_160933() {
-  half4 res = half4(0.0h);
+  half4 res = half4(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.spvasm
index 40f0e92..aa897b0 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sign/160933.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %15 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v4half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sign_160933 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v4half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %sign_160933
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %sign_160933
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %sign_160933
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %sign_160933
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %sign_160933
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %sign_160933
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.wgsl
index 5633954..57ff301 100644
--- a/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/160933.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sign_160933() {
-  var res : vec4<f16> = sign(vec4<f16>(f16()));
+  var res : vec4<f16> = sign(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl
index dc23259..a83e896 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl
@@ -25,7 +25,7 @@
 
 // fn sign(vec<3, f16>) -> vec<3, f16>
 fn sign_5d283a() {
-  var res: vec3<f16> = sign(vec3<f16>(f16()));
+  var res: vec3<f16> = sign(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.dxc.hlsl
index e8f8c0f..ffe5893 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sign_5d283a() {
-  vector<float16_t, 3> res = (float16_t(0.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.0h)).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.glsl
index 8530a60..e7fcb15 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_5d283a() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sign_5d283a() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_5d283a() {
-  f16vec3 res = f16vec3(0.0hf);
+  f16vec3 res = f16vec3(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.msl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.msl
index b104c0e..7628c40 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sign_5d283a() {
-  half3 res = half3(0.0h);
+  half3 res = half3(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.spvasm
index f36ab38..78e2a9e 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sign/5d283a.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %15 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v3half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sign_5d283a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v3half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %sign_5d283a
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %sign_5d283a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %sign_5d283a
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %sign_5d283a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %sign_5d283a
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %sign_5d283a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.wgsl
index 754ba8b..53ec054 100644
--- a/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/5d283a.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sign_5d283a() {
-  var res : vec3<f16> = sign(vec3<f16>(f16()));
+  var res : vec3<f16> = sign(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl
index b8d85dc..bac048d 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl
@@ -25,7 +25,7 @@
 
 // fn sign(f16) -> f16
 fn sign_7c85ea() {
-  var res: f16 = sign(f16());
+  var res: f16 = sign(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.dxc.hlsl
index 59e1630..9402192 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sign_7c85ea() {
-  float16_t res = float16_t(0.0h);
+  float16_t res = float16_t(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.glsl
index 200e748..6c2f3c0 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_7c85ea() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sign_7c85ea() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_7c85ea() {
-  float16_t res = 0.0hf;
+  float16_t res = 1.0hf;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.msl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.msl
index 4c1254e..7b130e7 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sign_7c85ea() {
-  half res = 0.0h;
+  half res = 1.0h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.spvasm
index 49de559..990f3af 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -35,35 +35,36 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %14 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %17 = OpTypeFunction %v4float
+         %17 = OpConstantNull %half
+         %18 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sign_7c85ea = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %14
-               OpStore %res %14
+        %res = OpVariable %_ptr_Function_half Function %17
+               OpStore %res %half_0x1p_0
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %17
-         %19 = OpLabel
-         %20 = OpFunctionCall %void %sign_7c85ea
+%vertex_main_inner = OpFunction %v4float None %18
+         %20 = OpLabel
+         %21 = OpFunctionCall %void %sign_7c85ea
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %22 = OpLabel
-         %23 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %23
+         %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
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %sign_7c85ea
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %sign_7c85ea
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sign_7c85ea
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %sign_7c85ea
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.wgsl
index 5080143..01a4db6 100644
--- a/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/7c85ea.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sign_7c85ea() {
-  var res : f16 = sign(f16());
+  var res : f16 = sign(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl
index 169814e..0937bae 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl
@@ -25,7 +25,7 @@
 
 // fn sign(vec<2, f16>) -> vec<2, f16>
 fn sign_ccdb3c() {
-  var res: vec2<f16> = sign(vec2<f16>(f16()));
+  var res: vec2<f16> = sign(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.dxc.hlsl
index ac168b5..90267ec 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sign_ccdb3c() {
-  vector<float16_t, 2> res = (float16_t(0.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.0h)).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.glsl
index 706af13..58f6dc7 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_ccdb3c() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sign_ccdb3c() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sign_ccdb3c() {
-  f16vec2 res = f16vec2(0.0hf);
+  f16vec2 res = f16vec2(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.msl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.msl
index 57c9090..9d4ea41 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sign_ccdb3c() {
-  half2 res = half2(0.0h);
+  half2 res = half2(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.spvasm
index a9f3c86..e667af5 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.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
                OpCapability Float16
@@ -36,35 +36,37 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %15 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %16 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %18 = OpTypeFunction %v4float
+         %19 = OpConstantNull %v2half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sign_ccdb3c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %15
-               OpStore %res %15
+        %res = OpVariable %_ptr_Function_v2half Function %19
+               OpStore %res %16
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %18
-         %20 = OpLabel
-         %21 = OpFunctionCall %void %sign_ccdb3c
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %sign_ccdb3c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %23 = OpLabel
-         %24 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %24
+         %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 %sign_ccdb3c
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %sign_ccdb3c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %30 = OpLabel
-         %31 = OpFunctionCall %void %sign_ccdb3c
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %sign_ccdb3c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.wgsl
index 0a5f0ec..2c9acae 100644
--- a/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sign/ccdb3c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sign_ccdb3c() {
-  var res : vec2<f16> = sign(vec2<f16>(f16()));
+  var res : vec2<f16> = sign(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl
index abe172c..6b14910 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl
@@ -25,7 +25,7 @@
 
 // fn sin(vec<3, f16>) -> vec<3, f16>
 fn sin_2c903b() {
-  var res: vec3<f16> = sin(vec3<f16>(f16()));
+  var res: vec3<f16> = sin(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.dxc.hlsl
index 8da2e1c..be59f65 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_2c903b() {
-  vector<float16_t, 3> res = sin((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = sin((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.glsl
index 21de9a7..73bd0a8 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_2c903b() {
-  f16vec3 res = sin(f16vec3(0.0hf));
+  f16vec3 res = sin(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_2c903b() {
-  f16vec3 res = sin(f16vec3(0.0hf));
+  f16vec3 res = sin(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_2c903b() {
-  f16vec3 res = sin(f16vec3(0.0hf));
+  f16vec3 res = sin(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.msl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.msl
index 85bf223..908d21b 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_2c903b() {
-  half3 res = sin(half3(0.0h));
+  half3 res = sin(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.spvasm
index ad41fb3..1c24923 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %sin_2c903b = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Sin %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Sin %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sin_2c903b
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sin_2c903b
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sin_2c903b
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sin_2c903b
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sin_2c903b
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sin_2c903b
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.wgsl
index dd038f5..9eaacf0 100644
--- a/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/2c903b.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sin_2c903b() {
-  var res : vec3<f16> = sin(vec3<f16>(f16()));
+  var res : vec3<f16> = sin(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl
index 527f92b..edc4cf4 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl
@@ -25,7 +25,7 @@
 
 // fn sin(vec<2, f16>) -> vec<2, f16>
 fn sin_3cca11() {
-  var res: vec2<f16> = sin(vec2<f16>(f16()));
+  var res: vec2<f16> = sin(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.dxc.hlsl
index 2f44faa..63a1b74 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_3cca11() {
-  vector<float16_t, 2> res = sin((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = sin((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.glsl
index 3d2c148..9681333 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_3cca11() {
-  f16vec2 res = sin(f16vec2(0.0hf));
+  f16vec2 res = sin(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_3cca11() {
-  f16vec2 res = sin(f16vec2(0.0hf));
+  f16vec2 res = sin(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_3cca11() {
-  f16vec2 res = sin(f16vec2(0.0hf));
+  f16vec2 res = sin(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.msl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.msl
index 0e631c7..6606e7e 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_3cca11() {
-  half2 res = sin(half2(0.0h));
+  half2 res = sin(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.spvasm
index f80895e..3b56d50 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %sin_3cca11 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Sin %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Sin %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sin_3cca11
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sin_3cca11
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sin_3cca11
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sin_3cca11
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sin_3cca11
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sin_3cca11
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.wgsl
index 31f967a..4f84e03 100644
--- a/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/3cca11.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sin_3cca11() {
-  var res : vec2<f16> = sin(vec2<f16>(f16()));
+  var res : vec2<f16> = sin(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl
index 8a16544..5c11b08 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl
@@ -25,7 +25,7 @@
 
 // fn sin(vec<4, f16>) -> vec<4, f16>
 fn sin_5c0712() {
-  var res: vec4<f16> = sin(vec4<f16>(f16()));
+  var res: vec4<f16> = sin(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.dxc.hlsl
index ffc0c91..d80cc2c 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_5c0712() {
-  vector<float16_t, 4> res = sin((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = sin((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.glsl
index c16ccdf..51b1238 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_5c0712() {
-  f16vec4 res = sin(f16vec4(0.0hf));
+  f16vec4 res = sin(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_5c0712() {
-  f16vec4 res = sin(f16vec4(0.0hf));
+  f16vec4 res = sin(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_5c0712() {
-  f16vec4 res = sin(f16vec4(0.0hf));
+  f16vec4 res = sin(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.msl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.msl
index 9393236..2ca221f 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_5c0712() {
-  half4 res = sin(half4(0.0h));
+  half4 res = sin(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.spvasm
index 5060ea8..bb518bd 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %sin_5c0712 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Sin %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Sin %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sin_5c0712
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sin_5c0712
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sin_5c0712
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sin_5c0712
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sin_5c0712
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sin_5c0712
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.wgsl
index 451cac0..43fc5bc 100644
--- a/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/5c0712.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sin_5c0712() {
-  var res : vec4<f16> = sin(vec4<f16>(f16()));
+  var res : vec4<f16> = sin(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl
index 9f69a70..874c051 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl
@@ -25,7 +25,7 @@
 
 // fn sin(f16) -> f16
 fn sin_66a59f() {
-  var res: f16 = sin(f16());
+  var res: f16 = sin(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.dxc.hlsl
index dbb0994..111f1b5 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_66a59f() {
-  float16_t res = sin(float16_t(0.0h));
+  float16_t res = sin(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.glsl
index dc6b376..68bffdd 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_66a59f() {
-  float16_t res = sin(0.0hf);
+  float16_t res = sin(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_66a59f() {
-  float16_t res = sin(0.0hf);
+  float16_t res = sin(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_66a59f() {
-  float16_t res = sin(0.0hf);
+  float16_t res = sin(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.msl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.msl
index 8204eec..9c32a94 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_66a59f() {
-  half res = sin(0.0h);
+  half res = sin(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.spvasm
index 19a2e29..00d3618 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %sin_66a59f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Sin %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Sin %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %sin_66a59f
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %sin_66a59f
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %sin_66a59f
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %sin_66a59f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %sin_66a59f
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %sin_66a59f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.wgsl
index afb239b..78e2085 100644
--- a/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/66a59f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sin_66a59f() {
-  var res : f16 = sin(f16());
+  var res : f16 = sin(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl
index dc47091..576523b 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl
@@ -25,7 +25,7 @@
 
 // fn sinh(vec<3, f16>) -> vec<3, f16>
 fn sinh_0908c1() {
-  var res: vec3<f16> = sinh(vec3<f16>(f16()));
+  var res: vec3<f16> = sinh(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.dxc.hlsl
index 797d893..1f06f77 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_0908c1() {
-  vector<float16_t, 3> res = sinh((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = sinh((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.glsl
index 6130c64..2c61420 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_0908c1() {
-  f16vec3 res = sinh(f16vec3(0.0hf));
+  f16vec3 res = sinh(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_0908c1() {
-  f16vec3 res = sinh(f16vec3(0.0hf));
+  f16vec3 res = sinh(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_0908c1() {
-  f16vec3 res = sinh(f16vec3(0.0hf));
+  f16vec3 res = sinh(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.msl
index 5da508a..54d1892 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_0908c1() {
-  half3 res = sinh(half3(0.0h));
+  half3 res = sinh(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.spvasm
index 62c2763..3a1f92c 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sinh_0908c1 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Sinh %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Sinh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sinh_0908c1
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sinh_0908c1
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sinh_0908c1
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sinh_0908c1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sinh_0908c1
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sinh_0908c1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.wgsl
index f583b10..1da348b 100644
--- a/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/0908c1.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sinh_0908c1() {
-  var res : vec3<f16> = sinh(vec3<f16>(f16()));
+  var res : vec3<f16> = sinh(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl
index ad51136..2b22eed 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl
@@ -25,7 +25,7 @@
 
 // fn sinh(f16) -> f16
 fn sinh_69cce2() {
-  var res: f16 = sinh(f16());
+  var res: f16 = sinh(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.dxc.hlsl
index 2772106..7b8e6ce 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_69cce2() {
-  float16_t res = sinh(float16_t(0.0h));
+  float16_t res = sinh(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.glsl
index 4b0c3e4..a64c8dd 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_69cce2() {
-  float16_t res = sinh(0.0hf);
+  float16_t res = sinh(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_69cce2() {
-  float16_t res = sinh(0.0hf);
+  float16_t res = sinh(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_69cce2() {
-  float16_t res = sinh(0.0hf);
+  float16_t res = sinh(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.msl
index 5fada22..ae6c123 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_69cce2() {
-  half res = sinh(0.0h);
+  half res = sinh(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.spvasm
index 994f5e4..af0bf6f 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sinh_69cce2 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Sinh %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Sinh %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %sinh_69cce2
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %sinh_69cce2
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %sinh_69cce2
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %sinh_69cce2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %sinh_69cce2
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %sinh_69cce2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.wgsl
index 8defcbd..1f7cd9a 100644
--- a/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/69cce2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sinh_69cce2() {
-  var res : f16 = sinh(f16());
+  var res : f16 = sinh(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl
index 09ce2ee..7c5a290 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl
@@ -25,7 +25,7 @@
 
 // fn sinh(vec<2, f16>) -> vec<2, f16>
 fn sinh_924f19() {
-  var res: vec2<f16> = sinh(vec2<f16>(f16()));
+  var res: vec2<f16> = sinh(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.dxc.hlsl
index e79ca20..cdcc434 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_924f19() {
-  vector<float16_t, 2> res = sinh((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = sinh((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.glsl
index 844c7ec..fd2eb90 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_924f19() {
-  f16vec2 res = sinh(f16vec2(0.0hf));
+  f16vec2 res = sinh(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_924f19() {
-  f16vec2 res = sinh(f16vec2(0.0hf));
+  f16vec2 res = sinh(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_924f19() {
-  f16vec2 res = sinh(f16vec2(0.0hf));
+  f16vec2 res = sinh(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.msl
index 48d04ae..64fe921 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_924f19() {
-  half2 res = sinh(half2(0.0h));
+  half2 res = sinh(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.spvasm
index 5f2db5e..59e22b3 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sinh_924f19 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Sinh %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Sinh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sinh_924f19
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sinh_924f19
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sinh_924f19
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sinh_924f19
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sinh_924f19
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sinh_924f19
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.wgsl
index d384cab..7ebb07c 100644
--- a/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/924f19.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sinh_924f19() {
-  var res : vec2<f16> = sinh(vec2<f16>(f16()));
+  var res : vec2<f16> = sinh(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl
index 878d0b6..c73702f 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl
@@ -25,7 +25,7 @@
 
 // fn sinh(vec<4, f16>) -> vec<4, f16>
 fn sinh_ba7e25() {
-  var res: vec4<f16> = sinh(vec4<f16>(f16()));
+  var res: vec4<f16> = sinh(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.dxc.hlsl
index 87cbff0..a5b5e1c 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_ba7e25() {
-  vector<float16_t, 4> res = sinh((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = sinh((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.glsl
index 61015c0..f404443 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_ba7e25() {
-  f16vec4 res = sinh(f16vec4(0.0hf));
+  f16vec4 res = sinh(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_ba7e25() {
-  f16vec4 res = sinh(f16vec4(0.0hf));
+  f16vec4 res = sinh(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_ba7e25() {
-  f16vec4 res = sinh(f16vec4(0.0hf));
+  f16vec4 res = sinh(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.msl
index 9aef6b3..bd5ec4c 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_ba7e25() {
-  half4 res = sinh(half4(0.0h));
+  half4 res = sinh(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.spvasm
index 3e9f2c0..51403b1 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sinh_ba7e25 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Sinh %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Sinh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sinh_ba7e25
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sinh_ba7e25
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sinh_ba7e25
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sinh_ba7e25
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sinh_ba7e25
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sinh_ba7e25
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.wgsl
index 9587e3e..d05628a 100644
--- a/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sinh/ba7e25.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sinh_ba7e25() {
-  var res : vec4<f16> = sinh(vec4<f16>(f16()));
+  var res : vec4<f16> = sinh(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl
index a6bdd56..df27cfa 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl
@@ -25,7 +25,7 @@
 
 // fn smoothstep(vec<2, f16>, vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn smoothstep_12c031() {
-  var res: vec2<f16> = smoothstep(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = smoothstep(vec2<f16>(1.h), vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.dxc.hlsl
index 836c5b9..3a449d7 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void smoothstep_12c031() {
-  vector<float16_t, 2> res = smoothstep((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = smoothstep((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.glsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.glsl
index 64a110f..2e1fb6f 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_12c031() {
-  f16vec2 res = smoothstep(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = smoothstep(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void smoothstep_12c031() {
-  f16vec2 res = smoothstep(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = smoothstep(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_12c031() {
-  f16vec2 res = smoothstep(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf));
+  f16vec2 res = smoothstep(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.msl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.msl
index 1f30e7c..b11f421 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void smoothstep_12c031() {
-  half2 res = smoothstep(half2(0.0h), half2(0.0h), half2(0.0h));
+  half2 res = smoothstep(half2(1.0h), half2(1.0h), half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.spvasm
index aaaee6e..1df4bfc 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %smoothstep_12c031 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 SmoothStep %17 %17 %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 SmoothStep %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %smoothstep_12c031
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %smoothstep_12c031
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %smoothstep_12c031
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %smoothstep_12c031
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %smoothstep_12c031
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %smoothstep_12c031
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.wgsl
index 62ad2a7..e48b625 100644
--- a/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/12c031.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn smoothstep_12c031() {
-  var res : vec2<f16> = smoothstep(vec2<f16>(f16()), vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = smoothstep(vec2<f16>(1.0h), vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl
index d9e1447..2fe58c0 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl
@@ -25,7 +25,7 @@
 
 // fn smoothstep(f16, f16, f16) -> f16
 fn smoothstep_586e12() {
-  var res: f16 = smoothstep(f16(), f16(), f16());
+  var res: f16 = smoothstep(1.h, 1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.dxc.hlsl
index 0a0bb8a..869b831 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void smoothstep_586e12() {
-  float16_t res = smoothstep(float16_t(0.0h), float16_t(0.0h), float16_t(0.0h));
+  float16_t res = smoothstep(float16_t(1.0h), float16_t(1.0h), float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.glsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.glsl
index 26afc28..33de993 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_586e12() {
-  float16_t res = smoothstep(0.0hf, 0.0hf, 0.0hf);
+  float16_t res = smoothstep(1.0hf, 1.0hf, 1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void smoothstep_586e12() {
-  float16_t res = smoothstep(0.0hf, 0.0hf, 0.0hf);
+  float16_t res = smoothstep(1.0hf, 1.0hf, 1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_586e12() {
-  float16_t res = smoothstep(0.0hf, 0.0hf, 0.0hf);
+  float16_t res = smoothstep(1.0hf, 1.0hf, 1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.msl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.msl
index a6a9fb3..8ab6ed1 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void smoothstep_586e12() {
-  half res = smoothstep(0.0h, 0.0h, 0.0h);
+  half res = smoothstep(1.0h, 1.0h, 1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.spvasm
index 38ef86f..424b166 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %smoothstep_586e12 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 SmoothStep %16 %16 %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 SmoothStep %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %smoothstep_586e12
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %smoothstep_586e12
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %smoothstep_586e12
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %smoothstep_586e12
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %smoothstep_586e12
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %smoothstep_586e12
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.wgsl
index e6600ae..bfd4e63 100644
--- a/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/586e12.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn smoothstep_586e12() {
-  var res : f16 = smoothstep(f16(), f16(), f16());
+  var res : f16 = smoothstep(1.0h, 1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl
index 4fdbd51..b21a6ba 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl
@@ -25,7 +25,7 @@
 
 // fn smoothstep(vec<3, f16>, vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn smoothstep_6e7a74() {
-  var res: vec3<f16> = smoothstep(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = smoothstep(vec3<f16>(1.h), vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.dxc.hlsl
index f1869c2..4a5261e 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void smoothstep_6e7a74() {
-  vector<float16_t, 3> res = smoothstep((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = smoothstep((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.glsl
index 12129b7..39c0e20 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_6e7a74() {
-  f16vec3 res = smoothstep(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = smoothstep(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void smoothstep_6e7a74() {
-  f16vec3 res = smoothstep(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = smoothstep(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_6e7a74() {
-  f16vec3 res = smoothstep(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf));
+  f16vec3 res = smoothstep(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.msl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.msl
index d90125c..e4b2026 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void smoothstep_6e7a74() {
-  half3 res = smoothstep(half3(0.0h), half3(0.0h), half3(0.0h));
+  half3 res = smoothstep(half3(1.0h), half3(1.0h), half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.spvasm
index 21d9c28..d381603 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %smoothstep_6e7a74 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 SmoothStep %17 %17 %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 SmoothStep %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %smoothstep_6e7a74
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %smoothstep_6e7a74
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %smoothstep_6e7a74
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %smoothstep_6e7a74
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %smoothstep_6e7a74
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %smoothstep_6e7a74
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.wgsl
index 1a7ea0d..807bdab 100644
--- a/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/6e7a74.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn smoothstep_6e7a74() {
-  var res : vec3<f16> = smoothstep(vec3<f16>(f16()), vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = smoothstep(vec3<f16>(1.0h), vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl
index e1de207..523df81 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl
@@ -25,7 +25,7 @@
 
 // fn smoothstep(vec<4, f16>, vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn smoothstep_c43ebd() {
-  var res: vec4<f16> = smoothstep(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = smoothstep(vec4<f16>(1.h), vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.dxc.hlsl
index e25a8cd..7c6c44e 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void smoothstep_c43ebd() {
-  vector<float16_t, 4> res = smoothstep((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = smoothstep((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.glsl
index b67a5c8..996656a 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_c43ebd() {
-  f16vec4 res = smoothstep(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = smoothstep(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void smoothstep_c43ebd() {
-  f16vec4 res = smoothstep(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = smoothstep(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void smoothstep_c43ebd() {
-  f16vec4 res = smoothstep(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf));
+  f16vec4 res = smoothstep(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.msl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.msl
index c7743d7..3503d95 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void smoothstep_c43ebd() {
-  half4 res = smoothstep(half4(0.0h), half4(0.0h), half4(0.0h));
+  half4 res = smoothstep(half4(1.0h), half4(1.0h), half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.spvasm
index 9230951..a81f848 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %smoothstep_c43ebd = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 SmoothStep %17 %17 %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 SmoothStep %18 %18 %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %smoothstep_c43ebd
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %smoothstep_c43ebd
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %smoothstep_c43ebd
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %smoothstep_c43ebd
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %smoothstep_c43ebd
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %smoothstep_c43ebd
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.wgsl
index 1b6b725..aad2d01 100644
--- a/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/smoothstep/c43ebd.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn smoothstep_c43ebd() {
-  var res : vec4<f16> = smoothstep(vec4<f16>(f16()), vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = smoothstep(vec4<f16>(1.0h), vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl
index 019539d..7a9166a 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl
@@ -25,7 +25,7 @@
 
 // fn sqrt(vec<4, f16>) -> vec<4, f16>
 fn sqrt_803d1c() {
-  var res: vec4<f16> = sqrt(vec4<f16>(f16()));
+  var res: vec4<f16> = sqrt(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.dxc.hlsl
index 0b44b89..1f072d6 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sqrt_803d1c() {
-  vector<float16_t, 4> res = sqrt((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = sqrt((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.glsl
index 2b0c4f5..8282522 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_803d1c() {
-  f16vec4 res = sqrt(f16vec4(0.0hf));
+  f16vec4 res = sqrt(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sqrt_803d1c() {
-  f16vec4 res = sqrt(f16vec4(0.0hf));
+  f16vec4 res = sqrt(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_803d1c() {
-  f16vec4 res = sqrt(f16vec4(0.0hf));
+  f16vec4 res = sqrt(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.msl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.msl
index c85c1ae..f5ed424 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sqrt_803d1c() {
-  half4 res = sqrt(half4(0.0h));
+  half4 res = sqrt(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.spvasm
index 3204761..eb9d728 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sqrt_803d1c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Sqrt %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Sqrt %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sqrt_803d1c
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sqrt_803d1c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sqrt_803d1c
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sqrt_803d1c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sqrt_803d1c
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sqrt_803d1c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.wgsl
index 3361e60..52cba12 100644
--- a/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/803d1c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sqrt_803d1c() {
-  var res : vec4<f16> = sqrt(vec4<f16>(f16()));
+  var res : vec4<f16> = sqrt(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl
index 7bdb02f..7145d1a 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl
@@ -25,7 +25,7 @@
 
 // fn sqrt(vec<3, f16>) -> vec<3, f16>
 fn sqrt_895a0c() {
-  var res: vec3<f16> = sqrt(vec3<f16>(f16()));
+  var res: vec3<f16> = sqrt(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.dxc.hlsl
index 3ce6e95..b3f2c26 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sqrt_895a0c() {
-  vector<float16_t, 3> res = sqrt((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = sqrt((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.glsl
index d0cedab..4a89c94 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_895a0c() {
-  f16vec3 res = sqrt(f16vec3(0.0hf));
+  f16vec3 res = sqrt(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sqrt_895a0c() {
-  f16vec3 res = sqrt(f16vec3(0.0hf));
+  f16vec3 res = sqrt(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_895a0c() {
-  f16vec3 res = sqrt(f16vec3(0.0hf));
+  f16vec3 res = sqrt(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.msl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.msl
index 72be3e1..e51d255 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sqrt_895a0c() {
-  half3 res = sqrt(half3(0.0h));
+  half3 res = sqrt(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.spvasm
index bcc0768..377745c 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sqrt_895a0c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Sqrt %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Sqrt %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sqrt_895a0c
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sqrt_895a0c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sqrt_895a0c
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sqrt_895a0c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sqrt_895a0c
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sqrt_895a0c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.wgsl
index 44c3686..b853037 100644
--- a/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/895a0c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sqrt_895a0c() {
-  var res : vec3<f16> = sqrt(vec3<f16>(f16()));
+  var res : vec3<f16> = sqrt(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl
index 4158a6f..3f47df0 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl
@@ -25,7 +25,7 @@
 
 // fn sqrt(vec<2, f16>) -> vec<2, f16>
 fn sqrt_d9ab4d() {
-  var res: vec2<f16> = sqrt(vec2<f16>(f16()));
+  var res: vec2<f16> = sqrt(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.dxc.hlsl
index dc9426f..a31a43c 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sqrt_d9ab4d() {
-  vector<float16_t, 2> res = sqrt((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = sqrt((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.glsl
index 8a12e8f..d31df4c 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_d9ab4d() {
-  f16vec2 res = sqrt(f16vec2(0.0hf));
+  f16vec2 res = sqrt(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sqrt_d9ab4d() {
-  f16vec2 res = sqrt(f16vec2(0.0hf));
+  f16vec2 res = sqrt(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_d9ab4d() {
-  f16vec2 res = sqrt(f16vec2(0.0hf));
+  f16vec2 res = sqrt(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.msl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.msl
index d64d5a1e..acc30f2 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sqrt_d9ab4d() {
-  half2 res = sqrt(half2(0.0h));
+  half2 res = sqrt(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.spvasm
index d18a251..f186c13 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sqrt_d9ab4d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Sqrt %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Sqrt %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %sqrt_d9ab4d
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %sqrt_d9ab4d
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %sqrt_d9ab4d
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %sqrt_d9ab4d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %sqrt_d9ab4d
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %sqrt_d9ab4d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.wgsl
index ccda9f1..6b1d995 100644
--- a/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/d9ab4d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sqrt_d9ab4d() {
-  var res : vec2<f16> = sqrt(vec2<f16>(f16()));
+  var res : vec2<f16> = sqrt(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl
index 4dc19b0..ab7ca7e 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl
@@ -25,7 +25,7 @@
 
 // fn sqrt(f16) -> f16
 fn sqrt_ec33e9() {
-  var res: f16 = sqrt(f16());
+  var res: f16 = sqrt(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.dxc.hlsl
index c76014e..bc3797b 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sqrt_ec33e9() {
-  float16_t res = sqrt(float16_t(0.0h));
+  float16_t res = sqrt(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.glsl
index 89b0d09..d08c0af 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_ec33e9() {
-  float16_t res = sqrt(0.0hf);
+  float16_t res = sqrt(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sqrt_ec33e9() {
-  float16_t res = sqrt(0.0hf);
+  float16_t res = sqrt(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sqrt_ec33e9() {
-  float16_t res = sqrt(0.0hf);
+  float16_t res = sqrt(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.msl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.msl
index bfd3d49..cdf9675 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sqrt_ec33e9() {
-  half res = sqrt(0.0h);
+  half res = sqrt(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.spvasm
index a39a404..06634a2 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %sqrt_ec33e9 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Sqrt %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Sqrt %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %sqrt_ec33e9
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %sqrt_ec33e9
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %sqrt_ec33e9
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %sqrt_ec33e9
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %sqrt_ec33e9
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %sqrt_ec33e9
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.wgsl
index 5145314..50880e5 100644
--- a/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sqrt/ec33e9.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn sqrt_ec33e9() {
-  var res : f16 = sqrt(f16());
+  var res : f16 = sqrt(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/07cb06.wgsl b/test/tint/builtins/gen/literal/step/07cb06.wgsl
index 2baa12b..47da6bf 100644
--- a/test/tint/builtins/gen/literal/step/07cb06.wgsl
+++ b/test/tint/builtins/gen/literal/step/07cb06.wgsl
@@ -25,7 +25,7 @@
 
 // fn step(vec<2, f16>, vec<2, f16>) -> vec<2, f16>
 fn step_07cb06() {
-  var res: vec2<f16> = step(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res: vec2<f16> = step(vec2<f16>(1.h), vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.wgsl
index 4ebf853..31dbd2d 100644
--- a/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/07cb06.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn step_07cb06() {
-  var res : vec2<f16> = step(vec2<f16>(f16()), vec2<f16>(f16()));
+  var res : vec2<f16> = step(vec2<f16>(1.0h), vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/630d07.wgsl b/test/tint/builtins/gen/literal/step/630d07.wgsl
index b789a99..b7fe024 100644
--- a/test/tint/builtins/gen/literal/step/630d07.wgsl
+++ b/test/tint/builtins/gen/literal/step/630d07.wgsl
@@ -25,7 +25,7 @@
 
 // fn step(f16, f16) -> f16
 fn step_630d07() {
-  var res: f16 = step(f16(), f16());
+  var res: f16 = step(1.h, 1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.wgsl
index 6a0527d..666cdf0 100644
--- a/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/630d07.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn step_630d07() {
-  var res : f16 = step(f16(), f16());
+  var res : f16 = step(1.0h, 1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/baa320.wgsl b/test/tint/builtins/gen/literal/step/baa320.wgsl
index b2e66b0..f30ef35 100644
--- a/test/tint/builtins/gen/literal/step/baa320.wgsl
+++ b/test/tint/builtins/gen/literal/step/baa320.wgsl
@@ -25,7 +25,7 @@
 
 // fn step(vec<4, f16>, vec<4, f16>) -> vec<4, f16>
 fn step_baa320() {
-  var res: vec4<f16> = step(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res: vec4<f16> = step(vec4<f16>(1.h), vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.wgsl
index c500a65..5199ffc 100644
--- a/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/baa320.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn step_baa320() {
-  var res : vec4<f16> = step(vec4<f16>(f16()), vec4<f16>(f16()));
+  var res : vec4<f16> = step(vec4<f16>(1.0h), vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/cc6b61.wgsl b/test/tint/builtins/gen/literal/step/cc6b61.wgsl
index 77da1c9..d4064c5 100644
--- a/test/tint/builtins/gen/literal/step/cc6b61.wgsl
+++ b/test/tint/builtins/gen/literal/step/cc6b61.wgsl
@@ -25,7 +25,7 @@
 
 // fn step(vec<3, f16>, vec<3, f16>) -> vec<3, f16>
 fn step_cc6b61() {
-  var res: vec3<f16> = step(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res: vec3<f16> = step(vec3<f16>(1.h), vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.wgsl
index d1d9624..a68542a 100644
--- a/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/step/cc6b61.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn step_cc6b61() {
-  var res : vec3<f16> = step(vec3<f16>(f16()), vec3<f16>(f16()));
+  var res : vec3<f16> = step(vec3<f16>(1.0h), vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl
index 912e7b9..ce8f09b 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl
@@ -25,7 +25,7 @@
 
 // fn tan(vec<4, f16>) -> vec<4, f16>
 fn tan_539e54() {
-  var res: vec4<f16> = tan(vec4<f16>(f16()));
+  var res: vec4<f16> = tan(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.dxc.hlsl
index aa87efc..4de5feb 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_539e54() {
-  vector<float16_t, 4> res = tan((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = tan((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.glsl
index 8c94127..2db4796 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_539e54() {
-  f16vec4 res = tan(f16vec4(0.0hf));
+  f16vec4 res = tan(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tan_539e54() {
-  f16vec4 res = tan(f16vec4(0.0hf));
+  f16vec4 res = tan(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_539e54() {
-  f16vec4 res = tan(f16vec4(0.0hf));
+  f16vec4 res = tan(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.msl
index 268bfda..eabcb69 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_539e54() {
-  half4 res = tan(half4(0.0h));
+  half4 res = tan(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.spvasm
index 12de658..5c8e228 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %tan_539e54 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Tan %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Tan %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %tan_539e54
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tan_539e54
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %tan_539e54
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %tan_539e54
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %tan_539e54
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %tan_539e54
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.wgsl
index 91e3dfd..7554cbe 100644
--- a/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/539e54.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tan_539e54() {
-  var res : vec4<f16> = tan(vec4<f16>(f16()));
+  var res : vec4<f16> = tan(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl
index 1ff6156..a222cb8 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl
@@ -25,7 +25,7 @@
 
 // fn tan(vec<2, f16>) -> vec<2, f16>
 fn tan_9f7c9c() {
-  var res: vec2<f16> = tan(vec2<f16>(f16()));
+  var res: vec2<f16> = tan(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.dxc.hlsl
index bac1555..563a5cc 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_9f7c9c() {
-  vector<float16_t, 2> res = tan((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = tan((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.glsl
index 2b07fc4..765a8a1 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_9f7c9c() {
-  f16vec2 res = tan(f16vec2(0.0hf));
+  f16vec2 res = tan(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tan_9f7c9c() {
-  f16vec2 res = tan(f16vec2(0.0hf));
+  f16vec2 res = tan(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_9f7c9c() {
-  f16vec2 res = tan(f16vec2(0.0hf));
+  f16vec2 res = tan(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.msl
index ff408ad..7780f42 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_9f7c9c() {
-  half2 res = tan(half2(0.0h));
+  half2 res = tan(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.spvasm
index 658d6a6..ef0a883 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %tan_9f7c9c = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Tan %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Tan %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %tan_9f7c9c
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tan_9f7c9c
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %tan_9f7c9c
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %tan_9f7c9c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %tan_9f7c9c
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %tan_9f7c9c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.wgsl
index 1287e05..f06c471 100644
--- a/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/9f7c9c.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tan_9f7c9c() {
-  var res : vec2<f16> = tan(vec2<f16>(f16()));
+  var res : vec2<f16> = tan(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl
index c76db2d..9b0cd1d 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl
@@ -25,7 +25,7 @@
 
 // fn tan(f16) -> f16
 fn tan_d4d491() {
-  var res: f16 = tan(f16());
+  var res: f16 = tan(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.dxc.hlsl
index a4be323..511c901 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_d4d491() {
-  float16_t res = tan(float16_t(0.0h));
+  float16_t res = tan(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.glsl
index e6a73c8..05e0766 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_d4d491() {
-  float16_t res = tan(0.0hf);
+  float16_t res = tan(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tan_d4d491() {
-  float16_t res = tan(0.0hf);
+  float16_t res = tan(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_d4d491() {
-  float16_t res = tan(0.0hf);
+  float16_t res = tan(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.msl
index 3dc2e14..fb3879e 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_d4d491() {
-  half res = tan(0.0h);
+  half res = tan(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.spvasm
index 661dd9a..af79640 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %tan_d4d491 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Tan %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Tan %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %tan_d4d491
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %tan_d4d491
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %tan_d4d491
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %tan_d4d491
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %tan_d4d491
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %tan_d4d491
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.wgsl
index da8f919..2c01808 100644
--- a/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/d4d491.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tan_d4d491() {
-  var res : f16 = tan(f16());
+  var res : f16 = tan(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl
index 9d70504..2afdfa6 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl
@@ -25,7 +25,7 @@
 
 // fn tan(vec<3, f16>) -> vec<3, f16>
 fn tan_db0456() {
-  var res: vec3<f16> = tan(vec3<f16>(f16()));
+  var res: vec3<f16> = tan(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.dxc.hlsl
index 2253d71..5899c36 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_db0456() {
-  vector<float16_t, 3> res = tan((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = tan((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.glsl
index 4812d1b..fe3bade 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_db0456() {
-  f16vec3 res = tan(f16vec3(0.0hf));
+  f16vec3 res = tan(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tan_db0456() {
-  f16vec3 res = tan(f16vec3(0.0hf));
+  f16vec3 res = tan(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tan_db0456() {
-  f16vec3 res = tan(f16vec3(0.0hf));
+  f16vec3 res = tan(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.msl
index 3d87665..7adab56 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_db0456() {
-  half3 res = tan(half3(0.0h));
+  half3 res = tan(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.spvasm
index 2f1c402..a66872b 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
  %tan_db0456 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Tan %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Tan %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %tan_db0456
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tan_db0456
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %tan_db0456
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %tan_db0456
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %tan_db0456
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %tan_db0456
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.wgsl
index dc68ad2..13a6134 100644
--- a/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tan/db0456.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tan_db0456() {
-  var res : vec3<f16> = tan(vec3<f16>(f16()));
+  var res : vec3<f16> = tan(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl
index a02fef4..8a52a4d 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl
@@ -25,7 +25,7 @@
 
 // fn tanh(vec<3, f16>) -> vec<3, f16>
 fn tanh_06a4fe() {
-  var res: vec3<f16> = tanh(vec3<f16>(f16()));
+  var res: vec3<f16> = tanh(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.dxc.hlsl
index fb193b2..7bd1656 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_06a4fe() {
-  vector<float16_t, 3> res = tanh((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = tanh((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.glsl
index 0840a2c..3b1ec6b 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_06a4fe() {
-  f16vec3 res = tanh(f16vec3(0.0hf));
+  f16vec3 res = tanh(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_06a4fe() {
-  f16vec3 res = tanh(f16vec3(0.0hf));
+  f16vec3 res = tanh(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_06a4fe() {
-  f16vec3 res = tanh(f16vec3(0.0hf));
+  f16vec3 res = tanh(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.msl
index ae1bf02..7a53efa 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_06a4fe() {
-  half3 res = tanh(half3(0.0h));
+  half3 res = tanh(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.spvasm
index b06c654..0c187bf 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %tanh_06a4fe = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Tanh %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Tanh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %tanh_06a4fe
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tanh_06a4fe
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %tanh_06a4fe
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %tanh_06a4fe
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %tanh_06a4fe
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %tanh_06a4fe
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.wgsl
index fde59a5..ecbc835 100644
--- a/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/06a4fe.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tanh_06a4fe() {
-  var res : vec3<f16> = tanh(vec3<f16>(f16()));
+  var res : vec3<f16> = tanh(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl
index b83daae..59d2edc 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl
@@ -25,7 +25,7 @@
 
 // fn tanh(f16) -> f16
 fn tanh_5b19af() {
-  var res: f16 = tanh(f16());
+  var res: f16 = tanh(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.dxc.hlsl
index 9d2dee6..0beb95e 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_5b19af() {
-  float16_t res = tanh(float16_t(0.0h));
+  float16_t res = tanh(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.glsl
index b909cb9..107a42c 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_5b19af() {
-  float16_t res = tanh(0.0hf);
+  float16_t res = tanh(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_5b19af() {
-  float16_t res = tanh(0.0hf);
+  float16_t res = tanh(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_5b19af() {
-  float16_t res = tanh(0.0hf);
+  float16_t res = tanh(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.msl
index a012294..74ce3f2 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_5b19af() {
-  half res = tanh(0.0h);
+  half res = tanh(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.spvasm
index db2580f..a7669f7 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %tanh_5b19af = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Tanh %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Tanh %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %tanh_5b19af
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %tanh_5b19af
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %tanh_5b19af
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %tanh_5b19af
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %tanh_5b19af
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %tanh_5b19af
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.wgsl
index a2e4217..01e06f4 100644
--- a/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/5b19af.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tanh_5b19af() {
-  var res : f16 = tanh(f16());
+  var res : f16 = tanh(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl
index acd3e21..c489af8 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl
@@ -25,7 +25,7 @@
 
 // fn tanh(vec<2, f16>) -> vec<2, f16>
 fn tanh_6d105a() {
-  var res: vec2<f16> = tanh(vec2<f16>(f16()));
+  var res: vec2<f16> = tanh(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.dxc.hlsl
index 9a1b417..f4cb76a 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_6d105a() {
-  vector<float16_t, 2> res = tanh((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = tanh((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.glsl
index f5aa9d4..b4a21cd 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_6d105a() {
-  f16vec2 res = tanh(f16vec2(0.0hf));
+  f16vec2 res = tanh(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_6d105a() {
-  f16vec2 res = tanh(f16vec2(0.0hf));
+  f16vec2 res = tanh(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_6d105a() {
-  f16vec2 res = tanh(f16vec2(0.0hf));
+  f16vec2 res = tanh(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.msl
index b9795af..b16a5a5 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_6d105a() {
-  half2 res = tanh(half2(0.0h));
+  half2 res = tanh(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.spvasm
index 101dbc6..95167d3 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %tanh_6d105a = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Tanh %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Tanh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %tanh_6d105a
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tanh_6d105a
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %tanh_6d105a
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %tanh_6d105a
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %tanh_6d105a
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %tanh_6d105a
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.wgsl
index 9b0b089..1c6722d 100644
--- a/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/6d105a.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tanh_6d105a() {
-  var res : vec2<f16> = tanh(vec2<f16>(f16()));
+  var res : vec2<f16> = tanh(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl
index c0579cc..dbb6721 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl
@@ -25,7 +25,7 @@
 
 // fn tanh(vec<4, f16>) -> vec<4, f16>
 fn tanh_e8efb3() {
-  var res: vec4<f16> = tanh(vec4<f16>(f16()));
+  var res: vec4<f16> = tanh(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.dxc.hlsl
index 547e3c1..6af0a2f 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_e8efb3() {
-  vector<float16_t, 4> res = tanh((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = tanh((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.glsl
index 7d9bf91..040f77b 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_e8efb3() {
-  f16vec4 res = tanh(f16vec4(0.0hf));
+  f16vec4 res = tanh(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_e8efb3() {
-  f16vec4 res = tanh(f16vec4(0.0hf));
+  f16vec4 res = tanh(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_e8efb3() {
-  f16vec4 res = tanh(f16vec4(0.0hf));
+  f16vec4 res = tanh(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.msl
index 7da14aa..1d1ac71 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_e8efb3() {
-  half4 res = tanh(half4(0.0h));
+  half4 res = tanh(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.spvasm
index 4b18be4..230071b 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %tanh_e8efb3 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Tanh %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Tanh %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %tanh_e8efb3
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tanh_e8efb3
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %tanh_e8efb3
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %tanh_e8efb3
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %tanh_e8efb3
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %tanh_e8efb3
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.wgsl
index 5cde1f8..72600d8 100644
--- a/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/tanh/e8efb3.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn tanh_e8efb3() {
-  var res : vec4<f16> = tanh(vec4<f16>(f16()));
+  var res : vec4<f16> = tanh(vec4<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl
index a413e2b..53a99be 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<3, 3, f16>) -> mat<3, 3, f16>
 fn transpose_06794e() {
-  var res: mat3x3<f16> = transpose(mat3x3<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat3x3<f16> = transpose(mat3x3<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.dxc.hlsl
index 134ef42..d9407ce 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_06794e() {
-  matrix<float16_t, 3, 3> res = transpose(matrix<float16_t, 3, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx));
+  matrix<float16_t, 3, 3> res = transpose(matrix<float16_t, 3, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.glsl
index 045b737..a860488 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_06794e() {
-  f16mat3 res = transpose(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3 res = transpose(f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_06794e() {
-  f16mat3 res = transpose(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3 res = transpose(f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_06794e() {
-  f16mat3 res = transpose(f16mat3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3 res = transpose(f16mat3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.msl
index e698039..1a1def4 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_06794e() {
-  half3x3 res = transpose(half3x3(half3(0.0h), half3(0.0h), half3(0.0h)));
+  half3x3 res = transpose(half3x3(half3(1.0h), half3(1.0h), half3(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.spvasm
index 26c14aa..7c401d5 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,39 @@
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
  %mat3v3half = OpTypeMatrix %v3half 3
-         %17 = OpConstantNull %mat3v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %19 = OpConstantComposite %mat3v3half %18 %18 %18
 %_ptr_Function_mat3v3half = OpTypePointer Function %mat3v3half
-         %20 = OpTypeFunction %v4float
+         %22 = OpConstantNull %mat3v3half
+         %23 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_06794e = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat3v3half Function %17
-         %13 = OpTranspose %mat3v3half %17
+        %res = OpVariable %_ptr_Function_mat3v3half Function %22
+         %13 = OpTranspose %mat3v3half %19
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %transpose_06794e
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %transpose_06794e
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %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
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %transpose_06794e
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %transpose_06794e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_06794e
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %transpose_06794e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.wgsl
index ac99ba2..b1ba096 100644
--- a/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/06794e.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_06794e() {
-  var res : mat3x3<f16> = transpose(mat3x3<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat3x3<f16> = transpose(mat3x3<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl
index dd1c459..ca694d5 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<4, 2, f16>) -> mat<2, 4, f16>
 fn transpose_5edd96() {
-  var res: mat2x4<f16> = transpose(mat4x2<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat2x4<f16> = transpose(mat4x2<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.dxc.hlsl
index 1f253b9..3c9585c 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_5edd96() {
-  matrix<float16_t, 2, 4> res = transpose(matrix<float16_t, 4, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx));
+  matrix<float16_t, 2, 4> res = transpose(matrix<float16_t, 4, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.glsl
index 48b8ac1..d0deba2 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_5edd96() {
-  f16mat2x4 res = transpose(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2x4 res = transpose(f16mat4x2(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_5edd96() {
-  f16mat2x4 res = transpose(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2x4 res = transpose(f16mat4x2(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_5edd96() {
-  f16mat2x4 res = transpose(f16mat4x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2x4 res = transpose(f16mat4x2(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.msl
index 09cffcb..538c05a 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_5edd96() {
-  half2x4 res = transpose(half4x2(half2(0.0h), half2(0.0h), half2(0.0h), half2(0.0h)));
+  half2x4 res = transpose(half4x2(half2(1.0h), half2(1.0h), half2(1.0h), half2(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.spvasm
index 07e8594..c85cda1 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -39,37 +39,39 @@
  %mat2v4half = OpTypeMatrix %v4half 2
      %v2half = OpTypeVector %half 2
  %mat4v2half = OpTypeMatrix %v2half 4
-         %19 = OpConstantNull %mat4v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %20 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
+         %21 = OpConstantComposite %mat4v2half %20 %20 %20 %20
 %_ptr_Function_mat2v4half = OpTypePointer Function %mat2v4half
-         %22 = OpConstantNull %mat2v4half
-         %23 = OpTypeFunction %v4float
+         %24 = OpConstantNull %mat2v4half
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_5edd96 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat2v4half Function %22
-         %13 = OpTranspose %mat2v4half %19
+        %res = OpVariable %_ptr_Function_mat2v4half Function %24
+         %13 = OpTranspose %mat2v4half %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %transpose_5edd96
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %transpose_5edd96
                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
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_5edd96
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %transpose_5edd96
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %transpose_5edd96
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %transpose_5edd96
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.wgsl
index aaf9fbf..3edbfa2 100644
--- a/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/5edd96.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_5edd96() {
-  var res : mat2x4<f16> = transpose(mat4x2<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat2x4<f16> = transpose(mat4x2<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl
index 47e4c77..f5992a4 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<4, 3, f16>) -> mat<3, 4, f16>
 fn transpose_5f36bf() {
-  var res: mat3x4<f16> = transpose(mat4x3<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat3x4<f16> = transpose(mat4x3<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.dxc.hlsl
index b518924..cda6242 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_5f36bf() {
-  matrix<float16_t, 3, 4> res = transpose(matrix<float16_t, 4, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx));
+  matrix<float16_t, 3, 4> res = transpose(matrix<float16_t, 4, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.glsl
index bc4a794..6aba0b9 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_5f36bf() {
-  f16mat3x4 res = transpose(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3x4 res = transpose(f16mat4x3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_5f36bf() {
-  f16mat3x4 res = transpose(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3x4 res = transpose(f16mat4x3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_5f36bf() {
-  f16mat3x4 res = transpose(f16mat4x3(f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3x4 res = transpose(f16mat4x3(f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.msl
index d931f01..0545295 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_5f36bf() {
-  half3x4 res = transpose(half4x3(half3(0.0h), half3(0.0h), half3(0.0h), half3(0.0h)));
+  half3x4 res = transpose(half4x3(half3(1.0h), half3(1.0h), half3(1.0h), half3(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.spvasm
index c9e6ffa..1283679 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -39,37 +39,39 @@
  %mat3v4half = OpTypeMatrix %v4half 3
      %v3half = OpTypeVector %half 3
  %mat4v3half = OpTypeMatrix %v3half 4
-         %19 = OpConstantNull %mat4v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %20 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %21 = OpConstantComposite %mat4v3half %20 %20 %20 %20
 %_ptr_Function_mat3v4half = OpTypePointer Function %mat3v4half
-         %22 = OpConstantNull %mat3v4half
-         %23 = OpTypeFunction %v4float
+         %24 = OpConstantNull %mat3v4half
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_5f36bf = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat3v4half Function %22
-         %13 = OpTranspose %mat3v4half %19
+        %res = OpVariable %_ptr_Function_mat3v4half Function %24
+         %13 = OpTranspose %mat3v4half %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %transpose_5f36bf
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %transpose_5f36bf
                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
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_5f36bf
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %transpose_5f36bf
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %transpose_5f36bf
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %transpose_5f36bf
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.wgsl
index 878b15a..374302e 100644
--- a/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/5f36bf.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_5f36bf() {
-  var res : mat3x4<f16> = transpose(mat4x3<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat3x4<f16> = transpose(mat4x3<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl
index 5a59b3b..bd62bb3 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<2, 2, f16>) -> mat<2, 2, f16>
 fn transpose_7be8b2() {
-  var res: mat2x2<f16> = transpose(mat2x2<f16>(f16(), f16(), f16(), f16()));
+  var res: mat2x2<f16> = transpose(mat2x2<f16>(1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.dxc.hlsl
index e72e2d0..cfa9885 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_7be8b2() {
-  matrix<float16_t, 2, 2> res = transpose(matrix<float16_t, 2, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx));
+  matrix<float16_t, 2, 2> res = transpose(matrix<float16_t, 2, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.glsl
index 44cafb6..1d16a91 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_7be8b2() {
-  f16mat2 res = transpose(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2 res = transpose(f16mat2(f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_7be8b2() {
-  f16mat2 res = transpose(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2 res = transpose(f16mat2(f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_7be8b2() {
-  f16mat2 res = transpose(f16mat2(f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2 res = transpose(f16mat2(f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.msl
index 435d12f..68fc99b 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_7be8b2() {
-  half2x2 res = transpose(half2x2(half2(0.0h), half2(0.0h)));
+  half2x2 res = transpose(half2x2(half2(1.0h), half2(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.spvasm
index 7575dca..8c0e82a 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,39 @@
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
  %mat2v2half = OpTypeMatrix %v2half 2
-         %17 = OpConstantNull %mat2v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
+         %19 = OpConstantComposite %mat2v2half %18 %18
 %_ptr_Function_mat2v2half = OpTypePointer Function %mat2v2half
-         %20 = OpTypeFunction %v4float
+         %22 = OpConstantNull %mat2v2half
+         %23 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_7be8b2 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat2v2half Function %17
-         %13 = OpTranspose %mat2v2half %17
+        %res = OpVariable %_ptr_Function_mat2v2half Function %22
+         %13 = OpTranspose %mat2v2half %19
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %transpose_7be8b2
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %transpose_7be8b2
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %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
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %transpose_7be8b2
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %transpose_7be8b2
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_7be8b2
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %transpose_7be8b2
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.wgsl
index 437f1ce..9b4281f 100644
--- a/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/7be8b2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_7be8b2() {
-  var res : mat2x2<f16> = transpose(mat2x2<f16>(f16(), f16(), f16(), f16()));
+  var res : mat2x2<f16> = transpose(mat2x2<f16>(1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl b/test/tint/builtins/gen/literal/transpose/844869.wgsl
index 870582b..0548c1b 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<4, 4, f16>) -> mat<4, 4, f16>
 fn transpose_844869() {
-  var res: mat4x4<f16> = transpose(mat4x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat4x4<f16> = transpose(mat4x4<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.dxc.hlsl
index 0ad869b..f1af6cb 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_844869() {
-  matrix<float16_t, 4, 4> res = transpose(matrix<float16_t, 4, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx));
+  matrix<float16_t, 4, 4> res = transpose(matrix<float16_t, 4, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.glsl
index a244d66..46d711b 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_844869() {
-  f16mat4 res = transpose(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4 res = transpose(f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_844869() {
-  f16mat4 res = transpose(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4 res = transpose(f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_844869() {
-  f16mat4 res = transpose(f16mat4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4 res = transpose(f16mat4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.msl
index b02ce13..0b18d45 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_844869() {
-  half4x4 res = transpose(half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h)));
+  half4x4 res = transpose(half4x4(half4(1.0h), half4(1.0h), half4(1.0h), half4(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.spvasm
index 8308419..342309f 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 37
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,39 @@
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
  %mat4v4half = OpTypeMatrix %v4half 4
-         %17 = OpConstantNull %mat4v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %19 = OpConstantComposite %mat4v4half %18 %18 %18 %18
 %_ptr_Function_mat4v4half = OpTypePointer Function %mat4v4half
-         %20 = OpTypeFunction %v4float
+         %22 = OpConstantNull %mat4v4half
+         %23 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_844869 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat4v4half Function %17
-         %13 = OpTranspose %mat4v4half %17
+        %res = OpVariable %_ptr_Function_mat4v4half Function %22
+         %13 = OpTranspose %mat4v4half %19
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %transpose_844869
+%vertex_main_inner = OpFunction %v4float None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %transpose_844869
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %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
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %transpose_844869
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %transpose_844869
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_844869
+         %35 = OpLabel
+         %36 = OpFunctionCall %void %transpose_844869
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.wgsl
index b917ed4..8f36149 100644
--- a/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/844869.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_844869() {
-  var res : mat4x4<f16> = transpose(mat4x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat4x4<f16> = transpose(mat4x4<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl
index e792547..b755bbd 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<3, 4, f16>) -> mat<4, 3, f16>
 fn transpose_8c06ce() {
-  var res: mat4x3<f16> = transpose(mat3x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat4x3<f16> = transpose(mat3x4<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.dxc.hlsl
index 7962142..d0ed0a2 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_8c06ce() {
-  matrix<float16_t, 4, 3> res = transpose(matrix<float16_t, 3, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx));
+  matrix<float16_t, 4, 3> res = transpose(matrix<float16_t, 3, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.glsl
index 77ffe38..aebf782 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_8c06ce() {
-  f16mat4x3 res = transpose(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4x3 res = transpose(f16mat3x4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_8c06ce() {
-  f16mat4x3 res = transpose(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4x3 res = transpose(f16mat3x4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_8c06ce() {
-  f16mat4x3 res = transpose(f16mat3x4(f16vec4(0.0hf), f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4x3 res = transpose(f16mat3x4(f16vec4(1.0hf), f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.msl
index dd48f03..1b191a2 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_8c06ce() {
-  half4x3 res = transpose(half3x4(half4(0.0h), half4(0.0h), half4(0.0h)));
+  half4x3 res = transpose(half3x4(half4(1.0h), half4(1.0h), half4(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.spvasm
index 04c004e..2f35c48 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -39,37 +39,39 @@
  %mat4v3half = OpTypeMatrix %v3half 4
      %v4half = OpTypeVector %half 4
  %mat3v4half = OpTypeMatrix %v4half 3
-         %19 = OpConstantNull %mat3v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %20 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %21 = OpConstantComposite %mat3v4half %20 %20 %20
 %_ptr_Function_mat4v3half = OpTypePointer Function %mat4v3half
-         %22 = OpConstantNull %mat4v3half
-         %23 = OpTypeFunction %v4float
+         %24 = OpConstantNull %mat4v3half
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_8c06ce = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat4v3half Function %22
-         %13 = OpTranspose %mat4v3half %19
+        %res = OpVariable %_ptr_Function_mat4v3half Function %24
+         %13 = OpTranspose %mat4v3half %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %transpose_8c06ce
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %transpose_8c06ce
                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
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_8c06ce
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %transpose_8c06ce
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %transpose_8c06ce
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %transpose_8c06ce
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.wgsl
index 09d0c25..f2b4dc4 100644
--- a/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/8c06ce.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_8c06ce() {
-  var res : mat4x3<f16> = transpose(mat3x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat4x3<f16> = transpose(mat3x4<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl
index 7be77d2..d2e4c2b 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<3, 2, f16>) -> mat<2, 3, f16>
 fn transpose_b9ad1f() {
-  var res: mat2x3<f16> = transpose(mat3x2<f16>(f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat2x3<f16> = transpose(mat3x2<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.dxc.hlsl
index 97e3dcb..1d61c25 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_b9ad1f() {
-  matrix<float16_t, 2, 3> res = transpose(matrix<float16_t, 3, 2>((float16_t(0.0h)).xx, (float16_t(0.0h)).xx, (float16_t(0.0h)).xx));
+  matrix<float16_t, 2, 3> res = transpose(matrix<float16_t, 3, 2>((float16_t(1.0h)).xx, (float16_t(1.0h)).xx, (float16_t(1.0h)).xx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.glsl
index f549a0d..123e8c4 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_b9ad1f() {
-  f16mat2x3 res = transpose(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2x3 res = transpose(f16mat3x2(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_b9ad1f() {
-  f16mat2x3 res = transpose(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2x3 res = transpose(f16mat3x2(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_b9ad1f() {
-  f16mat2x3 res = transpose(f16mat3x2(f16vec2(0.0hf), f16vec2(0.0hf), f16vec2(0.0hf)));
+  f16mat2x3 res = transpose(f16mat3x2(f16vec2(1.0hf), f16vec2(1.0hf), f16vec2(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.msl
index 6fc6f1d..d449921 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_b9ad1f() {
-  half2x3 res = transpose(half3x2(half2(0.0h), half2(0.0h), half2(0.0h)));
+  half2x3 res = transpose(half3x2(half2(1.0h), half2(1.0h), half2(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.spvasm
index c3ed30e..19c2897 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -39,37 +39,39 @@
  %mat2v3half = OpTypeMatrix %v3half 2
      %v2half = OpTypeVector %half 2
  %mat3v2half = OpTypeMatrix %v2half 3
-         %19 = OpConstantNull %mat3v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %20 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
+         %21 = OpConstantComposite %mat3v2half %20 %20 %20
 %_ptr_Function_mat2v3half = OpTypePointer Function %mat2v3half
-         %22 = OpConstantNull %mat2v3half
-         %23 = OpTypeFunction %v4float
+         %24 = OpConstantNull %mat2v3half
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_b9ad1f = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat2v3half Function %22
-         %13 = OpTranspose %mat2v3half %19
+        %res = OpVariable %_ptr_Function_mat2v3half Function %24
+         %13 = OpTranspose %mat2v3half %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %transpose_b9ad1f
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %transpose_b9ad1f
                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
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_b9ad1f
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %transpose_b9ad1f
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %transpose_b9ad1f
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %transpose_b9ad1f
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.wgsl
index 49ee3fa..3d06432 100644
--- a/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/b9ad1f.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_b9ad1f() {
-  var res : mat2x3<f16> = transpose(mat3x2<f16>(f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat2x3<f16> = transpose(mat3x2<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl
index 4375de3..ebaa669 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<2, 3, f16>) -> mat<3, 2, f16>
 fn transpose_d6faec() {
-  var res: mat3x2<f16> = transpose(mat2x3<f16>(f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat3x2<f16> = transpose(mat2x3<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.dxc.hlsl
index 4ab9a4a..4baafb0 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_d6faec() {
-  matrix<float16_t, 3, 2> res = transpose(matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx));
+  matrix<float16_t, 3, 2> res = transpose(matrix<float16_t, 2, 3>((float16_t(1.0h)).xxx, (float16_t(1.0h)).xxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.glsl
index c7f7f4b..3712491 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_d6faec() {
-  f16mat3x2 res = transpose(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3x2 res = transpose(f16mat2x3(f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_d6faec() {
-  f16mat3x2 res = transpose(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3x2 res = transpose(f16mat2x3(f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_d6faec() {
-  f16mat3x2 res = transpose(f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf)));
+  f16mat3x2 res = transpose(f16mat2x3(f16vec3(1.0hf), f16vec3(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.msl
index b4629d5..b30b952 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_d6faec() {
-  half3x2 res = transpose(half2x3(half3(0.0h), half3(0.0h)));
+  half3x2 res = transpose(half2x3(half3(1.0h), half3(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.spvasm
index a9f192c..cbbfc9b 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -39,37 +39,39 @@
  %mat3v2half = OpTypeMatrix %v2half 3
      %v3half = OpTypeVector %half 3
  %mat2v3half = OpTypeMatrix %v3half 2
-         %19 = OpConstantNull %mat2v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %20 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %21 = OpConstantComposite %mat2v3half %20 %20
 %_ptr_Function_mat3v2half = OpTypePointer Function %mat3v2half
-         %22 = OpConstantNull %mat3v2half
-         %23 = OpTypeFunction %v4float
+         %24 = OpConstantNull %mat3v2half
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_d6faec = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat3v2half Function %22
-         %13 = OpTranspose %mat3v2half %19
+        %res = OpVariable %_ptr_Function_mat3v2half Function %24
+         %13 = OpTranspose %mat3v2half %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %transpose_d6faec
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %transpose_d6faec
                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
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_d6faec
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %transpose_d6faec
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %transpose_d6faec
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %transpose_d6faec
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.wgsl
index 5e26944..2bf363a 100644
--- a/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/d6faec.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_d6faec() {
-  var res : mat3x2<f16> = transpose(mat2x3<f16>(f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat3x2<f16> = transpose(mat2x3<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl
index 706d3bd..71346b0 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl
@@ -25,7 +25,7 @@
 
 // fn transpose(mat<2, 4, f16>) -> mat<4, 2, f16>
 fn transpose_faeb05() {
-  var res: mat4x2<f16> = transpose(mat2x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res: mat4x2<f16> = transpose(mat2x4<f16>(1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h, 1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.dxc.hlsl
index 2a44dc6..3b78a5a 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void transpose_faeb05() {
-  matrix<float16_t, 4, 2> res = transpose(matrix<float16_t, 2, 4>((float16_t(0.0h)).xxxx, (float16_t(0.0h)).xxxx));
+  matrix<float16_t, 4, 2> res = transpose(matrix<float16_t, 2, 4>((float16_t(1.0h)).xxxx, (float16_t(1.0h)).xxxx));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.glsl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.glsl
index 720b3fd..e382231 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_faeb05() {
-  f16mat4x2 res = transpose(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4x2 res = transpose(f16mat2x4(f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void transpose_faeb05() {
-  f16mat4x2 res = transpose(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4x2 res = transpose(f16mat2x4(f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void transpose_faeb05() {
-  f16mat4x2 res = transpose(f16mat2x4(f16vec4(0.0hf), f16vec4(0.0hf)));
+  f16mat4x2 res = transpose(f16mat2x4(f16vec4(1.0hf), f16vec4(1.0hf)));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.msl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.msl
index ec6e27d..e4e8470 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void transpose_faeb05() {
-  half4x2 res = transpose(half2x4(half4(0.0h), half4(0.0h)));
+  half4x2 res = transpose(half2x4(half4(1.0h), half4(1.0h)));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.spvasm
index eff9828..50f0184 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 37
+; Bound: 39
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -39,37 +39,39 @@
  %mat4v2half = OpTypeMatrix %v2half 4
      %v4half = OpTypeVector %half 4
  %mat2v4half = OpTypeMatrix %v4half 2
-         %19 = OpConstantNull %mat2v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %20 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
+         %21 = OpConstantComposite %mat2v4half %20 %20
 %_ptr_Function_mat4v2half = OpTypePointer Function %mat4v2half
-         %22 = OpConstantNull %mat4v2half
-         %23 = OpTypeFunction %v4float
+         %24 = OpConstantNull %mat4v2half
+         %25 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %transpose_faeb05 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_mat4v2half Function %22
-         %13 = OpTranspose %mat4v2half %19
+        %res = OpVariable %_ptr_Function_mat4v2half Function %24
+         %13 = OpTranspose %mat4v2half %21
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %23
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %transpose_faeb05
+%vertex_main_inner = OpFunction %v4float None %25
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %transpose_faeb05
                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
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %transpose_faeb05
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %transpose_faeb05
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %35 = OpLabel
-         %36 = OpFunctionCall %void %transpose_faeb05
+         %37 = OpLabel
+         %38 = OpFunctionCall %void %transpose_faeb05
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.wgsl
index 795686f..364abc3 100644
--- a/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/transpose/faeb05.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn transpose_faeb05() {
-  var res : mat4x2<f16> = transpose(mat2x4<f16>(f16(), f16(), f16(), f16(), f16(), f16(), f16(), f16()));
+  var res : mat4x2<f16> = transpose(mat2x4<f16>(1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h, 1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl
index 6874719..5a2495e 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl
@@ -25,7 +25,7 @@
 
 // fn trunc(vec<3, f16>) -> vec<3, f16>
 fn trunc_103ab8() {
-  var res: vec3<f16> = trunc(vec3<f16>(f16()));
+  var res: vec3<f16> = trunc(vec3<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.dxc.hlsl
index dd3ebec..ffe1f6e 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void trunc_103ab8() {
-  vector<float16_t, 3> res = trunc((float16_t(0.0h)).xxx);
+  vector<float16_t, 3> res = trunc((float16_t(1.0h)).xxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.glsl
index da7798a..946f9f3 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_103ab8() {
-  f16vec3 res = trunc(f16vec3(0.0hf));
+  f16vec3 res = trunc(f16vec3(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void trunc_103ab8() {
-  f16vec3 res = trunc(f16vec3(0.0hf));
+  f16vec3 res = trunc(f16vec3(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_103ab8() {
-  f16vec3 res = trunc(f16vec3(0.0hf));
+  f16vec3 res = trunc(f16vec3(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.msl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.msl
index 1121743..247d36c 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void trunc_103ab8() {
-  half3 res = trunc(half3(0.0h));
+  half3 res = trunc(half3(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.spvasm
index e1a21cf..537ed0be 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-         %17 = OpConstantNull %v3half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v3half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v3half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %trunc_103ab8 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v3half Function %17
-         %13 = OpExtInst %v3half %16 Trunc %17
+        %res = OpVariable %_ptr_Function_v3half Function %21
+         %13 = OpExtInst %v3half %16 Trunc %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %trunc_103ab8
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %trunc_103ab8
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %trunc_103ab8
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %trunc_103ab8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %trunc_103ab8
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %trunc_103ab8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.wgsl
index 9422358..260b7fa 100644
--- a/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/103ab8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn trunc_103ab8() {
-  var res : vec3<f16> = trunc(vec3<f16>(f16()));
+  var res : vec3<f16> = trunc(vec3<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl
index ef8b02b..51ea764 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl
@@ -25,7 +25,7 @@
 
 // fn trunc(vec<2, f16>) -> vec<2, f16>
 fn trunc_a56109() {
-  var res: vec2<f16> = trunc(vec2<f16>(f16()));
+  var res: vec2<f16> = trunc(vec2<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.dxc.hlsl
index 0cc0eb2..ed119b9 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void trunc_a56109() {
-  vector<float16_t, 2> res = trunc((float16_t(0.0h)).xx);
+  vector<float16_t, 2> res = trunc((float16_t(1.0h)).xx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.glsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.glsl
index d403886..30a7a09 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_a56109() {
-  f16vec2 res = trunc(f16vec2(0.0hf));
+  f16vec2 res = trunc(f16vec2(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void trunc_a56109() {
-  f16vec2 res = trunc(f16vec2(0.0hf));
+  f16vec2 res = trunc(f16vec2(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_a56109() {
-  f16vec2 res = trunc(f16vec2(0.0hf));
+  f16vec2 res = trunc(f16vec2(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.msl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.msl
index 19d67d9..01e9266 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void trunc_a56109() {
-  half2 res = trunc(half2(0.0h));
+  half2 res = trunc(half2(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.spvasm
index 5899e0f..1dc8bf3 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-         %17 = OpConstantNull %v2half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v2half %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v2half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %trunc_a56109 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v2half Function %17
-         %13 = OpExtInst %v2half %16 Trunc %17
+        %res = OpVariable %_ptr_Function_v2half Function %21
+         %13 = OpExtInst %v2half %16 Trunc %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %trunc_a56109
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %trunc_a56109
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %trunc_a56109
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %trunc_a56109
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %trunc_a56109
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %trunc_a56109
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.wgsl
index 174127e..7051d16 100644
--- a/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/a56109.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn trunc_a56109() {
-  var res : vec2<f16> = trunc(vec2<f16>(f16()));
+  var res : vec2<f16> = trunc(vec2<f16>(1.0h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl
index 0dccaa6..32f443a 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl
@@ -25,7 +25,7 @@
 
 // fn trunc(f16) -> f16
 fn trunc_cc2b0d() {
-  var res: f16 = trunc(f16());
+  var res: f16 = trunc(1.h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.dxc.hlsl
index b268816..92d0f9d 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void trunc_cc2b0d() {
-  float16_t res = trunc(float16_t(0.0h));
+  float16_t res = trunc(float16_t(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.glsl
index 257a571..00e8be0 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_cc2b0d() {
-  float16_t res = trunc(0.0hf);
+  float16_t res = trunc(1.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void trunc_cc2b0d() {
-  float16_t res = trunc(0.0hf);
+  float16_t res = trunc(1.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_cc2b0d() {
-  float16_t res = trunc(0.0hf);
+  float16_t res = trunc(1.0hf);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.msl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.msl
index b2c50aa..785962c 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void trunc_cc2b0d() {
-  half res = trunc(0.0h);
+  half res = trunc(1.0h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.spvasm
index 49a49a20..71302f5 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 34
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -36,36 +36,37 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-         %16 = OpConstantNull %half
+%half_0x1p_0 = OpConstant %half 0x1p+0
 %_ptr_Function_half = OpTypePointer Function %half
-         %19 = OpTypeFunction %v4float
+         %19 = OpConstantNull %half
+         %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %trunc_cc2b0d = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_half Function %16
-         %13 = OpExtInst %half %15 Trunc %16
+        %res = OpVariable %_ptr_Function_half Function %19
+         %13 = OpExtInst %half %15 Trunc %half_0x1p_0
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %19
-         %21 = OpLabel
-         %22 = OpFunctionCall %void %trunc_cc2b0d
+%vertex_main_inner = OpFunction %v4float None %20
+         %22 = OpLabel
+         %23 = OpFunctionCall %void %trunc_cc2b0d
                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
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %trunc_cc2b0d
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %trunc_cc2b0d
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %trunc_cc2b0d
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %trunc_cc2b0d
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.wgsl
index a20cd36..6963297 100644
--- a/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/cc2b0d.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn trunc_cc2b0d() {
-  var res : f16 = trunc(f16());
+  var res : f16 = trunc(1.0h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl
index bae66be..bbc6432 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl
@@ -25,7 +25,7 @@
 
 // fn trunc(vec<4, f16>) -> vec<4, f16>
 fn trunc_ce7c17() {
-  var res: vec4<f16> = trunc(vec4<f16>(f16()));
+  var res: vec4<f16> = trunc(vec4<f16>(1.h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.dxc.hlsl
index 83e63a1..3d1afee 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void trunc_ce7c17() {
-  vector<float16_t, 4> res = trunc((float16_t(0.0h)).xxxx);
+  vector<float16_t, 4> res = trunc((float16_t(1.0h)).xxxx);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.glsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.glsl
index 1ab86a5..751a5a1 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_ce7c17() {
-  f16vec4 res = trunc(f16vec4(0.0hf));
+  f16vec4 res = trunc(f16vec4(1.0hf));
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void trunc_ce7c17() {
-  f16vec4 res = trunc(f16vec4(0.0hf));
+  f16vec4 res = trunc(f16vec4(1.0hf));
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void trunc_ce7c17() {
-  f16vec4 res = trunc(f16vec4(0.0hf));
+  f16vec4 res = trunc(f16vec4(1.0hf));
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.msl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.msl
index bbb5f1e..2676f2e 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void trunc_ce7c17() {
-  half4 res = trunc(half4(0.0h));
+  half4 res = trunc(half4(1.0h));
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.spvasm
index 2eecaa2..67233c5 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 34
+; Bound: 36
 ; Schema: 0
                OpCapability Shader
                OpCapability Float16
@@ -37,36 +37,38 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-         %17 = OpConstantNull %v4half
+%half_0x1p_0 = OpConstant %half 0x1p+0
+         %18 = OpConstantComposite %v4half %half_0x1p_0 %half_0x1p_0 %half_0x1p_0 %half_0x1p_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
-         %20 = OpTypeFunction %v4float
+         %21 = OpConstantNull %v4half
+         %22 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %trunc_ce7c17 = OpFunction %void None %9
          %12 = OpLabel
-        %res = OpVariable %_ptr_Function_v4half Function %17
-         %13 = OpExtInst %v4half %16 Trunc %17
+        %res = OpVariable %_ptr_Function_v4half Function %21
+         %13 = OpExtInst %v4half %16 Trunc %18
                OpStore %res %13
                OpReturn
                OpFunctionEnd
-%vertex_main_inner = OpFunction %v4float None %20
-         %22 = OpLabel
-         %23 = OpFunctionCall %void %trunc_ce7c17
+%vertex_main_inner = OpFunction %v4float None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %trunc_ce7c17
                OpReturnValue %5
                OpFunctionEnd
 %vertex_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %v4float %vertex_main_inner
-               OpStore %value %26
+         %27 = OpLabel
+         %28 = OpFunctionCall %v4float %vertex_main_inner
+               OpStore %value %28
                OpStore %vertex_point_size %float_1
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %trunc_ce7c17
+         %31 = OpLabel
+         %32 = OpFunctionCall %void %trunc_ce7c17
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %32 = OpLabel
-         %33 = OpFunctionCall %void %trunc_ce7c17
+         %34 = OpLabel
+         %35 = OpFunctionCall %void %trunc_ce7c17
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.wgsl
index 0004a8c..2f491ed 100644
--- a/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/trunc/ce7c17.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn trunc_ce7c17() {
-  var res : vec4<f16> = trunc(vec4<f16>(f16()));
+  var res : vec4<f16> = trunc(vec4<f16>(1.0h));
 }
 
 @vertex