Generic template and forward in stringstream.

This CL updates the templates in the StringStream to match more types.
All of the internal `operator<<` methods have been converted over to
StringStream. The precision was increased in order to better match the
precision needed to read back as a double.

Bug: tint:1686
Change-Id: Iaa15cf247f174967dd1014647ba5a74804997c22
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/122080
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
diff --git a/src/tint/ast/binary_expression.h b/src/tint/ast/binary_expression.h
index 35ca308..b314250 100644
--- a/src/tint/ast/binary_expression.h
+++ b/src/tint/ast/binary_expression.h
@@ -297,10 +297,10 @@
     return "<invalid>";
 }
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param op the BinaryOp
-/// @return the std::ostream so calls can be chained
-inline std::ostream& operator<<(std::ostream& out, BinaryOp op) {
+/// @return the stream so calls can be chained
+inline utils::StringStream& operator<<(utils::StringStream& out, BinaryOp op) {
     out << FriendlyName(op);
     return out;
 }
diff --git a/src/tint/ast/builtin_texture_helper_test.cc b/src/tint/ast/builtin_texture_helper_test.cc
index 6451bfe..658b650 100644
--- a/src/tint/ast/builtin_texture_helper_test.cc
+++ b/src/tint/ast/builtin_texture_helper_test.cc
@@ -23,6 +23,45 @@
 using namespace tint::number_suffixes;  // NOLINT
 
 namespace tint::ast::builtin::test {
+namespace {
+
+utils::StringStream& operator<<(utils::StringStream& out, const TextureKind& kind) {
+    switch (kind) {
+        case TextureKind::kRegular:
+            out << "regular";
+            break;
+        case TextureKind::kDepth:
+            out << "depth";
+            break;
+        case TextureKind::kDepthMultisampled:
+            out << "depth-multisampled";
+            break;
+        case TextureKind::kMultisampled:
+            out << "multisampled";
+            break;
+        case TextureKind::kStorage:
+            out << "storage";
+            break;
+    }
+    return out;
+}
+
+utils::StringStream& operator<<(utils::StringStream& out, const TextureDataType& ty) {
+    switch (ty) {
+        case TextureDataType::kF32:
+            out << "f32";
+            break;
+        case TextureDataType::kU32:
+            out << "u32";
+            break;
+        case TextureDataType::kI32:
+            out << "i32";
+            break;
+    }
+    return out;
+}
+
+}  // namespace
 
 TextureOverloadCase::TextureOverloadCase(ValidTextureOverload o,
                                          const char* desc,
@@ -80,57 +119,24 @@
 TextureOverloadCase::TextureOverloadCase(const TextureOverloadCase&) = default;
 TextureOverloadCase::~TextureOverloadCase() = default;
 
-std::ostream& operator<<(std::ostream& out, const TextureKind& kind) {
-    switch (kind) {
-        case TextureKind::kRegular:
-            out << "regular";
-            break;
-        case TextureKind::kDepth:
-            out << "depth";
-            break;
-        case TextureKind::kDepthMultisampled:
-            out << "depth-multisampled";
-            break;
-        case TextureKind::kMultisampled:
-            out << "multisampled";
-            break;
-        case TextureKind::kStorage:
-            out << "storage";
-            break;
-    }
-    return out;
-}
-
-std::ostream& operator<<(std::ostream& out, const TextureDataType& ty) {
-    switch (ty) {
-        case TextureDataType::kF32:
-            out << "f32";
-            break;
-        case TextureDataType::kU32:
-            out << "u32";
-            break;
-        case TextureDataType::kI32:
-            out << "i32";
-            break;
-    }
-    return out;
-}
-
 std::ostream& operator<<(std::ostream& out, const TextureOverloadCase& data) {
-    out << "TextureOverloadCase " << static_cast<int>(data.overload) << "\n";
-    out << data.description << "\n";
-    out << "texture_kind:      " << data.texture_kind << "\n";
-    out << "sampler_kind:      ";
+    utils::StringStream str;
+    str << "TextureOverloadCase " << static_cast<int>(data.overload) << "\n";
+    str << data.description << "\n";
+    str << "texture_kind:      " << data.texture_kind << "\n";
+    str << "sampler_kind:      ";
     if (data.texture_kind != TextureKind::kStorage) {
-        out << data.sampler_kind;
+        str << data.sampler_kind;
     } else {
-        out << "<unused>";
+        str << "<unused>";
     }
-    out << "\n";
-    out << "access:            " << data.access << "\n";
-    out << "texel_format:      " << data.texel_format << "\n";
-    out << "texture_dimension: " << data.texture_dimension << "\n";
-    out << "texture_data_type: " << data.texture_data_type << "\n";
+    str << "\n";
+    str << "access:            " << data.access << "\n";
+    str << "texel_format:      " << data.texel_format << "\n";
+    str << "texture_dimension: " << data.texture_dimension << "\n";
+    str << "texture_data_type: " << data.texture_data_type << "\n";
+
+    out << str.str();
     return out;
 }
 
diff --git a/src/tint/ast/diagnostic_control.h b/src/tint/ast/diagnostic_control.h
index 3a5cd1f..a0f5a9d 100644
--- a/src/tint/ast/diagnostic_control.h
+++ b/src/tint/ast/diagnostic_control.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_AST_DIAGNOSTIC_CONTROL_H_
 #define SRC_TINT_AST_DIAGNOSTIC_CONTROL_H_
 
-#include <ostream>
 #include <string>
 #include <unordered_map>
 
diff --git a/src/tint/ast/float_literal_expression.cc b/src/tint/ast/float_literal_expression.cc
index 524b56e..5de8821 100644
--- a/src/tint/ast/float_literal_expression.cc
+++ b/src/tint/ast/float_literal_expression.cc
@@ -37,7 +37,7 @@
     return ctx->dst->create<FloatLiteralExpression>(src, value, suffix);
 }
 
-std::ostream& operator<<(std::ostream& out, FloatLiteralExpression::Suffix suffix) {
+utils::StringStream& operator<<(utils::StringStream& out, FloatLiteralExpression::Suffix suffix) {
     switch (suffix) {
         default:
             return out;
diff --git a/src/tint/ast/float_literal_expression.h b/src/tint/ast/float_literal_expression.h
index 7f3cd12..7920c78 100644
--- a/src/tint/ast/float_literal_expression.h
+++ b/src/tint/ast/float_literal_expression.h
@@ -56,11 +56,11 @@
     const Suffix suffix;
 };
 
-/// Writes the float literal suffix to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the float literal suffix to the stream.
+/// @param out the stream to write to
 /// @param suffix the suffix to write
 /// @returns out so calls can be chained
-std::ostream& operator<<(std::ostream& out, FloatLiteralExpression::Suffix suffix);
+utils::StringStream& operator<<(utils::StringStream& out, FloatLiteralExpression::Suffix suffix);
 
 }  // namespace tint::ast
 
diff --git a/src/tint/ast/int_literal_expression.cc b/src/tint/ast/int_literal_expression.cc
index 502ea9d..b659bbb 100644
--- a/src/tint/ast/int_literal_expression.cc
+++ b/src/tint/ast/int_literal_expression.cc
@@ -35,7 +35,7 @@
     return ctx->dst->create<IntLiteralExpression>(src, value, suffix);
 }
 
-std::ostream& operator<<(std::ostream& out, IntLiteralExpression::Suffix suffix) {
+utils::StringStream& operator<<(utils::StringStream& out, IntLiteralExpression::Suffix suffix) {
     switch (suffix) {
         default:
             return out;
diff --git a/src/tint/ast/int_literal_expression.h b/src/tint/ast/int_literal_expression.h
index 10cbbee..0f50ad3 100644
--- a/src/tint/ast/int_literal_expression.h
+++ b/src/tint/ast/int_literal_expression.h
@@ -55,11 +55,11 @@
     const Suffix suffix;
 };
 
-/// Writes the integer literal suffix to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the integer literal suffix to the stream.
+/// @param out the stream to write to
 /// @param suffix the suffix to write
 /// @returns out so calls can be chained
-std::ostream& operator<<(std::ostream& out, IntLiteralExpression::Suffix suffix);
+utils::StringStream& operator<<(utils::StringStream& out, IntLiteralExpression::Suffix suffix);
 
 }  // namespace tint::ast
 
diff --git a/src/tint/ast/interpolate_attribute.h b/src/tint/ast/interpolate_attribute.h
index e50d8dd..b3177ed 100644
--- a/src/tint/ast/interpolate_attribute.h
+++ b/src/tint/ast/interpolate_attribute.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_AST_INTERPOLATE_ATTRIBUTE_H_
 #define SRC_TINT_AST_INTERPOLATE_ATTRIBUTE_H_
 
-#include <ostream>
 #include <string>
 
 #include "src/tint/ast/attribute.h"
diff --git a/src/tint/ast/pipeline_stage.cc b/src/tint/ast/pipeline_stage.cc
index 79157da..72d3aca 100644
--- a/src/tint/ast/pipeline_stage.cc
+++ b/src/tint/ast/pipeline_stage.cc
@@ -16,7 +16,7 @@
 
 namespace tint::ast {
 
-std::ostream& operator<<(std::ostream& out, PipelineStage stage) {
+utils::StringStream& operator<<(utils::StringStream& out, PipelineStage stage) {
     switch (stage) {
         case PipelineStage::kNone: {
             out << "none";
diff --git a/src/tint/ast/pipeline_stage.h b/src/tint/ast/pipeline_stage.h
index a1b9c0c..5344afd 100644
--- a/src/tint/ast/pipeline_stage.h
+++ b/src/tint/ast/pipeline_stage.h
@@ -15,17 +15,17 @@
 #ifndef SRC_TINT_AST_PIPELINE_STAGE_H_
 #define SRC_TINT_AST_PIPELINE_STAGE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::ast {
 
 /// The pipeline stage
 enum class PipelineStage { kNone = -1, kVertex, kFragment, kCompute };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param stage the PipelineStage
-/// @return the std::ostream so calls can be chained
-std::ostream& operator<<(std::ostream& out, PipelineStage stage);
+/// @return the stream so calls can be chained
+utils::StringStream& operator<<(utils::StringStream& out, PipelineStage stage);
 
 }  // namespace tint::ast
 
diff --git a/src/tint/ast/unary_op.cc b/src/tint/ast/unary_op.cc
index e0afe8d..34d15f7 100644
--- a/src/tint/ast/unary_op.cc
+++ b/src/tint/ast/unary_op.cc
@@ -16,7 +16,7 @@
 
 namespace tint::ast {
 
-std::ostream& operator<<(std::ostream& out, UnaryOp mod) {
+utils::StringStream& operator<<(utils::StringStream& out, UnaryOp mod) {
     switch (mod) {
         case UnaryOp::kAddressOf: {
             out << "address-of";
diff --git a/src/tint/ast/unary_op.h b/src/tint/ast/unary_op.h
index a861af3..368803d 100644
--- a/src/tint/ast/unary_op.h
+++ b/src/tint/ast/unary_op.h
@@ -15,7 +15,7 @@
 #ifndef SRC_TINT_AST_UNARY_OP_H_
 #define SRC_TINT_AST_UNARY_OP_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::ast {
 
@@ -28,10 +28,10 @@
     kNot,          // !EXPR
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param mod the UnaryOp
-/// @return the std::ostream so calls can be chained
-std::ostream& operator<<(std::ostream& out, UnaryOp mod);
+/// @return the stream so calls can be chained
+utils::StringStream& operator<<(utils::StringStream& out, UnaryOp mod);
 
 }  // namespace tint::ast
 
diff --git a/src/tint/bench/benchmark.cc b/src/tint/bench/benchmark.cc
index 6b072db..5a28e95 100644
--- a/src/tint/bench/benchmark.cc
+++ b/src/tint/bench/benchmark.cc
@@ -15,7 +15,7 @@
 #include "src/tint/bench/benchmark.h"
 
 #include <filesystem>
-#include <sstream>
+#include <iostream>
 #include <utility>
 #include <vector>
 
diff --git a/src/tint/builtin/access.cc b/src/tint/builtin/access.cc
index 56b326c..15bf700 100644
--- a/src/tint/builtin/access.cc
+++ b/src/tint/builtin/access.cc
@@ -40,7 +40,7 @@
     return Access::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, Access value) {
+utils::StringStream& operator<<(utils::StringStream& out, Access value) {
     switch (value) {
         case Access::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/access.h b/src/tint/builtin/access.h
index f59f50e..afc0867 100644
--- a/src/tint/builtin/access.h
+++ b/src/tint/builtin/access.h
@@ -23,7 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_ACCESS_H_
 #define SRC_TINT_BUILTIN_ACCESS_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
@@ -35,10 +35,10 @@
     kWrite,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the Access
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, Access value);
+utils::StringStream& operator<<(utils::StringStream& out, Access value);
 
 /// ParseAccess parses a Access from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/access.h.tmpl b/src/tint/builtin/access.h.tmpl
index 6e4587a..3b45390 100644
--- a/src/tint/builtin/access.h.tmpl
+++ b/src/tint/builtin/access.h.tmpl
@@ -17,7 +17,7 @@
 #ifndef SRC_TINT_BUILTIN_ACCESS_H_
 #define SRC_TINT_BUILTIN_ACCESS_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
diff --git a/src/tint/builtin/address_space.cc b/src/tint/builtin/address_space.cc
index 3b386b8..545d97a 100644
--- a/src/tint/builtin/address_space.cc
+++ b/src/tint/builtin/address_space.cc
@@ -55,7 +55,7 @@
     return AddressSpace::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, AddressSpace value) {
+utils::StringStream& operator<<(utils::StringStream& out, AddressSpace value) {
     switch (value) {
         case AddressSpace::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/address_space.h b/src/tint/builtin/address_space.h
index 55b1557..5334301 100644
--- a/src/tint/builtin/address_space.h
+++ b/src/tint/builtin/address_space.h
@@ -23,7 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_ADDRESS_SPACE_H_
 #define SRC_TINT_BUILTIN_ADDRESS_SPACE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
@@ -41,10 +41,10 @@
     kWorkgroup,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the AddressSpace
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, AddressSpace value);
+utils::StringStream& operator<<(utils::StringStream& out, AddressSpace value);
 
 /// ParseAddressSpace parses a AddressSpace from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/address_space.h.tmpl b/src/tint/builtin/address_space.h.tmpl
index 1dd7d35..42103c3 100644
--- a/src/tint/builtin/address_space.h.tmpl
+++ b/src/tint/builtin/address_space.h.tmpl
@@ -17,7 +17,7 @@
 #ifndef SRC_TINT_BUILTIN_ADDRESS_SPACE_H_
 #define SRC_TINT_BUILTIN_ADDRESS_SPACE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
diff --git a/src/tint/builtin/attribute.cc b/src/tint/builtin/attribute.cc
index d20b77c..33a5171 100644
--- a/src/tint/builtin/attribute.cc
+++ b/src/tint/builtin/attribute.cc
@@ -76,7 +76,7 @@
     return Attribute::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, Attribute value) {
+utils::StringStream& operator<<(utils::StringStream& out, Attribute value) {
     switch (value) {
         case Attribute::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/attribute.h b/src/tint/builtin/attribute.h
index bf95458..c975267 100644
--- a/src/tint/builtin/attribute.h
+++ b/src/tint/builtin/attribute.h
@@ -23,7 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_ATTRIBUTE_H_
 #define SRC_TINT_BUILTIN_ATTRIBUTE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 /// \cond DO_NOT_DOCUMENT
 /// There is a bug in doxygen where this enum conflicts with the ast::Attribute
@@ -50,10 +50,10 @@
     kWorkgroupSize,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the Attribute
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, Attribute value);
+utils::StringStream& operator<<(utils::StringStream& out, Attribute value);
 
 /// ParseAttribute parses a Attribute from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/attribute.h.tmpl b/src/tint/builtin/attribute.h.tmpl
index 32ca6a3..ca7443d 100644
--- a/src/tint/builtin/attribute.h.tmpl
+++ b/src/tint/builtin/attribute.h.tmpl
@@ -17,7 +17,7 @@
 #ifndef SRC_TINT_BUILTIN_ATTRIBUTE_H_
 #define SRC_TINT_BUILTIN_ATTRIBUTE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 /// \cond DO_NOT_DOCUMENT
 /// There is a bug in doxygen where this enum conflicts with the ast::Attribute
diff --git a/src/tint/builtin/builtin.cc b/src/tint/builtin/builtin.cc
index dc608d0a..085a266 100644
--- a/src/tint/builtin/builtin.cc
+++ b/src/tint/builtin/builtin.cc
@@ -241,7 +241,7 @@
     return Builtin::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, Builtin value) {
+utils::StringStream& operator<<(utils::StringStream& out, Builtin value) {
     switch (value) {
         case Builtin::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/builtin.h b/src/tint/builtin/builtin.h
index 25bac8b..da5226d 100644
--- a/src/tint/builtin/builtin.h
+++ b/src/tint/builtin/builtin.h
@@ -23,7 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_BUILTIN_H_
 #define SRC_TINT_BUILTIN_BUILTIN_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
@@ -102,10 +102,10 @@
     kVec4U,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the Builtin
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, Builtin value);
+utils::StringStream& operator<<(utils::StringStream& out, Builtin value);
 
 /// ParseBuiltin parses a Builtin from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/builtin.h.tmpl b/src/tint/builtin/builtin.h.tmpl
index 4fce648..f63b20d 100644
--- a/src/tint/builtin/builtin.h.tmpl
+++ b/src/tint/builtin/builtin.h.tmpl
@@ -18,7 +18,7 @@
 #ifndef SRC_TINT_BUILTIN_BUILTIN_H_
 #define SRC_TINT_BUILTIN_BUILTIN_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
diff --git a/src/tint/builtin/builtin_value.cc b/src/tint/builtin/builtin_value.cc
index 150ac7b..5e06c50 100644
--- a/src/tint/builtin/builtin_value.cc
+++ b/src/tint/builtin/builtin_value.cc
@@ -70,7 +70,7 @@
     return BuiltinValue::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, BuiltinValue value) {
+utils::StringStream& operator<<(utils::StringStream& out, BuiltinValue value) {
     switch (value) {
         case BuiltinValue::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/builtin_value.h b/src/tint/builtin/builtin_value.h
index 4f8753f..fc1f39b 100644
--- a/src/tint/builtin/builtin_value.h
+++ b/src/tint/builtin/builtin_value.h
@@ -23,7 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_BUILTIN_VALUE_H_
 #define SRC_TINT_BUILTIN_BUILTIN_VALUE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
@@ -45,10 +45,10 @@
     kWorkgroupId,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the BuiltinValue
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, BuiltinValue value);
+utils::StringStream& operator<<(utils::StringStream& out, BuiltinValue value);
 
 /// ParseBuiltinValue parses a BuiltinValue from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/builtin_value.h.tmpl b/src/tint/builtin/builtin_value.h.tmpl
index 46e806e..dae642a 100644
--- a/src/tint/builtin/builtin_value.h.tmpl
+++ b/src/tint/builtin/builtin_value.h.tmpl
@@ -14,7 +14,7 @@
 #ifndef SRC_TINT_BUILTIN_BUILTIN_VALUE_H_
 #define SRC_TINT_BUILTIN_BUILTIN_VALUE_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
diff --git a/src/tint/builtin/diagnostic_rule.cc b/src/tint/builtin/diagnostic_rule.cc
index 7b020d5..69650cb 100644
--- a/src/tint/builtin/diagnostic_rule.cc
+++ b/src/tint/builtin/diagnostic_rule.cc
@@ -22,9 +22,10 @@
 
 #include "src/tint/builtin/diagnostic_rule.h"
 
-#include <ostream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// ParseDiagnosticRule parses a DiagnosticRule from a string.
@@ -40,7 +41,7 @@
     return DiagnosticRule::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, DiagnosticRule value) {
+utils::StringStream& operator<<(utils::StringStream& out, DiagnosticRule value) {
     switch (value) {
         case DiagnosticRule::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/diagnostic_rule.cc.tmpl b/src/tint/builtin/diagnostic_rule.cc.tmpl
index 4cf05a4..8705485 100644
--- a/src/tint/builtin/diagnostic_rule.cc.tmpl
+++ b/src/tint/builtin/diagnostic_rule.cc.tmpl
@@ -12,9 +12,10 @@
 
 #include "src/tint/builtin/diagnostic_rule.h"
 
-#include <ostream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 {{ Eval "ParseEnum" (Sem.Enum "diagnostic_rule")}}
diff --git a/src/tint/builtin/diagnostic_rule.h b/src/tint/builtin/diagnostic_rule.h
index 55a6aab..6b6d094 100644
--- a/src/tint/builtin/diagnostic_rule.h
+++ b/src/tint/builtin/diagnostic_rule.h
@@ -25,6 +25,8 @@
 
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// The diagnostic rule.
@@ -34,10 +36,10 @@
     kDerivativeUniformity,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the DiagnosticRule
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, DiagnosticRule value);
+utils::StringStream& operator<<(utils::StringStream& out, DiagnosticRule value);
 
 /// ParseDiagnosticRule parses a DiagnosticRule from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/diagnostic_rule.h.tmpl b/src/tint/builtin/diagnostic_rule.h.tmpl
index 2e6f7f9..ba823e3 100644
--- a/src/tint/builtin/diagnostic_rule.h.tmpl
+++ b/src/tint/builtin/diagnostic_rule.h.tmpl
@@ -15,6 +15,8 @@
 
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// The diagnostic rule.
diff --git a/src/tint/builtin/diagnostic_severity.cc b/src/tint/builtin/diagnostic_severity.cc
index 8c14a9a..5d68992 100644
--- a/src/tint/builtin/diagnostic_severity.cc
+++ b/src/tint/builtin/diagnostic_severity.cc
@@ -58,7 +58,7 @@
     return DiagnosticSeverity::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, DiagnosticSeverity value) {
+utils::StringStream& operator<<(utils::StringStream& out, DiagnosticSeverity value) {
     switch (value) {
         case DiagnosticSeverity::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/diagnostic_severity.h b/src/tint/builtin/diagnostic_severity.h
index daef0f7..44a3b41 100644
--- a/src/tint/builtin/diagnostic_severity.h
+++ b/src/tint/builtin/diagnostic_severity.h
@@ -23,12 +23,12 @@
 #ifndef SRC_TINT_BUILTIN_DIAGNOSTIC_SEVERITY_H_
 #define SRC_TINT_BUILTIN_DIAGNOSTIC_SEVERITY_H_
 
-#include <ostream>
 #include <string>
 #include <unordered_map>
 
 #include "src/tint/builtin/diagnostic_rule.h"
 #include "src/tint/diagnostic/diagnostic.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
@@ -41,10 +41,10 @@
     kWarning,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the DiagnosticSeverity
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, DiagnosticSeverity value);
+utils::StringStream& operator<<(utils::StringStream& out, DiagnosticSeverity value);
 
 /// ParseDiagnosticSeverity parses a DiagnosticSeverity from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/diagnostic_severity.h.tmpl b/src/tint/builtin/diagnostic_severity.h.tmpl
index 7580b2c..7773d6c 100644
--- a/src/tint/builtin/diagnostic_severity.h.tmpl
+++ b/src/tint/builtin/diagnostic_severity.h.tmpl
@@ -13,10 +13,10 @@
 #ifndef SRC_TINT_BUILTIN_DIAGNOSTIC_SEVERITY_H_
 #define SRC_TINT_BUILTIN_DIAGNOSTIC_SEVERITY_H_
 
-#include <ostream>
 #include <string>
 #include <unordered_map>
 
+#include "src/tint/utils/string_stream.h"
 #include "src/tint/builtin/diagnostic_rule.h"
 #include "src/tint/diagnostic/diagnostic.h"
 
diff --git a/src/tint/builtin/extension.cc b/src/tint/builtin/extension.cc
index 36171db..aca6220 100644
--- a/src/tint/builtin/extension.cc
+++ b/src/tint/builtin/extension.cc
@@ -49,7 +49,7 @@
     return Extension::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, Extension value) {
+utils::StringStream& operator<<(utils::StringStream& out, Extension value) {
     switch (value) {
         case Extension::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/extension.h b/src/tint/builtin/extension.h
index aace504..6beeda3 100644
--- a/src/tint/builtin/extension.h
+++ b/src/tint/builtin/extension.h
@@ -23,8 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_EXTENSION_H_
 #define SRC_TINT_BUILTIN_EXTENSION_H_
 
-#include <ostream>
-
+#include "src/tint/utils/string_stream.h"
 #include "src/tint/utils/unique_vector.h"
 
 namespace tint::builtin {
@@ -41,10 +40,10 @@
     kF16,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the Extension
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, Extension value);
+utils::StringStream& operator<<(utils::StringStream& out, Extension value);
 
 /// ParseExtension parses a Extension from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/extension.h.tmpl b/src/tint/builtin/extension.h.tmpl
index 3051ad44..07f3ee4 100644
--- a/src/tint/builtin/extension.h.tmpl
+++ b/src/tint/builtin/extension.h.tmpl
@@ -14,8 +14,7 @@
 #ifndef SRC_TINT_BUILTIN_EXTENSION_H_
 #define SRC_TINT_BUILTIN_EXTENSION_H_
 
-#include <ostream>
-
+#include "src/tint/utils/string_stream.h"
 #include "src/tint/utils/unique_vector.h"
 
 namespace tint::builtin {
diff --git a/src/tint/builtin/interpolation_sampling.cc b/src/tint/builtin/interpolation_sampling.cc
index 8b39930..30d925a 100644
--- a/src/tint/builtin/interpolation_sampling.cc
+++ b/src/tint/builtin/interpolation_sampling.cc
@@ -43,7 +43,7 @@
     return InterpolationSampling::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, InterpolationSampling value) {
+utils::StringStream& operator<<(utils::StringStream& out, InterpolationSampling value) {
     switch (value) {
         case InterpolationSampling::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/interpolation_sampling.h b/src/tint/builtin/interpolation_sampling.h
index a3fc357..78a9d51 100644
--- a/src/tint/builtin/interpolation_sampling.h
+++ b/src/tint/builtin/interpolation_sampling.h
@@ -23,9 +23,10 @@
 #ifndef SRC_TINT_BUILTIN_INTERPOLATION_SAMPLING_H_
 #define SRC_TINT_BUILTIN_INTERPOLATION_SAMPLING_H_
 
-#include <ostream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// The interpolation sampling.
@@ -36,10 +37,10 @@
     kSample,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the InterpolationSampling
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, InterpolationSampling value);
+utils::StringStream& operator<<(utils::StringStream& out, InterpolationSampling value);
 
 /// ParseInterpolationSampling parses a InterpolationSampling from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/interpolation_sampling.h.tmpl b/src/tint/builtin/interpolation_sampling.h.tmpl
index 24b3b02..eacc2a1 100644
--- a/src/tint/builtin/interpolation_sampling.h.tmpl
+++ b/src/tint/builtin/interpolation_sampling.h.tmpl
@@ -13,9 +13,10 @@
 #ifndef SRC_TINT_BUILTIN_INTERPOLATION_SAMPLING_H_
 #define SRC_TINT_BUILTIN_INTERPOLATION_SAMPLING_H_
 
-#include <ostream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// The interpolation sampling.
diff --git a/src/tint/builtin/interpolation_type.cc b/src/tint/builtin/interpolation_type.cc
index ee3f68b..349d3e9 100644
--- a/src/tint/builtin/interpolation_type.cc
+++ b/src/tint/builtin/interpolation_type.cc
@@ -42,7 +42,7 @@
     return InterpolationType::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, InterpolationType value) {
+utils::StringStream& operator<<(utils::StringStream& out, InterpolationType value) {
     switch (value) {
         case InterpolationType::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/interpolation_type.h b/src/tint/builtin/interpolation_type.h
index ee54964..bd32923 100644
--- a/src/tint/builtin/interpolation_type.h
+++ b/src/tint/builtin/interpolation_type.h
@@ -23,9 +23,10 @@
 #ifndef SRC_TINT_BUILTIN_INTERPOLATION_TYPE_H_
 #define SRC_TINT_BUILTIN_INTERPOLATION_TYPE_H_
 
-#include <ostream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// The interpolation type.
@@ -36,10 +37,10 @@
     kPerspective,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the InterpolationType
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, InterpolationType value);
+utils::StringStream& operator<<(utils::StringStream& out, InterpolationType value);
 
 /// ParseInterpolationType parses a InterpolationType from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/interpolation_type.h.tmpl b/src/tint/builtin/interpolation_type.h.tmpl
index c869a96..7114fd1 100644
--- a/src/tint/builtin/interpolation_type.h.tmpl
+++ b/src/tint/builtin/interpolation_type.h.tmpl
@@ -13,9 +13,10 @@
 #ifndef SRC_TINT_BUILTIN_INTERPOLATION_TYPE_H_
 #define SRC_TINT_BUILTIN_INTERPOLATION_TYPE_H_
 
-#include <ostream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::builtin {
 
 /// The interpolation type.
diff --git a/src/tint/builtin/texel_format.cc b/src/tint/builtin/texel_format.cc
index dc4bbfe..4e1b8b7 100644
--- a/src/tint/builtin/texel_format.cc
+++ b/src/tint/builtin/texel_format.cc
@@ -82,7 +82,7 @@
     return TexelFormat::kUndefined;
 }
 
-std::ostream& operator<<(std::ostream& out, TexelFormat value) {
+utils::StringStream& operator<<(utils::StringStream& out, TexelFormat value) {
     switch (value) {
         case TexelFormat::kUndefined:
             return out << "undefined";
diff --git a/src/tint/builtin/texel_format.h b/src/tint/builtin/texel_format.h
index 9611e62..6643523 100644
--- a/src/tint/builtin/texel_format.h
+++ b/src/tint/builtin/texel_format.h
@@ -23,7 +23,7 @@
 #ifndef SRC_TINT_BUILTIN_TEXEL_FORMAT_H_
 #define SRC_TINT_BUILTIN_TEXEL_FORMAT_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
@@ -49,10 +49,10 @@
     kRgba8Unorm,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the TexelFormat
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, TexelFormat value);
+utils::StringStream& operator<<(utils::StringStream& out, TexelFormat value);
 
 /// ParseTexelFormat parses a TexelFormat from a string.
 /// @param str the string to parse
diff --git a/src/tint/builtin/texel_format.h.tmpl b/src/tint/builtin/texel_format.h.tmpl
index a3a9e31..b00e1f8 100644
--- a/src/tint/builtin/texel_format.h.tmpl
+++ b/src/tint/builtin/texel_format.h.tmpl
@@ -14,7 +14,7 @@
 #ifndef SRC_TINT_BUILTIN_TEXEL_FORMAT_H_
 #define SRC_TINT_BUILTIN_TEXEL_FORMAT_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::builtin {
 
diff --git a/src/tint/cmd/helper.cc b/src/tint/cmd/helper.cc
index f3760da..c31178d 100644
--- a/src/tint/cmd/helper.cc
+++ b/src/tint/cmd/helper.cc
@@ -14,6 +14,7 @@
 
 #include "src/tint/cmd/helper.h"
 
+#include <iostream>
 #include <utility>
 #include <vector>
 
diff --git a/src/tint/cmd/info.cc b/src/tint/cmd/info.cc
index 6c244ad..c31095c 100644
--- a/src/tint/cmd/info.cc
+++ b/src/tint/cmd/info.cc
@@ -13,6 +13,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include <iostream>
+
 #if TINT_BUILD_SPV_READER
 #include "spirv-tools/libspirv.hpp"
 #endif  // TINT_BUILD_SPV_READER
diff --git a/src/tint/diagnostic/formatter.cc b/src/tint/diagnostic/formatter.cc
index 18520fc..9752838 100644
--- a/src/tint/diagnostic/formatter.cc
+++ b/src/tint/diagnostic/formatter.cc
@@ -16,6 +16,7 @@
 
 #include <algorithm>
 #include <iterator>
+#include <utility>
 #include <vector>
 
 #include "src/tint/diagnostic/diagnostic.h"
@@ -85,8 +86,8 @@
     /// @param msg the value or string to write to the printer
     /// @returns this State so that calls can be chained
     template <typename T>
-    State& operator<<(const T& msg) {
-        stream << msg;
+    State& operator<<(T&& msg) {
+        stream << std::forward<T>(msg);
         return *this;
     }
 
diff --git a/src/tint/diagnostic/printer.h b/src/tint/diagnostic/printer.h
index 9e4ce7c..5e7752c 100644
--- a/src/tint/diagnostic/printer.h
+++ b/src/tint/diagnostic/printer.h
@@ -16,7 +16,6 @@
 #define SRC_TINT_DIAGNOSTIC_PRINTER_H_
 
 #include <memory>
-#include <sstream>
 #include <string>
 
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/fuzzers/tint_common_fuzzer.cc b/src/tint/fuzzers/tint_common_fuzzer.cc
index 11cdf76..c4f1fd1 100644
--- a/src/tint/fuzzers/tint_common_fuzzer.cc
+++ b/src/tint/fuzzers/tint_common_fuzzer.cc
@@ -17,6 +17,7 @@
 #include <cassert>
 #include <cstring>
 #include <fstream>
+#include <iostream>
 #include <memory>
 #include <sstream>
 #include <string>
diff --git a/src/tint/inspector/test_inspector_builder.cc b/src/tint/inspector/test_inspector_builder.cc
index ad576b9..9f92d6d 100644
--- a/src/tint/inspector/test_inspector_builder.cc
+++ b/src/tint/inspector/test_inspector_builder.cc
@@ -273,7 +273,11 @@
         case type::TextureDimension::kCubeArray:
             return ty.vec3(scalar);
         default:
-            [=]() { FAIL() << "Unsupported texture dimension: " << dim; }();
+            [=]() {
+                utils::StringStream str;
+                str << dim;
+                FAIL() << "Unsupported texture dimension: " << str.str();
+            }();
     }
     return ast::Type{};
 }
diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def
index 7a5334f..45d77c8 100644
--- a/src/tint/intrinsics.def
+++ b/src/tint/intrinsics.def
@@ -544,8 +544,8 @@
 @must_use @const fn abs<N: num, T: fia_fiu32_f16>(vec<N, T>) -> vec<N, T>
 @must_use @const fn acos<T: fa_f32_f16>(@test_value(0.96891242171) T) -> T
 @must_use @const fn acos<N: num, T: fa_f32_f16>(@test_value(0.96891242171) vec<N, T>) -> vec<N, T>
-@must_use @const fn acosh<T: fa_f32_f16>(@test_value(2.0) T) -> T
-@must_use @const fn acosh<N: num, T: fa_f32_f16>(@test_value(2.0) vec<N, T>) -> vec<N, T>
+@must_use @const fn acosh<T: fa_f32_f16>(@test_value(1.5430806348) T) -> T
+@must_use @const fn acosh<N: num, T: fa_f32_f16>(@test_value(1.5430806348) vec<N, T>) -> vec<N, T>
 @must_use @const fn all(bool) -> bool
 @must_use @const fn all<N: num>(vec<N, bool>) -> bool
 @must_use @const fn any(bool) -> bool
@@ -658,8 +658,8 @@
 @must_use @const fn refract<N: num, T: fa_f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T>
 @must_use @const fn reverseBits<T: iu32>(T) -> T
 @must_use @const fn reverseBits<N: num, T: iu32>(vec<N, T>) -> vec<N, T>
-@must_use @const fn round<T: fa_f32_f16>(@test_value(3.4) T) -> T
-@must_use @const fn round<N: num, T: fa_f32_f16>(@test_value(3.4) vec<N, T>) -> vec<N, T>
+@must_use @const fn round<T: fa_f32_f16>(@test_value(3.5) T) -> T
+@must_use @const fn round<N: num, T: fa_f32_f16>(@test_value(3.5) vec<N, T>) -> vec<N, T>
 @must_use @const fn saturate<T: fa_f32_f16>(@test_value(2) T) -> T
 @must_use @const fn saturate<T: fa_f32_f16, N: num>(@test_value(2) vec<N, T>) -> vec<N, T>
 @must_use @const("select_bool") fn select<T: scalar>(T, T, bool) -> T
diff --git a/src/tint/ir/binary.h b/src/tint/ir/binary.h
index be5d243..063bc93 100644
--- a/src/tint/ir/binary.h
+++ b/src/tint/ir/binary.h
@@ -15,8 +15,6 @@
 #ifndef SRC_TINT_IR_BINARY_H_
 #define SRC_TINT_IR_BINARY_H_
 
-#include <ostream>
-
 #include "src/tint/castable.h"
 #include "src/tint/ir/instruction.h"
 #include "src/tint/symbol_table.h"
diff --git a/src/tint/ir/binary_test.cc b/src/tint/ir/binary_test.cc
index 103719c..9f4ba19 100644
--- a/src/tint/ir/binary_test.cc
+++ b/src/tint/ir/binary_test.cc
@@ -12,8 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include <sstream>
-
 #include "src/tint/ir/instruction.h"
 #include "src/tint/ir/test_helper.h"
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/ir/bitcast.h b/src/tint/ir/bitcast.h
index 16d62f8..0178066 100644
--- a/src/tint/ir/bitcast.h
+++ b/src/tint/ir/bitcast.h
@@ -15,8 +15,6 @@
 #ifndef SRC_TINT_IR_BITCAST_H_
 #define SRC_TINT_IR_BITCAST_H_
 
-#include <ostream>
-
 #include "src/tint/castable.h"
 #include "src/tint/ir/instruction.h"
 #include "src/tint/symbol_table.h"
diff --git a/src/tint/ir/bitcast_test.cc b/src/tint/ir/bitcast_test.cc
index d190abb..38ae9b2 100644
--- a/src/tint/ir/bitcast_test.cc
+++ b/src/tint/ir/bitcast_test.cc
@@ -12,8 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include <sstream>
-
 #include "src/tint/ir/instruction.h"
 #include "src/tint/ir/test_helper.h"
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/ir/builder_impl_test.cc b/src/tint/ir/builder_impl_test.cc
index b70c059..9af481b 100644
--- a/src/tint/ir/builder_impl_test.cc
+++ b/src/tint/ir/builder_impl_test.cc
@@ -1836,8 +1836,8 @@
     EXPECT_EQ(d.AsString(), R"(%1 (u32) = 3 >> 4
 %2 (u32) = %1 (u32) + 9
 %3 (bool) = 1 < %2 (u32)
-%4 (f32) = 2.299999952 * 5.5
-%5 (f32) = 6.699999809 / %4 (f32)
+%4 (f32) = 2.29999995231628417969 * 5.5
+%5 (f32) = 6.69999980926513671875 / %4 (f32)
 %6 (bool) = 2.5 > %5 (f32)
 %7 (bool) = %3 (bool) && %6 (bool)
 )");
diff --git a/src/tint/ir/constant.h b/src/tint/ir/constant.h
index e7d66a4..1c4088f 100644
--- a/src/tint/ir/constant.h
+++ b/src/tint/ir/constant.h
@@ -15,8 +15,6 @@
 #ifndef SRC_TINT_IR_CONSTANT_H_
 #define SRC_TINT_IR_CONSTANT_H_
 
-#include <ostream>
-
 #include "src/tint/constant/value.h"
 #include "src/tint/ir/value.h"
 #include "src/tint/symbol_table.h"
diff --git a/src/tint/ir/constant_test.cc b/src/tint/ir/constant_test.cc
index 745ec54..f3a1dc0 100644
--- a/src/tint/ir/constant_test.cc
+++ b/src/tint/ir/constant_test.cc
@@ -12,8 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include <sstream>
-
 #include "src/tint/ir/test_helper.h"
 #include "src/tint/ir/value.h"
 #include "src/tint/utils/string_stream.h"
@@ -34,7 +32,7 @@
     EXPECT_EQ(1.2_f, c->value->As<constant::Scalar<f32>>()->ValueAs<f32>());
 
     c->ToString(str, b.builder.ir.symbols);
-    EXPECT_EQ("1.200000048", str.str());
+    EXPECT_EQ("1.20000004768371582031", str.str());
 
     EXPECT_TRUE(c->value->Is<constant::Scalar<f32>>());
     EXPECT_FALSE(c->value->Is<constant::Scalar<f16>>());
diff --git a/src/tint/ir/debug.cc b/src/tint/ir/debug.cc
index b541236..290aaeb 100644
--- a/src/tint/ir/debug.cc
+++ b/src/tint/ir/debug.cc
@@ -14,7 +14,6 @@
 
 #include "src/tint/ir/debug.h"
 
-#include <sstream>
 #include <unordered_map>
 #include <unordered_set>
 
diff --git a/src/tint/ir/disassembler.h b/src/tint/ir/disassembler.h
index 1ed822c..eee6b76 100644
--- a/src/tint/ir/disassembler.h
+++ b/src/tint/ir/disassembler.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_IR_DISASSEMBLER_H_
 #define SRC_TINT_IR_DISASSEMBLER_H_
 
-#include <sstream>
 #include <string>
 #include <unordered_map>
 #include <unordered_set>
diff --git a/src/tint/ir/instruction.h b/src/tint/ir/instruction.h
index abd5179..9d09fcb 100644
--- a/src/tint/ir/instruction.h
+++ b/src/tint/ir/instruction.h
@@ -15,8 +15,6 @@
 #ifndef SRC_TINT_IR_INSTRUCTION_H_
 #define SRC_TINT_IR_INSTRUCTION_H_
 
-#include <ostream>
-
 #include "src/tint/castable.h"
 #include "src/tint/ir/value.h"
 #include "src/tint/symbol_table.h"
diff --git a/src/tint/ir/temp.h b/src/tint/ir/temp.h
index 989e416..8532a45 100644
--- a/src/tint/ir/temp.h
+++ b/src/tint/ir/temp.h
@@ -15,8 +15,6 @@
 #ifndef SRC_TINT_IR_TEMP_H_
 #define SRC_TINT_IR_TEMP_H_
 
-#include <ostream>
-
 #include "src/tint/ir/value.h"
 #include "src/tint/symbol_table.h"
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/ir/temp_test.cc b/src/tint/ir/temp_test.cc
index 1a33769..e73dd34 100644
--- a/src/tint/ir/temp_test.cc
+++ b/src/tint/ir/temp_test.cc
@@ -12,8 +12,6 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-#include <sstream>
-
 #include "src/tint/ir/temp.h"
 #include "src/tint/ir/test_helper.h"
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/ir/value.h b/src/tint/ir/value.h
index 983eae0..b3ec7ef 100644
--- a/src/tint/ir/value.h
+++ b/src/tint/ir/value.h
@@ -15,8 +15,6 @@
 #ifndef SRC_TINT_IR_VALUE_H_
 #define SRC_TINT_IR_VALUE_H_
 
-#include <ostream>
-
 #include "src/tint/castable.h"
 #include "src/tint/symbol_table.h"
 #include "src/tint/type/type.h"
diff --git a/src/tint/number.cc b/src/tint/number.cc
index 629091b..8b85670 100644
--- a/src/tint/number.cc
+++ b/src/tint/number.cc
@@ -17,10 +17,10 @@
 #include <algorithm>
 #include <cmath>
 #include <cstring>
-#include <ostream>
 
 #include "src/tint/debug.h"
 #include "src/tint/utils/bitcast.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint {
 namespace {
@@ -50,7 +50,7 @@
 
 }  // namespace
 
-std::ostream& operator<<(std::ostream& out, ConversionFailure failure) {
+utils::StringStream& operator<<(utils::StringStream& out, ConversionFailure failure) {
     switch (failure) {
         case ConversionFailure::kExceedsPositiveLimit:
             return out << "value exceeds positive limit for type";
diff --git a/src/tint/number.h b/src/tint/number.h
index 82a9963..69df284 100644
--- a/src/tint/number.h
+++ b/src/tint/number.h
@@ -20,11 +20,11 @@
 #include <functional>
 #include <limits>
 #include <optional>
-#include <ostream>
 
 #include "src/tint/traits.h"
 #include "src/tint/utils/compiler_macros.h"
 #include "src/tint/utils/result.h"
+#include "src/tint/utils/string_stream.h"
 
 // Forward declaration
 namespace tint {
@@ -175,11 +175,11 @@
 };
 
 /// Writes the number to the ostream.
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param num the Number
-/// @return the std::ostream so calls can be chained
+/// @return the stream so calls can be chained
 template <typename T>
-inline std::ostream& operator<<(std::ostream& out, Number<T> num) {
+inline utils::StringStream& operator<<(utils::StringStream& out, Number<T> num) {
     return out << num.value;
 }
 
@@ -314,10 +314,10 @@
 };
 
 /// Writes the conversion failure message to the ostream.
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param failure the ConversionFailure
-/// @return the std::ostream so calls can be chained
-std::ostream& operator<<(std::ostream& out, ConversionFailure failure);
+/// @return the stream so calls can be chained
+utils::StringStream& operator<<(utils::StringStream& out, ConversionFailure failure);
 
 /// Converts a number from one type to another, checking that the value fits in the target type.
 /// @returns the resulting value of the conversion, or a failure reason.
diff --git a/src/tint/program_id.h b/src/tint/program_id.h
index c018543..4169ba1 100644
--- a/src/tint/program_id.h
+++ b/src/tint/program_id.h
@@ -16,10 +16,10 @@
 #define SRC_TINT_PROGRAM_ID_H_
 
 #include <stdint.h>
-#include <iostream>
 #include <utility>
 
 #include "src/tint/debug.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint {
 
@@ -71,11 +71,11 @@
     return id;
 }
 
-/// Writes the ProgramID to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the ProgramID to the stream.
+/// @param out the stream to write to
 /// @param id the program identifier to write
 /// @returns out so calls can be chained
-inline std::ostream& operator<<(std::ostream& out, ProgramID id) {
+inline utils::StringStream& operator<<(utils::StringStream& out, ProgramID id) {
     out << "Program<" << id.Value() << ">";
     return out;
 }
diff --git a/src/tint/reader/spirv/construct.h b/src/tint/reader/spirv/construct.h
index 06ae450..7377d83 100644
--- a/src/tint/reader/spirv/construct.h
+++ b/src/tint/reader/spirv/construct.h
@@ -16,7 +16,6 @@
 #define SRC_TINT_READER_SPIRV_CONSTRUCT_H_
 
 #include <memory>
-#include <sstream>
 #include <string>
 
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/reader/spirv/fail_stream.h b/src/tint/reader/spirv/fail_stream.h
index 6530eae..0a154f7 100644
--- a/src/tint/reader/spirv/fail_stream.h
+++ b/src/tint/reader/spirv/fail_stream.h
@@ -19,7 +19,7 @@
 
 namespace tint::reader::spirv {
 
-/// A FailStream object accumulates values onto a given std::ostream,
+/// A FailStream object accumulates values onto a given stream,
 /// and can be used to record failure by writing the false value
 /// to given a pointer-to-bool.
 class FailStream {
diff --git a/src/tint/reader/spirv/function.h b/src/tint/reader/spirv/function.h
index a07309d..718e8e3 100644
--- a/src/tint/reader/spirv/function.h
+++ b/src/tint/reader/spirv/function.h
@@ -28,6 +28,7 @@
 #include "src/tint/reader/spirv/attributes.h"
 #include "src/tint/reader/spirv/construct.h"
 #include "src/tint/reader/spirv/parser_impl.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::reader::spirv {
 
@@ -178,11 +179,11 @@
     utils::Vector<uint32_t, 4> phis_needing_state_vars;
 };
 
-/// Writes the BlockInfo to the ostream
-/// @param o the ostream
+/// Writes the BlockInfo to the stream
+/// @param o the stream
 /// @param bi the BlockInfo
-/// @returns the ostream so calls can be chained
-inline std::ostream& operator<<(std::ostream& o, const BlockInfo& bi) {
+/// @returns the stream so calls can be chained
+inline utils::StringStream& operator<<(utils::StringStream& o, const BlockInfo& bi) {
     o << "BlockInfo{"
       << " id: " << bi.id << " pos: " << bi.pos << " merge_for_header: " << bi.merge_for_header
       << " continue_for_header: " << bi.continue_for_header
@@ -353,11 +354,11 @@
     SkipReason skip = SkipReason::kDontSkip;
 };
 
-/// Writes the DefInfo to the ostream
-/// @param o the ostream
+/// Writes the DefInfo to the stream
+/// @param o the stream
 /// @param di the DefInfo
-/// @returns the ostream so calls can be chained
-inline std::ostream& operator<<(std::ostream& o, const DefInfo& di) {
+/// @returns the stream so calls can be chained
+inline utils::StringStream& operator<<(utils::StringStream& o, const DefInfo& di) {
     o << "DefInfo{"
       << " inst.result_id: " << di.inst.result_id();
     if (di.local.has_value()) {
diff --git a/src/tint/reader/spirv/function_cfg_test.cc b/src/tint/reader/spirv/function_cfg_test.cc
index f4f1ce5..36d085a 100644
--- a/src/tint/reader/spirv/function_cfg_test.cc
+++ b/src/tint/reader/spirv/function_cfg_test.cc
@@ -2598,10 +2598,11 @@
     fe.ComputeBlockOrderAndPositions();
     fe.RegisterMerges();
     EXPECT_FALSE(fe.VerifyHeaderContinueMergeOrder());
+
+    utils::StringStream result;
+    result << *fe.GetBlockInfo(50) << std::endl << *fe.GetBlockInfo(20) << std::endl;
     EXPECT_THAT(p->error(), Eq("Header 50 does not strictly dominate its merge block 20"))
-        << *fe.GetBlockInfo(50) << std::endl
-        << *fe.GetBlockInfo(20) << std::endl
-        << Dump(fe.block_order());
+        << result.str() << Dump(fe.block_order());
 }
 
 TEST_F(SpvParserCFGTest,
@@ -2634,10 +2635,10 @@
     fe.ComputeBlockOrderAndPositions();
     fe.RegisterMerges();
     EXPECT_FALSE(fe.VerifyHeaderContinueMergeOrder());
+    utils::StringStream str;
+    str << *fe.GetBlockInfo(50) << std::endl << *fe.GetBlockInfo(20) << std::endl;
     EXPECT_THAT(p->error(), Eq("Loop header 50 does not dominate its continue target 20"))
-        << *fe.GetBlockInfo(50) << std::endl
-        << *fe.GetBlockInfo(20) << std::endl
-        << Dump(fe.block_order());
+        << str.str() << Dump(fe.block_order());
 }
 
 TEST_F(SpvParserCFGTest, VerifyHeaderContinueMergeOrder_MergeInsideContinueTarget) {
@@ -2752,10 +2753,15 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 2u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,4) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,3) begin_id:10 end_id:99 depth:1 parent:Function@10 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[1].get());
@@ -2798,10 +2804,15 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 2u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,6) begin_id:5 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [1,4) begin_id:10 end_id:99 depth:1 parent:Function@5 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(5)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
@@ -2842,10 +2853,15 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 2u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,5) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ SwitchSelection [0,4) begin_id:10 end_id:99 depth:1 parent:Function@10 in-c-l-s:SwitchSelection@10 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[1].get());
@@ -2879,12 +2895,17 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 2u);
+
+    utils::StringStream str;
+    str << constructs;
+
     // A single-block loop consists *only* of a continue target with one block in
     // it.
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,3) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [1,2) begin_id:20 end_id:99 depth:1 parent:Function@10 in-c:Continue@20 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[1].get());
@@ -2925,11 +2946,16 @@
     fe.RegisterMerges();
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,6) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [3,5) begin_id:40 end_id:99 depth:1 parent:Function@10 in-c:Continue@40 }
   Construct{ Loop [1,3) begin_id:20 end_id:40 depth:1 parent:Function@10 scope:[1,5) in-l:Loop@20 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -2973,10 +2999,14 @@
     fe.RegisterMerges();
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,6) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [1,5) begin_id:20 end_id:99 depth:1 parent:Function@10 in-c:Continue@20 }
-})")) << constructs;
+})")) << str.str();
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[1].get());
@@ -3020,13 +3050,18 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 3u);
+
+    utils::StringStream str;
+    str << constructs;
+
     // A single-block loop consists *only* of a continue target with one block in
     // it.
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,4) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,2) begin_id:10 end_id:50 depth:1 parent:Function@10 }
   Construct{ Continue [2,3) begin_id:50 end_id:99 depth:1 parent:Function@10 in-c:Continue@50 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[1].get());
@@ -3068,12 +3103,17 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,5) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,2) begin_id:10 end_id:50 depth:1 parent:Function@10 }
   Construct{ Continue [3,4) begin_id:60 end_id:99 depth:1 parent:Function@10 in-c:Continue@60 }
   Construct{ Loop [2,3) begin_id:50 end_id:60 depth:1 parent:Function@10 scope:[2,4) in-l:Loop@50 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[1].get());
@@ -3127,12 +3167,17 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,9) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,8) begin_id:10 end_id:99 depth:1 parent:Function@10 }
   Construct{ IfSelection [1,3) begin_id:20 end_id:40 depth:2 parent:IfSelection@10 }
   Construct{ IfSelection [5,7) begin_id:50 end_id:89 depth:2 parent:IfSelection@10 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -3187,13 +3232,18 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     // The ordering among siblings depends on the computed block order.
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,8) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ SwitchSelection [0,7) begin_id:10 end_id:99 depth:1 parent:Function@10 in-c-l-s:SwitchSelection@10 }
   Construct{ IfSelection [1,3) begin_id:50 end_id:89 depth:2 parent:SwitchSelection@10 in-c-l-s:SwitchSelection@10 }
   Construct{ IfSelection [4,6) begin_id:20 end_id:49 depth:2 parent:SwitchSelection@10 in-c-l-s:SwitchSelection@10 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[3].get());
@@ -3237,11 +3287,16 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 3u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,5) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,4) begin_id:10 end_id:99 depth:1 parent:Function@10 }
   Construct{ SwitchSelection [1,3) begin_id:20 end_id:89 depth:2 parent:IfSelection@10 in-c-l-s:SwitchSelection@20 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -3291,12 +3346,17 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,8) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [4,6) begin_id:50 end_id:89 depth:1 parent:Function@10 in-c:Continue@50 }
   Construct{ Loop [1,4) begin_id:20 end_id:50 depth:1 parent:Function@10 scope:[1,6) in-l:Loop@20 }
   Construct{ Continue [2,3) begin_id:30 end_id:40 depth:2 parent:Loop@20 in-l:Loop@20 in-c:Continue@30 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -3346,12 +3406,17 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,7) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [5,6) begin_id:80 end_id:99 depth:1 parent:Function@10 in-c:Continue@80 }
   Construct{ Loop [1,5) begin_id:20 end_id:80 depth:1 parent:Function@10 scope:[1,6) in-l:Loop@20 }
   Construct{ IfSelection [2,4) begin_id:30 end_id:49 depth:2 parent:Loop@20 in-l:Loop@20 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -3397,12 +3462,16 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,6) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [2,5) begin_id:30 end_id:99 depth:1 parent:Function@10 in-c:Continue@30 }
   Construct{ Loop [1,2) begin_id:20 end_id:30 depth:1 parent:Function@10 scope:[1,5) in-l:Loop@20 }
   Construct{ IfSelection [2,4) begin_id:30 end_id:49 depth:2 parent:Continue@30 in-c:Continue@30 }
-})")) << constructs;
+})")) << str.str();
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -3441,11 +3510,15 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 3u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,4) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,3) begin_id:10 end_id:99 depth:1 parent:Function@10 }
   Construct{ Continue [1,2) begin_id:20 end_id:89 depth:2 parent:IfSelection@10 in-c:Continue@20 }
-})")) << constructs;
+})")) << str.str();
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[2].get());
@@ -3490,12 +3563,17 @@
     EXPECT_TRUE(fe.LabelControlFlowConstructs());
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     EXPECT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,7) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ IfSelection [0,6) begin_id:10 end_id:99 depth:1 parent:Function@10 }
   Construct{ Continue [3,5) begin_id:40 end_id:89 depth:2 parent:IfSelection@10 in-c:Continue@40 }
   Construct{ Loop [1,3) begin_id:20 end_id:40 depth:2 parent:IfSelection@10 scope:[1,5) in-l:Loop@20 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[1].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[3].get());
@@ -3540,12 +3618,17 @@
     ASSERT_TRUE(FlowLabelControlFlowConstructs(&fe)) << p->error();
     const auto& constructs = fe.constructs();
     EXPECT_EQ(constructs.Length(), 4u);
+
+    utils::StringStream str;
+    str << constructs;
+
     ASSERT_THAT(ToString(constructs), Eq(R"(ConstructList{
   Construct{ Function [0,6) begin_id:10 end_id:0 depth:0 parent:null }
   Construct{ Continue [4,5) begin_id:90 end_id:99 depth:1 parent:Function@10 in-c:Continue@90 }
   Construct{ Loop [1,4) begin_id:20 end_id:90 depth:1 parent:Function@10 scope:[1,5) in-l:Loop@20 }
   Construct{ IfSelection [1,4) begin_id:20 end_id:90 depth:2 parent:Loop@20 in-l:Loop@20 }
-})")) << constructs;
+})")) << str.str();
+
     // The block records the nearest enclosing construct.
     EXPECT_EQ(fe.GetBlockInfo(10)->construct, constructs[0].get());
     EXPECT_EQ(fe.GetBlockInfo(20)->construct, constructs[3].get());
diff --git a/src/tint/reader/spirv/function_logical_test.cc b/src/tint/reader/spirv/function_logical_test.cc
index a9ccf7d..2d362c4f 100644
--- a/src/tint/reader/spirv/function_logical_test.cc
+++ b/src/tint/reader/spirv/function_logical_test.cc
@@ -532,9 +532,10 @@
     auto fe = p->function_emitter(100);
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     auto ast_body = fe.ast_body();
-    EXPECT_THAT(test::ToString(p->program(), ast_body),
-                HasSubstr("let x_1 : vec2<bool> = "
-                          "!((vec2<f32>(50.0f, 60.0f) != vec2<f32>(60.0f, 50.0f)));"));
+    EXPECT_THAT(
+        test::ToString(p->program(), ast_body),
+        HasSubstr(
+            "let x_1 : vec2<bool> = !((vec2<f32>(50.0f, 60.0f) != vec2<f32>(60.0f, 50.0f)));"));
 }
 
 TEST_F(SpvFUnordTest, FUnordNotEqual_Scalar) {
@@ -567,9 +568,10 @@
     auto fe = p->function_emitter(100);
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     auto ast_body = fe.ast_body();
-    EXPECT_THAT(test::ToString(p->program(), ast_body),
-                HasSubstr("let x_1 : vec2<bool> = "
-                          "!((vec2<f32>(50.0f, 60.0f) == vec2<f32>(60.0f, 50.0f)));"));
+    EXPECT_THAT(
+        test::ToString(p->program(), ast_body),
+        HasSubstr(
+            "let x_1 : vec2<bool> = !((vec2<f32>(50.0f, 60.0f) == vec2<f32>(60.0f, 50.0f)));"));
 }
 
 TEST_F(SpvFUnordTest, FUnordLessThan_Scalar) {
@@ -602,9 +604,10 @@
     auto fe = p->function_emitter(100);
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     auto ast_body = fe.ast_body();
-    EXPECT_THAT(test::ToString(p->program(), ast_body),
-                HasSubstr("let x_1 : vec2<bool> = "
-                          "!((vec2<f32>(50.0f, 60.0f) >= vec2<f32>(60.0f, 50.0f)));"));
+    EXPECT_THAT(
+        test::ToString(p->program(), ast_body),
+        HasSubstr(
+            "let x_1 : vec2<bool> = !((vec2<f32>(50.0f, 60.0f) >= vec2<f32>(60.0f, 50.0f)));"));
 }
 
 TEST_F(SpvFUnordTest, FUnordLessThanEqual_Scalar) {
@@ -637,9 +640,10 @@
     auto fe = p->function_emitter(100);
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     auto ast_body = fe.ast_body();
-    EXPECT_THAT(test::ToString(p->program(), ast_body),
-                HasSubstr("let x_1 : vec2<bool> = "
-                          "!((vec2<f32>(50.0f, 60.0f) > vec2<f32>(60.0f, 50.0f)));"));
+    EXPECT_THAT(
+        test::ToString(p->program(), ast_body),
+        HasSubstr(
+            "let x_1 : vec2<bool> = !((vec2<f32>(50.0f, 60.0f) > vec2<f32>(60.0f, 50.0f)));"));
 }
 
 TEST_F(SpvFUnordTest, FUnordGreaterThan_Scalar) {
@@ -672,9 +676,10 @@
     auto fe = p->function_emitter(100);
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     auto ast_body = fe.ast_body();
-    EXPECT_THAT(test::ToString(p->program(), ast_body),
-                HasSubstr("let x_1 : vec2<bool> = "
-                          "!((vec2<f32>(50.0f, 60.0f) <= vec2<f32>(60.0f, 50.0f)));"));
+    EXPECT_THAT(
+        test::ToString(p->program(), ast_body),
+        HasSubstr(
+            "let x_1 : vec2<bool> = !((vec2<f32>(50.0f, 60.0f) <= vec2<f32>(60.0f, 50.0f)));"));
 }
 
 TEST_F(SpvFUnordTest, FUnordGreaterThanEqual_Scalar) {
@@ -707,10 +712,10 @@
     auto fe = p->function_emitter(100);
     EXPECT_TRUE(fe.EmitBody()) << p->error();
     auto ast_body = fe.ast_body();
-    EXPECT_THAT(test::ToString(p->program(), ast_body),
-                HasSubstr("let x_1 : vec2<bool> = !(("
-                          "vec2<f32>(50.0f, 60.0f) < vec2<f32>(60.0f, 50.0f)"
-                          "));"));
+    EXPECT_THAT(
+        test::ToString(p->program(), ast_body),
+        HasSubstr(
+            "let x_1 : vec2<bool> = !((vec2<f32>(50.0f, 60.0f) < vec2<f32>(60.0f, 50.0f)));"));
 }
 
 using SpvLogicalTest = SpvParserTestBase<::testing::Test>;
diff --git a/src/tint/reader/spirv/namer.cc b/src/tint/reader/spirv/namer.cc
index 378e133..6c73a34 100644
--- a/src/tint/reader/spirv/namer.cc
+++ b/src/tint/reader/spirv/namer.cc
@@ -15,7 +15,6 @@
 #include "src/tint/reader/spirv/namer.h"
 
 #include <algorithm>
-#include <sstream>
 #include <unordered_set>
 
 #include "src/tint/debug.h"
diff --git a/src/tint/reader/spirv/parser_impl_handle_test.cc b/src/tint/reader/spirv/parser_impl_handle_test.cc
index 17e6ed6..39d5498 100644
--- a/src/tint/reader/spirv/parser_impl_handle_test.cc
+++ b/src/tint/reader/spirv/parser_impl_handle_test.cc
@@ -1645,7 +1645,7 @@
                         R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;)",
-                        "textureGatherCompare(x_20, x_10, coords12, 0.200000003f)"},
+                        "textureGatherCompare(x_20, x_10, coords12, 0.20000000298023223877f)"},
         // OpImageDrefGather 2DDepth ConstOffset signed
         ImageAccessCase{"%float 2D 1 0 0 1 Unknown",
                         "%result = OpImageDrefGather "
@@ -1653,7 +1653,7 @@
                         R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;)",
-                        "textureGatherCompare(x_20, x_10, coords12, 0.200000003f, "
+                        "textureGatherCompare(x_20, x_10, coords12, 0.20000000298023223877f, "
                         "vec2<i32>(3i, 4i))"},
         // OpImageDrefGather 2DDepth ConstOffset unsigned
         ImageAccessCase{"%float 2D 1 0 0 1 Unknown",
@@ -1663,7 +1663,7 @@
                         R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;)",
-                        "textureGatherCompare(x_20, x_10, coords12, 0.200000003f, "
+                        "textureGatherCompare(x_20, x_10, coords12, 0.20000000298023223877f, "
                         "vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageDrefGather 2DDepth Array
         ImageAccessCase{"%float 2D 1 1 0 1 Unknown",
@@ -1673,7 +1673,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
                         "textureGatherCompare(x_20, x_10, coords123.xy, "
-                        "i32(round(coords123.z)), 0.200000003f)"},
+                        "i32(round(coords123.z)), 0.20000000298023223877f)"},
         // OpImageDrefGather 2DDepth Array ConstOffset signed
         ImageAccessCase{"%float 2D 1 1 0 1 Unknown",
                         "%result = OpImageDrefGather "
@@ -1682,7 +1682,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
                         "textureGatherCompare(x_20, x_10, coords123.xy, "
-                        "i32(round(coords123.z)), 0.200000003f, vec2<i32>(3i, 4i))"},
+                        "i32(round(coords123.z)), 0.20000000298023223877f, vec2<i32>(3i, 4i))"},
         // OpImageDrefGather 2DDepth Array ConstOffset unsigned
         ImageAccessCase{"%float 2D 1 1 0 1 Unknown",
                         "%result = OpImageDrefGather "
@@ -1692,7 +1692,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
                         "textureGatherCompare(x_20, x_10, coords123.xy, "
-                        "i32(round(coords123.z)), 0.200000003f, "
+                        "i32(round(coords123.z)), 0.20000000298023223877f, "
                         "vec2<i32>(vec2<u32>(3u, 4u)))"},
         // OpImageDrefGather DepthCube
         ImageAccessCase{"%float Cube 1 0 0 1 Unknown",
@@ -1701,7 +1701,7 @@
                         R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_cube;)",
-                        "textureGatherCompare(x_20, x_10, coords123, 0.200000003f)"},
+                        "textureGatherCompare(x_20, x_10, coords123, 0.20000000298023223877f)"},
         // OpImageDrefGather DepthCube Array
         ImageAccessCase{"%float Cube 1 1 0 1 Unknown",
                         "%result = OpImageDrefGather "
@@ -1710,7 +1710,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
                         "textureGatherCompare(x_20, x_10, coords1234.xyz, "
-                        "i32(round(coords1234.w)), 0.200000003f)"}}));
+                        "i32(round(coords1234.w)), 0.20000000298023223877f)"}}));
 
 INSTANTIATE_TEST_SUITE_P(
     ImageSampleImplicitLod,
@@ -1829,7 +1829,7 @@
 )",
                         R"(
   let x_200 : vec4<f32> = vec4<f32>(textureSample(x_20, x_10, coords12), 0.0f, 0.0f, 0.0f);
-  let x_210 : f32 = textureSampleCompare(x_20, x_30, coords12, 0.200000003f);
+  let x_210 : f32 = textureSampleCompare(x_20, x_30, coords12, 0.20000000298023223877f);
 )"}));
 
 INSTANTIATE_TEST_SUITE_P(
@@ -1844,7 +1844,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
-                        R"(textureSampleCompare(x_20, x_10, coords12, 0.200000003f))"},
+                        R"(textureSampleCompare(x_20, x_10, coords12, 0.20000000298023223877f))"},
         // ImageSampleDrefImplicitLod - arrayed
         ImageAccessCase{
             "%float 2D 0 1 0 1 Unknown",
@@ -1853,7 +1853,7 @@
             R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
-            R"(textureSampleCompare(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003f))"},
+            R"(textureSampleCompare(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.20000000298023223877f))"},
         // ImageSampleDrefImplicitLod with ConstOffset
         ImageAccessCase{
             "%float 2D 0 0 0 1 Unknown",
@@ -1863,7 +1863,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
-            R"(textureSampleCompare(x_20, x_10, coords12, 0.200000003f, vec2<i32>(3i, 4i)))"},
+            R"(textureSampleCompare(x_20, x_10, coords12, 0.20000000298023223877f, vec2<i32>(3i, 4i)))"},
         // ImageSampleDrefImplicitLod arrayed with ConstOffset
         ImageAccessCase{
             "%float 2D 0 1 0 1 Unknown",
@@ -1872,7 +1872,7 @@
             R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
-            R"(textureSampleCompare(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003f, vec2<i32>(3i, 4i)))"}));
+            R"(textureSampleCompare(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.20000000298023223877f, vec2<i32>(3i, 4i)))"}));
 
 INSTANTIATE_TEST_SUITE_P(
     ImageSampleDrefExplicitLod,
@@ -1881,14 +1881,15 @@
     // Another test checks cases where the Lod is not float constant 0.
     ::testing::Values(
         // 2D
-        ImageAccessCase{"%float 2D 1 0 0 1 Unknown",
-                        "%result = OpImageSampleDrefExplicitLod "
-                        "%float %sampled_image %coords12 %depth Lod %float_0",
-                        R"(@group(0) @binding(0) var x_10 : sampler_comparison;
+        ImageAccessCase{
+            "%float 2D 1 0 0 1 Unknown",
+            "%result = OpImageSampleDrefExplicitLod "
+            "%float %sampled_image %coords12 %depth Lod %float_0",
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
-                        R"(textureSampleCompareLevel(x_20, x_10, coords12, 0.200000003f))"},
+            R"(textureSampleCompareLevel(x_20, x_10, coords12, 0.20000000298023223877f))"},
         // 2D array
         ImageAccessCase{
             "%float 2D 1 1 0 1 Unknown",
@@ -1897,7 +1898,7 @@
             R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
-            R"(textureSampleCompareLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003f))"},
+            R"(textureSampleCompareLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.20000000298023223877f))"},
         // 2D, ConstOffset
         ImageAccessCase{
             "%float 2D 1 0 0 1 Unknown",
@@ -1908,7 +1909,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
-            R"(textureSampleCompareLevel(x_20, x_10, coords12, 0.200000003f, vec2<i32>(3i, 4i)))"},
+            R"(textureSampleCompareLevel(x_20, x_10, coords12, 0.20000000298023223877f, vec2<i32>(3i, 4i)))"},
         // 2D array, ConstOffset
         ImageAccessCase{
             "%float 2D 1 1 0 1 Unknown",
@@ -1918,15 +1919,16 @@
             R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_2d_array;)",
-            R"(textureSampleCompareLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.200000003f, vec2<i32>(3i, 4i)))"},
+            R"(textureSampleCompareLevel(x_20, x_10, coords123.xy, i32(round(coords123.z)), 0.20000000298023223877f, vec2<i32>(3i, 4i)))"},
         // Cube
-        ImageAccessCase{"%float Cube 1 0 0 1 Unknown",
-                        "%result = OpImageSampleDrefExplicitLod "
-                        "%float %sampled_image %coords123 %depth Lod %float_0",
-                        R"(@group(0) @binding(0) var x_10 : sampler_comparison;
+        ImageAccessCase{
+            "%float Cube 1 0 0 1 Unknown",
+            "%result = OpImageSampleDrefExplicitLod "
+            "%float %sampled_image %coords123 %depth Lod %float_0",
+            R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_cube;)",
-                        R"(textureSampleCompareLevel(x_20, x_10, coords123, 0.200000003f))"},
+            R"(textureSampleCompareLevel(x_20, x_10, coords123, 0.20000000298023223877f))"},
         // Cube array
         ImageAccessCase{
             "%float Cube 1 1 0 1 Unknown",
@@ -1935,7 +1937,7 @@
             R"(@group(0) @binding(0) var x_10 : sampler_comparison;
 
 @group(2) @binding(1) var x_20 : texture_depth_cube_array;)",
-            R"(textureSampleCompareLevel(x_20, x_10, coords1234.xyz, i32(round(coords1234.w)), 0.200000003f))"}));
+            R"(textureSampleCompareLevel(x_20, x_10, coords1234.xyz, i32(round(coords1234.w)), 0.20000000298023223877f))"}));
 
 INSTANTIATE_TEST_SUITE_P(
     ImageSampleExplicitLod_UsingLod,
@@ -2308,7 +2310,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
-            R"(textureSampleCompare(x_20, x_10, (coords123.xy / coords123.z), 0.200000003f, 0.0f))"},
+            R"(textureSampleCompare(x_20, x_10, (coords123.xy / coords123.z), 0.20000000298023223877f, 0.0f))"},
 
         // OpImageSampleProjDrefImplicitLod 2D depth-texture, Lod ConstOffset
         ImageAccessCase{
@@ -2320,7 +2322,7 @@
 
 @group(2) @binding(1) var x_20 : texture_depth_2d;
 )",
-            R"(textureSampleCompareLevel(x_20, x_10, (coords123.xy / coords123.z), 0.200000003f, 0.0f, vec2<i32>(3i, 4i)))"}));
+            R"(textureSampleCompareLevel(x_20, x_10, (coords123.xy / coords123.z), 0.20000000298023223877f, 0.0f, vec2<i32>(3i, 4i)))"}));
 
 /////
 // End projection sampling
diff --git a/src/tint/reader/spirv/usage.cc b/src/tint/reader/spirv/usage.cc
index 5256d4f..add944b 100644
--- a/src/tint/reader/spirv/usage.cc
+++ b/src/tint/reader/spirv/usage.cc
@@ -14,8 +14,6 @@
 
 #include "src/tint/reader/spirv/usage.h"
 
-#include <sstream>
-
 #include "src/tint/utils/string_stream.h"
 
 namespace tint::reader::spirv {
@@ -24,7 +22,7 @@
 Usage::Usage(const Usage& other) = default;
 Usage::~Usage() = default;
 
-std::ostream& Usage::operator<<(std::ostream& out) const {
+utils::StringStream& Usage::operator<<(utils::StringStream& out) const {
     out << "Usage(";
     if (IsSampler()) {
         out << "Sampler(";
diff --git a/src/tint/reader/spirv/usage.h b/src/tint/reader/spirv/usage.h
index 4c2ccbb..63902ef 100644
--- a/src/tint/reader/spirv/usage.h
+++ b/src/tint/reader/spirv/usage.h
@@ -17,6 +17,8 @@
 
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::reader::spirv {
 
 /// Records the properties of a sampler or texture based on how it's used
@@ -73,7 +75,7 @@
     /// Emits this usage to the given stream
     /// @param out the output stream.
     /// @returns the modified stream.
-    std::ostream& operator<<(std::ostream& out) const;
+    utils::StringStream& operator<<(utils::StringStream& out) const;
 
     /// Equality operator
     /// @param other the RHS of the equality test.
@@ -122,11 +124,11 @@
     bool is_storage_write_ = false;
 };
 
-/// Writes the Usage to the ostream
-/// @param out the ostream
+/// Writes the Usage to the stream
+/// @param out the stream
 /// @param u the Usage
-/// @returns the ostream so calls can be chained
-inline std::ostream& operator<<(std::ostream& out, const Usage& u) {
+/// @returns the stream so calls can be chained
+inline utils::StringStream& operator<<(utils::StringStream& out, const Usage& u) {
     return u.operator<<(out);
 }
 
diff --git a/src/tint/reader/wgsl/parser_impl_expression_test.cc b/src/tint/reader/wgsl/parser_impl_expression_test.cc
index 9a6c917..000a24b 100644
--- a/src/tint/reader/wgsl/parser_impl_expression_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_expression_test.cc
@@ -468,7 +468,7 @@
 static bool ParsedAsTemplateArgumentList(BinaryOperatorInfo lhs_op, BinaryOperatorInfo rhs_op) {
     return lhs_op.bit == kOpLt && rhs_op.bit & (kOpGt | kOpGe | kOpShr);
 }
-static std::ostream& operator<<(std::ostream& o, const Case& c) {
+static utils::StringStream& operator<<(utils::StringStream& o, const Case& c) {
     return o << "a " << c.lhs_op.symbol << " b " << c.rhs_op.symbol << " c ";
 }
 
diff --git a/src/tint/reader/wgsl/token.h b/src/tint/reader/wgsl/token.h
index 222f28e..43f6831 100644
--- a/src/tint/reader/wgsl/token.h
+++ b/src/tint/reader/wgsl/token.h
@@ -353,7 +353,7 @@
     std::variant<int64_t, double, std::string, std::string_view> value_;
 };
 
-inline std::ostream& operator<<(std::ostream& out, Token::Type type) {
+inline utils::StringStream& operator<<(utils::StringStream& out, Token::Type type) {
     out << Token::TypeToName(type);
     return out;
 }
diff --git a/src/tint/resolver/builtin_test.cc b/src/tint/resolver/builtin_test.cc
index 0108e89..4e9e4bd 100644
--- a/src/tint/resolver/builtin_test.cc
+++ b/src/tint/resolver/builtin_test.cc
@@ -2070,7 +2070,7 @@
 namespace texture_builtin_tests {
 
 enum class Texture { kF32, kI32, kU32 };
-inline std::ostream& operator<<(std::ostream& out, Texture data) {
+inline utils::StringStream& operator<<(utils::StringStream& out, Texture data) {
     if (data == Texture::kF32) {
         out << "f32";
     } else if (data == Texture::kI32) {
@@ -2087,7 +2087,9 @@
     builtin::TexelFormat format = builtin::TexelFormat::kR32Float;
 };
 inline std::ostream& operator<<(std::ostream& out, TextureTestParams data) {
-    out << data.dim << "_" << data.type;
+    utils::StringStream str;
+    str << data.dim << "_" << data.type;
+    out << str.str();
     return out;
 }
 
@@ -2110,7 +2112,11 @@
             case type::TextureDimension::kCubeArray:
                 return ty.vec3(scalar);
             default:
-                [=]() { FAIL() << "Unsupported texture dimension: " << dim; }();
+                [=]() {
+                    utils::StringStream str;
+                    str << dim;
+                    FAIL() << "Unsupported texture dimension: " << str.str();
+                }();
         }
         return ast::Type{};
     }
@@ -2448,8 +2454,11 @@
 
     if (std::string(param.function) == "textureDimensions") {
         switch (param.texture_dimension) {
-            default:
-                FAIL() << "invalid texture dimensions: " << param.texture_dimension;
+            default: {
+                utils::StringStream str;
+                str << param.texture_dimension;
+                FAIL() << "invalid texture dimensions: " << str.str();
+            }
             case type::TextureDimension::k1d:
                 EXPECT_TRUE(TypeOf(call)->Is<type::U32>());
                 break;
diff --git a/src/tint/resolver/const_eval_binary_op_test.cc b/src/tint/resolver/const_eval_binary_op_test.cc
index ff50a24..76441cd 100644
--- a/src/tint/resolver/const_eval_binary_op_test.cc
+++ b/src/tint/resolver/const_eval_binary_op_test.cc
@@ -1607,7 +1607,7 @@
         "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558"
         "632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245"
         "490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168"
-        "738177180919299881250404026184124858368.000000000 cannot be represented as 'f32'");
+        "738177180919299881250404026184124858368.0 cannot be represented as 'f32'");
 }
 
 TEST_F(ResolverConstEvalTest, ShortCircuit_And_Error_Materialize) {
@@ -1658,7 +1658,7 @@
         "179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558"
         "632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245"
         "490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168"
-        "738177180919299881250404026184124858368.000000000 cannot be represented as 'f32'");
+        "738177180919299881250404026184124858368.0 cannot be represented as 'f32'");
 }
 
 TEST_F(ResolverConstEvalTest, ShortCircuit_Or_Error_Materialize) {
diff --git a/src/tint/resolver/const_eval_builtin_test.cc b/src/tint/resolver/const_eval_builtin_test.cc
index 6f53af1..bd32779 100644
--- a/src/tint/resolver/const_eval_builtin_test.cc
+++ b/src/tint/resolver/const_eval_builtin_test.cc
@@ -2025,10 +2025,10 @@
         C({Vec(f32(10), f32(-10.5))}, Val(u32(0xc940'4900))),
 
         E({Vec(f32(0), f32::Highest())},
-          "12:34 error: value 340282346638528859811704183484516925440.000000000 cannot be "
+          "12:34 error: value 340282346638528859811704183484516925440.0 cannot be "
           "represented as 'f16'"),
         E({Vec(f32::Lowest(), f32(0))},
-          "12:34 error: value -340282346638528859811704183484516925440.000000000 cannot be "
+          "12:34 error: value -340282346638528859811704183484516925440.0 cannot be "
           "represented as 'f16'"),
     };
 }
@@ -2850,16 +2850,15 @@
           Vec(0x0.034p-14_f, -0x0.034p-14_f, 0x0.068p-14_f, -0x0.068p-14_f)),
 
         // Value out of f16 range
-        E({65504.003_f}, "12:34 error: value 65504.003906250 cannot be represented as 'f16'"),
-        E({-65504.003_f}, "12:34 error: value -65504.003906250 cannot be represented as 'f16'"),
-        E({0x1.234p56_f},
-          "12:34 error: value 81979586966978560.000000000 cannot be represented as 'f16'"),
+        E({65504.003_f}, "12:34 error: value 65504.00390625 cannot be represented as 'f16'"),
+        E({-65504.003_f}, "12:34 error: value -65504.00390625 cannot be represented as 'f16'"),
+        E({0x1.234p56_f}, "12:34 error: value 81979586966978560.0 cannot be represented as 'f16'"),
         E({0x4.321p65_f},
-          "12:34 error: value 154788719192723947520.000000000 cannot be represented as 'f16'"),
+          "12:34 error: value 154788719192723947520.0 cannot be represented as 'f16'"),
         E({Vec(65504.003_f, 0_f)},
-          "12:34 error: value 65504.003906250 cannot be represented as 'f16'"),
+          "12:34 error: value 65504.00390625 cannot be represented as 'f16'"),
         E({Vec(0_f, -0x4.321p65_f)},
-          "12:34 error: value -154788719192723947520.000000000 cannot be represented as 'f16'"),
+          "12:34 error: value -154788719192723947520.0 cannot be represented as 'f16'"),
     };
 }
 INSTANTIATE_TEST_SUITE_P(  //
diff --git a/src/tint/resolver/const_eval_conversion_test.cc b/src/tint/resolver/const_eval_conversion_test.cc
index b6bcc56..92af2de 100644
--- a/src/tint/resolver/const_eval_conversion_test.cc
+++ b/src/tint/resolver/const_eval_conversion_test.cc
@@ -431,8 +431,7 @@
     WrapInFunction(expr);
 
     EXPECT_FALSE(r()->Resolve());
-    EXPECT_EQ(r()->error(),
-              "12:34 error: value 10000000000.000000000 cannot be represented as 'f16'");
+    EXPECT_EQ(r()->error(), "12:34 error: value 10000000000.0 cannot be represented as 'f16'");
 }
 
 TEST_F(ResolverConstEvalTest, Vec3_Convert_Small_f32_to_f16) {
diff --git a/src/tint/resolver/const_eval_runtime_semantics_test.cc b/src/tint/resolver/const_eval_runtime_semantics_test.cc
index 347e41d..eb0cf52 100644
--- a/src/tint/resolver/const_eval_runtime_semantics_test.cc
+++ b/src/tint/resolver/const_eval_runtime_semantics_test.cc
@@ -363,7 +363,7 @@
     auto result = const_eval.exp(a->Type(), utils::Vector{a}, {});
     ASSERT_TRUE(result);
     EXPECT_EQ(result.Get()->ValueAs<f32>(), 0.f);
-    EXPECT_EQ(error(), R"(warning: e^1000.000000000 cannot be represented as 'f32')");
+    EXPECT_EQ(error(), R"(warning: e^1000.0 cannot be represented as 'f32')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Exp2_F32_Overflow) {
@@ -371,7 +371,7 @@
     auto result = const_eval.exp2(a->Type(), utils::Vector{a}, {});
     ASSERT_TRUE(result);
     EXPECT_EQ(result.Get()->ValueAs<f32>(), 0.f);
-    EXPECT_EQ(error(), R"(warning: 2^1000.000000000 cannot be represented as 'f32')");
+    EXPECT_EQ(error(), R"(warning: 2^1000.0 cannot be represented as 'f32')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, ExtractBits_I32_TooManyBits) {
@@ -476,7 +476,7 @@
     auto result = const_eval.pack2x16float(create<type::U32>(), utils::Vector{vec}, {});
     ASSERT_TRUE(result);
     EXPECT_EQ(result.Get()->ValueAs<u32>(), 0x51430000);
-    EXPECT_EQ(error(), R"(warning: value 75250.000000000 cannot be represented as 'f16')");
+    EXPECT_EQ(error(), R"(warning: value 75250.0 cannot be represented as 'f16')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Pow_F32_Overflow) {
@@ -502,7 +502,7 @@
     auto result = const_eval.quantizeToF16(create<type::U32>(), utils::Vector{a}, {});
     ASSERT_TRUE(result);
     EXPECT_EQ(result.Get()->ValueAs<u32>(), 0);
-    EXPECT_EQ(error(), R"(warning: value 75250.000000000 cannot be represented as 'f16')");
+    EXPECT_EQ(error(), R"(warning: value 75250.0 cannot be represented as 'f16')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Sqrt_F32_OutOfRange) {
@@ -536,7 +536,7 @@
     EXPECT_EQ(result.Get()->ValueAs<f32>(), f32::kHighestValue);
     EXPECT_EQ(
         error(),
-        R"(warning: value 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000 cannot be represented as 'f32')");
+        R"(warning: value 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 cannot be represented as 'f32')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Convert_F32_TooLow) {
@@ -546,7 +546,7 @@
     EXPECT_EQ(result.Get()->ValueAs<f32>(), f32::kLowestValue);
     EXPECT_EQ(
         error(),
-        R"(warning: value -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000000 cannot be represented as 'f32')");
+        R"(warning: value -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 cannot be represented as 'f32')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Convert_F16_TooHigh) {
@@ -554,7 +554,7 @@
     auto result = const_eval.Convert(create<type::F16>(), a, {});
     ASSERT_TRUE(result);
     EXPECT_EQ(result.Get()->ValueAs<f32>(), f16::kHighestValue);
-    EXPECT_EQ(error(), R"(warning: value 1000000.000000000 cannot be represented as 'f16')");
+    EXPECT_EQ(error(), R"(warning: value 1000000.0 cannot be represented as 'f16')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Convert_F16_TooLow) {
@@ -562,7 +562,7 @@
     auto result = const_eval.Convert(create<type::F16>(), a, {});
     ASSERT_TRUE(result);
     EXPECT_EQ(result.Get()->ValueAs<f32>(), f16::kLowestValue);
-    EXPECT_EQ(error(), R"(warning: value -1000000.000000000 cannot be represented as 'f16')");
+    EXPECT_EQ(error(), R"(warning: value -1000000.0 cannot be represented as 'f16')");
 }
 
 TEST_F(ResolverConstEvalRuntimeSemanticsTest, Vec_Overflow_SingleComponent) {
diff --git a/src/tint/resolver/intrinsic_table.inl b/src/tint/resolver/intrinsic_table.inl
index 9aa0b76..c383265 100644
--- a/src/tint/resolver/intrinsic_table.inl
+++ b/src/tint/resolver/intrinsic_table.inl
@@ -14092,8 +14092,8 @@
   },
   {
     /* [2] */
-    /* fn acosh<T : fa_f32_f16>(@test_value(2) T) -> T */
-    /* fn acosh<N : num, T : fa_f32_f16>(@test_value(2) vec<N, T>) -> vec<N, T> */
+    /* fn acosh<T : fa_f32_f16>(@test_value(1.5430806348) T) -> T */
+    /* fn acosh<N : num, T : fa_f32_f16>(@test_value(1.5430806348) vec<N, T>) -> vec<N, T> */
     /* num overloads */ 2,
     /* overloads */ &kOverloads[287],
   },
@@ -14526,8 +14526,8 @@
   },
   {
     /* [66] */
-    /* fn round<T : fa_f32_f16>(@test_value(3.4) T) -> T */
-    /* fn round<N : num, T : fa_f32_f16>(@test_value(3.4) vec<N, T>) -> vec<N, T> */
+    /* fn round<T : fa_f32_f16>(@test_value(3.5) T) -> T */
+    /* fn round<N : num, T : fa_f32_f16>(@test_value(3.5) vec<N, T>) -> vec<N, T> */
     /* num overloads */ 2,
     /* overloads */ &kOverloads[383],
   },
diff --git a/src/tint/resolver/uniformity.cc b/src/tint/resolver/uniformity.cc
index 93402b6..bc4ac1d 100644
--- a/src/tint/resolver/uniformity.cc
+++ b/src/tint/resolver/uniformity.cc
@@ -15,7 +15,6 @@
 #include "src/tint/resolver/uniformity.h"
 
 #include <limits>
-#include <sstream>
 #include <string>
 #include <utility>
 #include <vector>
diff --git a/src/tint/resolver/uniformity_test.cc b/src/tint/resolver/uniformity_test.cc
index 0a79058..51608bd 100644
--- a/src/tint/resolver/uniformity_test.cc
+++ b/src/tint/resolver/uniformity_test.cc
@@ -13,7 +13,6 @@
 // limitations under the License.
 
 #include <memory>
-#include <sstream>
 #include <string>
 #include <tuple>
 #include <utility>
diff --git a/src/tint/sem/behavior.cc b/src/tint/sem/behavior.cc
index 670cc1d..b2c7897 100644
--- a/src/tint/sem/behavior.cc
+++ b/src/tint/sem/behavior.cc
@@ -16,7 +16,7 @@
 
 namespace tint::sem {
 
-std::ostream& operator<<(std::ostream& out, Behavior behavior) {
+utils::StringStream& operator<<(utils::StringStream& out, Behavior behavior) {
     switch (behavior) {
         case Behavior::kReturn:
             return out << "Return";
diff --git a/src/tint/sem/behavior.h b/src/tint/sem/behavior.h
index 011ca72..27eba3f 100644
--- a/src/tint/sem/behavior.h
+++ b/src/tint/sem/behavior.h
@@ -31,11 +31,11 @@
 /// Behaviors is a set of Behavior
 using Behaviors = utils::EnumSet<Behavior>;
 
-/// Writes the Behavior to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the Behavior to the stream.
+/// @param out the stream to write to
 /// @param behavior the Behavior to write
 /// @returns out so calls can be chained
-std::ostream& operator<<(std::ostream& out, Behavior behavior);
+utils::StringStream& operator<<(utils::StringStream& out, Behavior behavior);
 
 }  // namespace tint::sem
 
diff --git a/src/tint/sem/binding_point.h b/src/tint/sem/binding_point.h
index 78403ab..6837310 100644
--- a/src/tint/sem/binding_point.h
+++ b/src/tint/sem/binding_point.h
@@ -18,10 +18,10 @@
 #include <stdint.h>
 
 #include <functional>
-#include <ostream>
 
 #include "src/tint/reflection.h"
 #include "src/tint/utils/hash.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::sem {
 
@@ -49,10 +49,10 @@
 };
 
 /// Prints the BindingPoint @p bp to @p o
-/// @param o the std::ostream to write to
+/// @param o the stream to write to
 /// @param bp the BindingPoint
-/// @return the std::ostream so calls can be chained
-inline std::ostream& operator<<(std::ostream& o, const BindingPoint& bp) {
+/// @return the stream so calls can be chained
+inline utils::StringStream& operator<<(utils::StringStream& o, const BindingPoint& bp) {
     return o << "[group: " << bp.group << ", binding: " << bp.binding << "]";
 }
 
diff --git a/src/tint/sem/builtin_type.cc b/src/tint/sem/builtin_type.cc
index d9cb0c2..8abcec0 100644
--- a/src/tint/sem/builtin_type.cc
+++ b/src/tint/sem/builtin_type.cc
@@ -22,8 +22,6 @@
 
 #include "src/tint/sem/builtin_type.h"
 
-#include <sstream>
-
 namespace tint::sem {
 
 BuiltinType ParseBuiltinType(const std::string& name) {
@@ -608,7 +606,7 @@
     return "<unknown>";
 }
 
-std::ostream& operator<<(std::ostream& out, BuiltinType i) {
+utils::StringStream& operator<<(utils::StringStream& out, BuiltinType i) {
     out << str(i);
     return out;
 }
diff --git a/src/tint/sem/builtin_type.cc.tmpl b/src/tint/sem/builtin_type.cc.tmpl
index af3b1fa..86a8623 100644
--- a/src/tint/sem/builtin_type.cc.tmpl
+++ b/src/tint/sem/builtin_type.cc.tmpl
@@ -13,8 +13,6 @@
 
 #include "src/tint/sem/builtin_type.h"
 
-#include <sstream>
-
 namespace tint::sem {
 
 BuiltinType ParseBuiltinType(const std::string& name) {
@@ -38,7 +36,7 @@
     return "<unknown>";
 }
 
-std::ostream& operator<<(std::ostream& out, BuiltinType i) {
+utils::StringStream& operator<<(utils::StringStream& out, BuiltinType i) {
     out << str(i);
     return out;
 }
diff --git a/src/tint/sem/builtin_type.h b/src/tint/sem/builtin_type.h
index 114afb6..23f3749 100644
--- a/src/tint/sem/builtin_type.h
+++ b/src/tint/sem/builtin_type.h
@@ -23,9 +23,10 @@
 #ifndef SRC_TINT_SEM_BUILTIN_TYPE_H_
 #define SRC_TINT_SEM_BUILTIN_TYPE_H_
 
-#include <sstream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::sem {
 
 /// Enumerator of all builtin functions
@@ -159,7 +160,7 @@
 
 /// Emits the name of the builtin function type. The spelling, including case,
 /// matches the name in the WGSL spec.
-std::ostream& operator<<(std::ostream& out, BuiltinType i);
+utils::StringStream& operator<<(utils::StringStream& out, BuiltinType i);
 
 /// All builtin function
 constexpr BuiltinType kBuiltinTypes[] = {
diff --git a/src/tint/sem/builtin_type.h.tmpl b/src/tint/sem/builtin_type.h.tmpl
index 7e574f5..366db95 100644
--- a/src/tint/sem/builtin_type.h.tmpl
+++ b/src/tint/sem/builtin_type.h.tmpl
@@ -14,9 +14,10 @@
 #ifndef SRC_TINT_SEM_BUILTIN_TYPE_H_
 #define SRC_TINT_SEM_BUILTIN_TYPE_H_
 
-#include <sstream>
 #include <string>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::sem {
 
 /// Enumerator of all builtin functions
@@ -39,7 +40,7 @@
 
 /// Emits the name of the builtin function type. The spelling, including case,
 /// matches the name in the WGSL spec.
-std::ostream& operator<<(std::ostream& out, BuiltinType i);
+utils::StringStream& operator<<(utils::StringStream& out, BuiltinType i);
 
 /// All builtin function
 constexpr BuiltinType kBuiltinTypes[] = {
diff --git a/src/tint/sem/sampler_texture_pair.h b/src/tint/sem/sampler_texture_pair.h
index b3cf4f2..b0199bb 100644
--- a/src/tint/sem/sampler_texture_pair.h
+++ b/src/tint/sem/sampler_texture_pair.h
@@ -17,9 +17,9 @@
 
 #include <cstdint>
 #include <functional>
-#include <ostream>
 
 #include "src/tint/sem/binding_point.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::sem {
 
@@ -45,10 +45,10 @@
 };
 
 /// Prints the SamplerTexturePair @p stp to @p o
-/// @param o the std::ostream to write to
+/// @param o the stream to write to
 /// @param stp the SamplerTexturePair
-/// @return the std::ostream so calls can be chained
-inline std::ostream& operator<<(std::ostream& o, const SamplerTexturePair& stp) {
+/// @return the stream so calls can be chained
+inline utils::StringStream& operator<<(utils::StringStream& o, const SamplerTexturePair& stp) {
     return o << "[sampler: " << stp.sampler_binding_point
              << ", texture: " << stp.sampler_binding_point << "]";
 }
diff --git a/src/tint/source.cc b/src/tint/source.cc
index 6a10de5..3f3ec7c 100644
--- a/src/tint/source.cc
+++ b/src/tint/source.cc
@@ -15,7 +15,6 @@
 #include "src/tint/source.h"
 
 #include <algorithm>
-#include <sstream>
 #include <string_view>
 #include <utility>
 
@@ -122,7 +121,7 @@
 
 Source::File::~File() = default;
 
-std::ostream& operator<<(std::ostream& out, const Source& source) {
+utils::StringStream& operator<<(utils::StringStream& out, const Source& source) {
     auto rng = source.range;
 
     if (source.file) {
diff --git a/src/tint/source.h b/src/tint/source.h
index 7bf9735..cc13c5f 100644
--- a/src/tint/source.h
+++ b/src/tint/source.h
@@ -16,12 +16,13 @@
 #ifndef SRC_TINT_SOURCE_H_
 #define SRC_TINT_SOURCE_H_
 
-#include <iostream>
 #include <string>
 #include <string_view>
 #include <tuple>
 #include <vector>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint {
 
 /// Source describes a range of characters within a source file.
@@ -191,35 +192,36 @@
     const File* file = nullptr;
 };
 
-/// Writes the Source::Location to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the Source::Location to the stream.
+/// @param out the stream to write to
 /// @param loc the location to write
 /// @returns out so calls can be chained
-inline std::ostream& operator<<(std::ostream& out, const Source::Location& loc) {
+inline utils::StringStream& operator<<(utils::StringStream& out, const Source::Location& loc) {
     out << loc.line << ":" << loc.column;
     return out;
 }
 
-/// Writes the Source::Range to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the Source::Range to the stream.
+/// @param out the stream to write to
 /// @param range the range to write
 /// @returns out so calls can be chained
-inline std::ostream& operator<<(std::ostream& out, const Source::Range& range) {
+inline utils::StringStream& operator<<(utils::StringStream& out, const Source::Range& range) {
     out << "[" << range.begin << ", " << range.end << "]";
     return out;
 }
 
-/// Writes the Source to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the Source to the stream.
+/// @param out the stream to write to
 /// @param source the source to write
 /// @returns out so calls can be chained
-std::ostream& operator<<(std::ostream& out, const Source& source);
+utils::StringStream& operator<<(utils::StringStream& out, const Source& source);
 
-/// Writes the Source::FileContent to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the Source::FileContent to the stream.
+/// @param out the stream to write to
 /// @param content the file content to write
 /// @returns out so calls can be chained
-inline std::ostream& operator<<(std::ostream& out, const Source::FileContent& content) {
+inline utils::StringStream& operator<<(utils::StringStream& out,
+                                       const Source::FileContent& content) {
     out << content.data;
     return out;
 }
diff --git a/src/tint/templates/enums.tmpl.inc b/src/tint/templates/enums.tmpl.inc
index ab08163..ad46942 100644
--- a/src/tint/templates/enums.tmpl.inc
+++ b/src/tint/templates/enums.tmpl.inc
@@ -47,10 +47,10 @@
 {{-   end }}
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param value the {{$enum}}
 /// @returns `out` so calls can be chained
-std::ostream& operator<<(std::ostream& out, {{$enum}} value);
+utils::StringStream& operator<<(utils::StringStream& out, {{$enum}} value);
 
 /// Parse{{$enum}} parses a {{$enum}} from a string.
 /// @param str the string to parse
@@ -90,11 +90,11 @@
 
 {{- /* ------------------------------------------------------------------ */ -}}
 {{-                         define "EnumOStream"                             -}}
-{{- /* Implements the std::ostream 'operator<<()' function to print the   */ -}}
+{{- /* Implements the stream 'operator<<()' function to print the         */ -}}
 {{- /* provided sem.Enum.                                                 */ -}}
 {{- /* ------------------------------------------------------------------ */ -}}
 {{- $enum := Eval "EnumName" $ -}}
-std::ostream& operator<<(std::ostream& out, {{$enum}} value) {
+    utils::StringStream& operator<<(utils::StringStream& out, {{$enum}} value) {
     switch (value) {
         case {{$enum}}::kUndefined:
             return out << "undefined";
diff --git a/src/tint/text/unicode.cc b/src/tint/text/unicode.cc
index cc9a9d1..ee3092b 100644
--- a/src/tint/text/unicode.cc
+++ b/src/tint/text/unicode.cc
@@ -330,30 +330,6 @@
                                               kXIDContinueRanges + kNumXIDContinueRanges, *this);
 }
 
-std::ostream& operator<<(std::ostream& out, CodePoint code_point) {
-    if (code_point < 0x7f) {
-        // See https://en.cppreference.com/w/cpp/language/escape
-        switch (code_point) {
-            case '\a':
-                return out << R"('\a')";
-            case '\b':
-                return out << R"('\b')";
-            case '\f':
-                return out << R"('\f')";
-            case '\n':
-                return out << R"('\n')";
-            case '\r':
-                return out << R"('\r')";
-            case '\t':
-                return out << R"('\t')";
-            case '\v':
-                return out << R"('\v')";
-        }
-        return out << "'" << static_cast<char>(code_point) << "'";
-    }
-    return out << "'U+" << std::hex << code_point.value << "'";
-}
-
 namespace utf8 {
 
 std::pair<CodePoint, size_t> Decode(const uint8_t* ptr, size_t len) {
diff --git a/src/tint/text/unicode.h b/src/tint/text/unicode.h
index 0594d31..493cdf2 100644
--- a/src/tint/text/unicode.h
+++ b/src/tint/text/unicode.h
@@ -17,7 +17,7 @@
 
 #include <cstddef>
 #include <cstdint>
-#include <ostream>
+#include <string_view>
 #include <utility>
 
 namespace tint::text {
@@ -54,12 +54,6 @@
     uint32_t value = 0;
 };
 
-/// Writes the CodePoint to the std::ostream.
-/// @param out the std::ostream to write to
-/// @param codepoint the CodePoint to write
-/// @returns out so calls can be chained
-std::ostream& operator<<(std::ostream& out, CodePoint codepoint);
-
 namespace utf8 {
 
 /// Decodes the first code point in the utf8 string.
diff --git a/src/tint/transform/packed_vec3_test.cc b/src/tint/transform/packed_vec3_test.cc
index 670bc05..dbc28f7 100644
--- a/src/tint/transform/packed_vec3_test.cc
+++ b/src/tint/transform/packed_vec3_test.cc
@@ -289,7 +289,7 @@
 @group(0) @binding(0) var<storage, read_write> v : __packed_vec3<f32>;
 
 fn f() {
-  v = __packed_vec3<f32>(vec3(1.23));
+  v = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -342,7 +342,7 @@
 @group(0) @binding(0) var<storage, read_write> v : __packed_vec3<f32>;
 
 fn f() {
-  v.y = 1.23;
+  v.y = 1.22999999999999998224;
 }
 )";
 
@@ -367,7 +367,7 @@
 @group(0) @binding(0) var<storage, read_write> v : __packed_vec3<f32>;
 
 fn f() {
-  v[1] = 1.23;
+  v[1] = 1.22999999999999998224;
 }
 )";
 
@@ -596,7 +596,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<tint_packed_vec3_f32_array_element, 4u>;
 
 fn f() {
-  arr[0].elements = __packed_vec3<f32>(vec3(1.23));
+  arr[0].elements = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -664,7 +664,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<tint_packed_vec3_f32_array_element, 4u>;
 
 fn f() {
-  arr[0].elements.y = 1.23;
+  arr[0].elements.y = 1.22999999999999998224;
 }
 )";
 
@@ -694,7 +694,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<tint_packed_vec3_f32_array_element, 4u>;
 
 fn f() {
-  arr[0].elements[1] = 1.23;
+  arr[0].elements[1] = 1.22999999999999998224;
 }
 )";
 
@@ -923,7 +923,7 @@
 @group(0) @binding(0) var<storage, read_write> m : array<tint_packed_vec3_f32_array_element, 3u>;
 
 fn f() {
-  m[1].elements = __packed_vec3<f32>(vec3(1.23));
+  m[1].elements = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -991,7 +991,7 @@
 @group(0) @binding(0) var<storage, read_write> m : array<tint_packed_vec3_f32_array_element, 3u>;
 
 fn f() {
-  m[1].elements.y = 1.23;
+  m[1].elements.y = 1.22999999999999998224;
 }
 )";
 
@@ -1021,7 +1021,7 @@
 @group(0) @binding(0) var<storage, read_write> m : array<tint_packed_vec3_f32_array_element, 3u>;
 
 fn f() {
-  m[1].elements[2] = 1.23;
+  m[1].elements[2] = 1.22999999999999998224;
 }
 )";
 
@@ -1312,7 +1312,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<array<tint_packed_vec3_f32_array_element, 3u>, 4u>;
 
 fn f() {
-  arr[0] = tint_pack_vec3_in_composite(mat3x3(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9));
+  arr[0] = tint_pack_vec3_in_composite(mat3x3(1.10000000000000008882, 2.20000000000000017764, 3.29999999999999982236, 4.40000000000000035527, 5.5, 6.59999999999999964473, 7.70000000000000017764, 8.80000000000000071054, 9.90000000000000035527));
 }
 )";
 
@@ -1380,7 +1380,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<array<tint_packed_vec3_f32_array_element, 3u>, 4u>;
 
 fn f() {
-  arr[0][1].elements = __packed_vec3<f32>(vec3(1.23));
+  arr[0][1].elements = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -1453,7 +1453,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<array<tint_packed_vec3_f32_array_element, 3u>, 4u>;
 
 fn f() {
-  arr[0][1].elements.y = 1.23;
+  arr[0][1].elements.y = 1.22999999999999998224;
 }
 )";
 
@@ -1483,7 +1483,7 @@
 @group(0) @binding(0) var<storage, read_write> arr : array<array<tint_packed_vec3_f32_array_element, 3u>, 4u>;
 
 fn f() {
-  arr[0][1].elements[2] = 1.23;
+  arr[0][1].elements[2] = 1.22999999999999998224;
 }
 )";
 
@@ -1685,7 +1685,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P = tint_pack_vec3_in_composite(S(vec3(1.23)));
+  P = tint_pack_vec3_in_composite(S(vec3(1.22999999999999998224)));
 }
 )";
 
@@ -1764,7 +1764,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.v = __packed_vec3<f32>(vec3(1.23));
+  P.v = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -1852,7 +1852,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.v.y = 1.23;
+  P.v.y = 1.22999999999999998224;
 }
 )";
 
@@ -1890,7 +1890,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.v[1] = 1.23;
+  P.v[1] = 1.22999999999999998224;
 }
 )";
 
@@ -2380,7 +2380,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.arr[0].elements = __packed_vec3<f32>(vec3(1.23));
+  P.arr[0].elements = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -2479,7 +2479,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.arr[0].elements.y = 1.23;
+  P.arr[0].elements.y = 1.22999999999999998224;
 }
 )";
 
@@ -2522,7 +2522,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.arr[0].elements[1] = 1.23;
+  P.arr[0].elements[1] = 1.22999999999999998224;
 }
 )";
 
@@ -3012,7 +3012,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.m[1].elements = __packed_vec3<f32>(vec3(1.23));
+  P.m[1].elements = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -3111,7 +3111,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.m[1].elements.y = 1.23;
+  P.m[1].elements.y = 1.22999999999999998224;
 }
 )";
 
@@ -3154,7 +3154,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.m[1].elements[2] = 1.23;
+  P.m[1].elements[2] = 1.22999999999999998224;
 }
 )";
 
@@ -3834,7 +3834,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.arr[0][1].elements = __packed_vec3<f32>(vec3(1.23));
+  P.arr[0][1].elements = __packed_vec3<f32>(vec3(1.22999999999999998224));
 }
 )";
 
@@ -3938,7 +3938,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.arr[0][1].elements.y = 1.23;
+  P.arr[0][1].elements.y = 1.22999999999999998224;
 }
 )";
 
@@ -3981,7 +3981,7 @@
 @group(0) @binding(0) var<storage, read_write> P : S_tint_packed_vec3;
 
 fn f() {
-  P.arr[0][1].elements[2] = 1.23;
+  P.arr[0][1].elements[2] = 1.22999999999999998224;
 }
 )";
 
diff --git a/src/tint/transform/substitute_override_test.cc b/src/tint/transform/substitute_override_test.cc
index abc67f5..1b4646f 100644
--- a/src/tint/transform/substitute_override_test.cc
+++ b/src/tint/transform/substitute_override_test.cc
@@ -110,9 +110,9 @@
 
 const i_height = 11i;
 
-const f_width : f32 = 22.299999237f;
+const f_width : f32 = 22.299999237060546875f;
 
-const f_height = 12.399999619f;
+const f_height = 12.3999996185302734375f;
 
 const b_width : bool = true;
 
@@ -175,9 +175,9 @@
 
 const i_height = 11i;
 
-const f_width : f32 = 22.299999237f;
+const f_width : f32 = 22.299999237060546875f;
 
-const f_height = 12.399999619f;
+const f_height = 12.3999996185302734375f;
 
 const b_width : bool = true;
 
diff --git a/src/tint/transform/texture_1d_to_2d_test.cc b/src/tint/transform/texture_1d_to_2d_test.cc
index 0196951..b68b51e 100644
--- a/src/tint/transform/texture_1d_to_2d_test.cc
+++ b/src/tint/transform/texture_1d_to_2d_test.cc
@@ -226,7 +226,7 @@
 @group(0) @binding(1) var samp : sampler;
 
 fn f(t : texture_2d<f32>, s : sampler) -> vec4<f32> {
-  return textureSample(t, s, vec2<f32>(0.7, 0.5));
+  return textureSample(t, s, vec2<f32>(0.69999999999999995559, 0.5));
 }
 
 fn main() -> vec4<f32> {
diff --git a/src/tint/transform/vertex_pulling.cc b/src/tint/transform/vertex_pulling.cc
index 09a68bb..e07dcfe 100644
--- a/src/tint/transform/vertex_pulling.cc
+++ b/src/tint/transform/vertex_pulling.cc
@@ -56,8 +56,8 @@
     kFloat,  // unsigned normalized, signed normalized, and float
 };
 
-/// Writes the VertexFormat to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the VertexFormat to the stream.
+/// @param out the stream to write to
 /// @param format the VertexFormat to write
 /// @returns out so calls can be chained
 utils::StringStream& operator<<(utils::StringStream& out, VertexFormat format) {
diff --git a/src/tint/type/sampler_kind.cc b/src/tint/type/sampler_kind.cc
index 4e20700..0076287 100644
--- a/src/tint/type/sampler_kind.cc
+++ b/src/tint/type/sampler_kind.cc
@@ -16,7 +16,7 @@
 
 namespace tint::type {
 
-std::ostream& operator<<(std::ostream& out, SamplerKind kind) {
+utils::StringStream& operator<<(utils::StringStream& out, SamplerKind kind) {
     switch (kind) {
         case SamplerKind::kSampler:
             out << "sampler";
diff --git a/src/tint/type/sampler_kind.h b/src/tint/type/sampler_kind.h
index 3522fda..b5b01b9 100644
--- a/src/tint/type/sampler_kind.h
+++ b/src/tint/type/sampler_kind.h
@@ -15,7 +15,7 @@
 #ifndef SRC_TINT_TYPE_SAMPLER_KIND_H_
 #define SRC_TINT_TYPE_SAMPLER_KIND_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::type {
 
@@ -27,10 +27,10 @@
     kComparisonSampler
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param kind the SamplerKind
-/// @return the std::ostream so calls can be chained
-std::ostream& operator<<(std::ostream& out, SamplerKind kind);
+/// @return the stream so calls can be chained
+utils::StringStream& operator<<(utils::StringStream& out, SamplerKind kind);
 
 }  // namespace tint::type
 
diff --git a/src/tint/type/texture_dimension.cc b/src/tint/type/texture_dimension.cc
index 4b4fea9..c450516 100644
--- a/src/tint/type/texture_dimension.cc
+++ b/src/tint/type/texture_dimension.cc
@@ -16,7 +16,7 @@
 
 namespace tint::type {
 
-std::ostream& operator<<(std::ostream& out, type::TextureDimension dim) {
+utils::StringStream& operator<<(utils::StringStream& out, type::TextureDimension dim) {
     switch (dim) {
         case type::TextureDimension::kNone:
             out << "None";
diff --git a/src/tint/type/texture_dimension.h b/src/tint/type/texture_dimension.h
index 0da2b05..a315b7e 100644
--- a/src/tint/type/texture_dimension.h
+++ b/src/tint/type/texture_dimension.h
@@ -15,7 +15,7 @@
 #ifndef SRC_TINT_TYPE_TEXTURE_DIMENSION_H_
 #define SRC_TINT_TYPE_TEXTURE_DIMENSION_H_
 
-#include <ostream>
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::type {
 
@@ -37,10 +37,10 @@
     kCubeArray,
 };
 
-/// @param out the std::ostream to write to
+/// @param out the stream to write to
 /// @param dim the type::TextureDimension
-/// @return the std::ostream so calls can be chained
-std::ostream& operator<<(std::ostream& out, type::TextureDimension dim);
+/// @return the stream so calls can be chained
+utils::StringStream& operator<<(utils::StringStream& out, type::TextureDimension dim);
 
 }  // namespace tint::type
 
diff --git a/src/tint/utils/enum_set.h b/src/tint/utils/enum_set.h
index 9b75ba0..575868b 100644
--- a/src/tint/utils/enum_set.h
+++ b/src/tint/utils/enum_set.h
@@ -17,10 +17,11 @@
 
 #include <cstdint>
 #include <functional>
-#include <ostream>
 #include <type_traits>
 #include <utility>
 
+#include "src/tint/utils/string_stream.h"
+
 namespace tint::utils {
 
 /// EnumSet is a set of enum values.
@@ -216,12 +217,12 @@
     uint64_t set = 0;
 };
 
-/// Writes the EnumSet to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the EnumSet to the stream.
+/// @param out the stream to write to
 /// @param set the EnumSet to write
 /// @returns out so calls can be chained
 template <typename ENUM>
-inline std::ostream& operator<<(std::ostream& out, EnumSet<ENUM> set) {
+inline utils::StringStream& operator<<(utils::StringStream& out, EnumSet<ENUM> set) {
     out << "{";
     bool first = true;
     for (auto e : set) {
diff --git a/src/tint/utils/enum_set_test.cc b/src/tint/utils/enum_set_test.cc
index a6bb169..6e9b59c 100644
--- a/src/tint/utils/enum_set_test.cc
+++ b/src/tint/utils/enum_set_test.cc
@@ -14,7 +14,6 @@
 
 #include "src/tint/utils/enum_set.h"
 
-#include <sstream>
 #include <vector>
 
 #include "gmock/gmock.h"
@@ -27,7 +26,7 @@
 
 enum class E { A = 0, B = 3, C = 7 };
 
-std::ostream& operator<<(std::ostream& out, E e) {
+utils::StringStream& operator<<(utils::StringStream& out, E e) {
     switch (e) {
         case E::A:
             return out << "A";
diff --git a/src/tint/utils/hashmap_base.h b/src/tint/utils/hashmap_base.h
index 959bebe..12c1ed2 100644
--- a/src/tint/utils/hashmap_base.h
+++ b/src/tint/utils/hashmap_base.h
@@ -91,12 +91,12 @@
     operator KeyValue<KEY, VALUE>() const { return {key, value}; }
 };
 
-/// Writes the KeyValue to the std::ostream.
-/// @param out the std::ostream to write to
+/// Writes the KeyValue to the stream.
+/// @param out the stream to write to
 /// @param key_value the KeyValue to write
 /// @returns out so calls can be chained
 template <typename KEY, typename VALUE>
-std::ostream& operator<<(std::ostream& out, const KeyValue<KEY, VALUE>& key_value) {
+utils::StringStream& operator<<(utils::StringStream& out, const KeyValue<KEY, VALUE>& key_value) {
     return out << "[" << key_value.key << ": " << key_value.value << "]";
 }
 
diff --git a/src/tint/utils/io/command_windows.cc b/src/tint/utils/io/command_windows.cc
index 31d0308..fc5df2c 100644
--- a/src/tint/utils/io/command_windows.cc
+++ b/src/tint/utils/io/command_windows.cc
@@ -17,7 +17,6 @@
 #define WIN32_LEAN_AND_MEAN 1
 #include <Windows.h>
 #include <dbghelp.h>
-#include <sstream>
 #include <string>
 
 #include "src/tint/utils/defer.h"
diff --git a/src/tint/utils/io/tmpfile.h b/src/tint/utils/io/tmpfile.h
index 7949a371..016ac08 100644
--- a/src/tint/utils/io/tmpfile.h
+++ b/src/tint/utils/io/tmpfile.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_UTILS_IO_TMPFILE_H_
 #define SRC_TINT_UTILS_IO_TMPFILE_H_
 
-#include <sstream>
 #include <string>
 
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/utils/math.h b/src/tint/utils/math.h
index d882b34..c10a2c9 100644
--- a/src/tint/utils/math.h
+++ b/src/tint/utils/math.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_UTILS_MATH_H_
 #define SRC_TINT_UTILS_MATH_H_
 
-#include <sstream>
 #include <string>
 #include <type_traits>
 
diff --git a/src/tint/utils/result.h b/src/tint/utils/result.h
index 41fda19..2b433fb 100644
--- a/src/tint/utils/result.h
+++ b/src/tint/utils/result.h
@@ -15,11 +15,11 @@
 #ifndef SRC_TINT_UTILS_RESULT_H_
 #define SRC_TINT_UTILS_RESULT_H_
 
-#include <ostream>
 #include <utility>
 #include <variant>
 
 #include "src/tint/debug.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::utils {
 
@@ -145,12 +145,12 @@
     std::variant<std::monostate, SUCCESS_TYPE, FAILURE_TYPE> value;
 };
 
-/// Writes the result to the ostream.
-/// @param out the std::ostream to write to
+/// Writes the result to the stream.
+/// @param out the stream to write to
 /// @param res the result
-/// @return the std::ostream so calls can be chained
+/// @return the stream so calls can be chained
 template <typename SUCCESS, typename FAILURE>
-inline std::ostream& operator<<(std::ostream& out, Result<SUCCESS, FAILURE> res) {
+inline utils::StringStream& operator<<(utils::StringStream& out, Result<SUCCESS, FAILURE> res) {
     return res ? (out << "success: " << res.Get()) : (out << "failure: " << res.Failure());
 }
 
diff --git a/src/tint/utils/string.h b/src/tint/utils/string.h
index e77e637..5c7255d 100644
--- a/src/tint/utils/string.h
+++ b/src/tint/utils/string.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_UTILS_STRING_H_
 #define SRC_TINT_UTILS_STRING_H_
 
-#include <sstream>
 #include <string>
 #include <variant>
 
@@ -40,7 +39,7 @@
 }
 
 /// @param value the value to be printed as a string
-/// @returns value printed as a string via the std::ostream `<<` operator
+/// @returns value printed as a string via the stream `<<` operator
 template <typename T>
 std::string ToString(const T& value) {
     utils::StringStream s;
@@ -49,7 +48,7 @@
 }
 
 /// @param value the variant to be printed as a string
-/// @returns value printed as a string via the std::ostream `<<` operator
+/// @returns value printed as a string via the stream `<<` operator
 template <typename... TYs>
 std::string ToString(const std::variant<TYs...>& value) {
     utils::StringStream s;
diff --git a/src/tint/utils/string_stream.cc b/src/tint/utils/string_stream.cc
index 2d1ed44..f0dbe0c 100644
--- a/src/tint/utils/string_stream.cc
+++ b/src/tint/utils/string_stream.cc
@@ -25,3 +25,31 @@
 StringStream::~StringStream() = default;
 
 }  // namespace tint::utils
+
+namespace tint::text {
+
+utils::StringStream& operator<<(utils::StringStream& out, CodePoint code_point) {
+    if (code_point < 0x7f) {
+        // See https://en.cppreference.com/w/cpp/language/escape
+        switch (code_point) {
+            case '\a':
+                return out << R"('\a')";
+            case '\b':
+                return out << R"('\b')";
+            case '\f':
+                return out << R"('\f')";
+            case '\n':
+                return out << R"('\n')";
+            case '\r':
+                return out << R"('\r')";
+            case '\t':
+                return out << R"('\t')";
+            case '\v':
+                return out << R"('\v')";
+        }
+        return out << "'" << static_cast<char>(code_point) << "'";
+    }
+    return out << "'U+" << std::hex << code_point.value << "'";
+}
+
+}  // namespace tint::text
diff --git a/src/tint/utils/string_stream.h b/src/tint/utils/string_stream.h
index 893d2b9..4703095 100644
--- a/src/tint/utils/string_stream.h
+++ b/src/tint/utils/string_stream.h
@@ -16,12 +16,15 @@
 #define SRC_TINT_UTILS_STRING_STREAM_H_
 
 #include <functional>
+#include <iomanip>
 #include <iterator>
 #include <limits>
 #include <sstream>
 #include <string>
 #include <utility>
 
+#include "src/tint/text/unicode.h"
+
 namespace tint::utils {
 
 /// Stringstream wrapper which automatically resets the locale and sets floating point emission
@@ -44,23 +47,57 @@
     /// @param value the value to emit
     /// @returns a reference to this
     template <typename T,
-              typename std::enable_if<!std::is_floating_point<T>::value>::type* = nullptr>
-    StringStream& operator<<(const T& value) {
-        sstream_ << value;
+              typename std::enable_if_t<std::is_integral_v<std::decay_t<T>>, bool> = true>
+    StringStream& operator<<(T&& value) {
+        return EmitValue(std::forward<T>(value));
+    }
+
+    /// Emit `value` to the stream
+    /// @param value the value to emit
+    /// @returns a reference to this
+    StringStream& operator<<(const char* value) { return EmitValue(value); }
+    /// Emit `value` to the stream
+    /// @param value the value to emit
+    /// @returns a reference to this
+    StringStream& operator<<(const std::string& value) { return EmitValue(value); }
+    /// Emit `value` to the stream
+    /// @param value the value to emit
+    /// @returns a reference to this
+    StringStream& operator<<(std::string_view value) { return EmitValue(value); }
+
+    /// Emit `value` to the stream
+    /// @param value the value to emit
+    /// @returns a reference to this
+    StringStream& operator<<(const void* value) { return EmitValue(value); }
+
+    /// Emit `value` to the stream
+    /// @param value the value to emit
+    /// @returns a reference to this
+    template <typename T,
+              typename std::enable_if_t<std::is_floating_point_v<std::decay_t<T>>, bool> = true>
+    StringStream& operator<<(T&& value) {
+        return EmitFloat(std::forward<T>(value));
+    }
+
+    /// Emit `value` to the stream
+    /// @param value the value to emit
+    /// @returns a reference to this
+    template <typename T>
+    StringStream& EmitValue(T&& value) {
+        sstream_ << std::forward<T>(value);
         return *this;
     }
 
     /// Emit `value` to the stream
     /// @param value the value to emit
     /// @returns a reference to this
-    template <typename T,
-              typename std::enable_if<std::is_floating_point<T>::value>::type* = nullptr>
-    StringStream& operator<<(const T& value) {
+    template <typename T>
+    StringStream& EmitFloat(const T& value) {
         // Try printing the float in fixed point, with a smallish limit on the precision
         std::stringstream fixed;
         fixed.flags(fixed.flags() | std::ios_base::showpoint | std::ios_base::fixed);
         fixed.imbue(std::locale::classic());
-        fixed.precision(9);
+        fixed.precision(20);
         fixed << value;
 
         std::string str = fixed.str();
@@ -71,6 +108,7 @@
         double roundtripped;
         fixed >> roundtripped;
 
+        // Strip trailing zeros from the number.
         auto float_equal_no_warning = std::equal_to<T>();
         if (float_equal_no_warning(value, static_cast<T>(roundtripped))) {
             while (str.length() >= 2 && str[str.size() - 1] == '0' && str[str.size() - 2] != '.') {
@@ -111,6 +149,57 @@
         return *this;
     }
 
+    /// The callback to emit a `std::hex` to the stream
+    using StdHex = std::ios_base& (*)(std::ios_base&);
+
+    /// @param manipulator the callback to emit too
+    /// @returns a reference to this
+    StringStream& operator<<(StdHex manipulator) {
+        // call the function, and return it's value
+        manipulator(sstream_);
+        return *this;
+    }
+
+    /// @param value the value to emit
+    /// @returns a reference to this
+    template <typename T,
+              typename std::enable_if<std::is_same<decltype(std::setw(std::declval<int>())),
+                                                   typename std::decay<T>::type>::value,
+                                      int>::type = 0>
+    StringStream& operator<<(T&& value) {
+        // call the function, and return it's value
+        sstream_ << std::forward<T>(value);
+        return *this;
+    }
+
+    // On MSVC the type of `std::setw` and `std::setprecision` are the same. Can't check for
+    // _MSC_VER because this is also set by clang-cl on windows.
+#if defined(__GNUC__) || defined(__clang__)
+    /// @param value the value to emit
+    /// @returns a reference to this
+    template <typename T,
+              typename std::enable_if<std::is_same<decltype(std::setprecision(std::declval<int>())),
+                                                   typename std::decay<T>::type>::value,
+                                      int>::type = 0>
+    StringStream& operator<<(T&& value) {
+        // call the function, and return it's value
+        sstream_ << std::forward<T>(value);
+        return *this;
+    }
+#endif  // defined(_MSC_VER)
+
+    /// @param value the value to emit
+    /// @returns a reference to this
+    template <typename T,
+              typename std::enable_if<std::is_same<decltype(std::setfill(std::declval<char>())),
+                                                   typename std::decay<T>::type>::value,
+                                      char>::type = 0>
+    StringStream& operator<<(T&& value) {
+        // call the function, and return it's value
+        sstream_ << std::forward<T>(value);
+        return *this;
+    }
+
     /// @returns the string contents of the stream
     std::string str() const { return sstream_.str(); }
 
@@ -120,4 +209,14 @@
 
 }  // namespace tint::utils
 
+namespace tint::text {
+
+/// Writes the CodePoint to the stream.
+/// @param out the stream to write to
+/// @param codepoint the CodePoint to write
+/// @returns out so calls can be chained
+utils::StringStream& operator<<(utils::StringStream& out, CodePoint codepoint);
+
+}  // namespace tint::text
+
 #endif  // SRC_TINT_UTILS_STRING_STREAM_H_
diff --git a/src/tint/utils/string_stream_test.cc b/src/tint/utils/string_stream_test.cc
index eebefd6..5f99026 100644
--- a/src/tint/utils/string_stream_test.cc
+++ b/src/tint/utils/string_stream_test.cc
@@ -88,22 +88,22 @@
     {
         StringStream s;
         s << 1e-8f;
-        EXPECT_EQ(s.str(), "0.00000001");
+        EXPECT_EQ(s.str(), "0.00000000999999993923");
     }
     {
         StringStream s;
         s << 1e-9f;
-        EXPECT_EQ(s.str(), "0.000000001");
+        EXPECT_EQ(s.str(), "0.00000000099999997172");
     }
     {
         StringStream s;
         s << 1e-10f;
-        EXPECT_EQ(s.str(), "1.00000001e-10");
+        EXPECT_EQ(s.str(), "0.00000000010000000134");
     }
     {
         StringStream s;
         s << 1e-20f;
-        EXPECT_EQ(s.str(), "9.99999968e-21");
+        EXPECT_EQ(s.str(), "0.00000000000000000001");
     }
 }
 
diff --git a/src/tint/utils/vector.h b/src/tint/utils/vector.h
index e39854a..ed4fcf1 100644
--- a/src/tint/utils/vector.h
+++ b/src/tint/utils/vector.h
@@ -20,7 +20,6 @@
 #include <algorithm>
 #include <iterator>
 #include <new>
-#include <ostream>
 #include <utility>
 #include <vector>
 
@@ -28,6 +27,7 @@
 #include "src/tint/utils/compiler_macros.h"
 #include "src/tint/utils/slice.h"
 #include "src/tint/utils/string.h"
+#include "src/tint/utils/string_stream.h"
 
 namespace tint::utils {
 
@@ -740,11 +740,11 @@
 }
 
 /// Prints the vector @p vec to @p o
-/// @param o the std::ostream to write to
+/// @param o the stream to write to
 /// @param vec the vector
-/// @return the std::ostream so calls can be chained
+/// @return the stream so calls can be chained
 template <typename T, size_t N>
-inline std::ostream& operator<<(std::ostream& o, const utils::Vector<T, N>& vec) {
+inline utils::StringStream& operator<<(utils::StringStream& o, const utils::Vector<T, N>& vec) {
     o << "[";
     bool first = true;
     for (auto& el : vec) {
@@ -759,11 +759,11 @@
 }
 
 /// Prints the vector @p vec to @p o
-/// @param o the std::ostream to write to
+/// @param o the stream to write to
 /// @param vec the vector reference
-/// @return the std::ostream so calls can be chained
+/// @return the stream so calls can be chained
 template <typename T>
-inline std::ostream& operator<<(std::ostream& o, utils::VectorRef<T> vec) {
+inline utils::StringStream& operator<<(utils::StringStream& o, utils::VectorRef<T> vec) {
     o << "[";
     bool first = true;
     for (auto& el : vec) {
diff --git a/src/tint/writer/float_to_string.cc b/src/tint/writer/float_to_string.cc
index 0ce4954..fdf4675 100644
--- a/src/tint/writer/float_to_string.cc
+++ b/src/tint/writer/float_to_string.cc
@@ -19,7 +19,6 @@
 #include <functional>
 #include <iomanip>
 #include <limits>
-#include <sstream>
 
 #include "src/tint/debug.h"
 #include "src/tint/utils/string_stream.h"
diff --git a/src/tint/writer/float_to_string_test.cc b/src/tint/writer/float_to_string_test.cc
index 901334e..eb70369 100644
--- a/src/tint/writer/float_to_string_test.cc
+++ b/src/tint/writer/float_to_string_test.cc
@@ -73,10 +73,10 @@
 }
 
 TEST(FloatToStringTest, Precision) {
-    EXPECT_EQ(FloatToString(1e-8f), "0.00000001");
-    EXPECT_EQ(FloatToString(1e-9f), "0.000000001");
-    EXPECT_EQ(FloatToString(1e-10f), "1.00000001e-10");
-    EXPECT_EQ(FloatToString(1e-20f), "9.99999968e-21");
+    EXPECT_EQ(FloatToString(1e-8f), "0.00000000999999993923");
+    EXPECT_EQ(FloatToString(1e-9f), "0.00000000099999997172");
+    EXPECT_EQ(FloatToString(1e-10f), "0.00000000010000000134");
+    EXPECT_EQ(FloatToString(1e-20f), "0.00000000000000000001");
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -179,15 +179,15 @@
 ////////////////////////////////////////////////////////////////////////////////
 
 TEST(DoubleToStringTest, Zero) {
-    EXPECT_EQ(DoubleToString(0.0), "0.0");
+    EXPECT_EQ(DoubleToString(0.000000000), "0.0");
 }
 
 TEST(DoubleToStringTest, One) {
-    EXPECT_EQ(DoubleToString(1.0), "1.0");
+    EXPECT_EQ(DoubleToString(1.000000000), "1.0");
 }
 
 TEST(DoubleToStringTest, MinusOne) {
-    EXPECT_EQ(DoubleToString(-1.0), "-1.0");
+    EXPECT_EQ(DoubleToString(-1.000000000), "-1.0");
 }
 
 TEST(DoubleToStringTest, Billion) {
@@ -231,8 +231,8 @@
 TEST(DoubleToStringTest, Precision) {
     EXPECT_EQ(DoubleToString(1e-8), "0.00000001");
     EXPECT_EQ(DoubleToString(1e-9), "0.000000001");
-    EXPECT_EQ(DoubleToString(1e-10), "1e-10");
-    EXPECT_EQ(DoubleToString(1e-15), "1.0000000000000001e-15");
+    EXPECT_EQ(DoubleToString(1e-10), "0.0000000001");
+    EXPECT_EQ(DoubleToString(1e-15), "0.000000000000001");
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/tint/writer/glsl/generator_impl_binary_test.cc b/src/tint/writer/glsl/generator_impl_binary_test.cc
index 475ae46..1c03530 100644
--- a/src/tint/writer/glsl/generator_impl_binary_test.cc
+++ b/src/tint/writer/glsl/generator_impl_binary_test.cc
@@ -29,7 +29,9 @@
     ast::BinaryOp op;
 };
 inline std::ostream& operator<<(std::ostream& out, BinaryData data) {
-    out << data.op;
+    utils::StringStream str;
+    str << data.op;
+    out << str.str();
     return out;
 }
 
diff --git a/src/tint/writer/glsl/generator_impl_builtin_test.cc b/src/tint/writer/glsl/generator_impl_builtin_test.cc
index 3d14a68..d281cdb 100644
--- a/src/tint/writer/glsl/generator_impl_builtin_test.cc
+++ b/src/tint/writer/glsl/generator_impl_builtin_test.cc
@@ -932,7 +932,7 @@
     EXPECT_EQ(gen.result(), R"(#version 310 es
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -960,7 +960,7 @@
     EXPECT_EQ(gen.result(), R"(#version 310 es
 
 vec3 tint_degrees(vec3 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -991,7 +991,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 float16_t tint_degrees(float16_t param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -1022,7 +1022,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec3 tint_degrees(f16vec3 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -1050,7 +1050,7 @@
     EXPECT_EQ(gen.result(), R"(#version 310 es
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -1078,7 +1078,7 @@
     EXPECT_EQ(gen.result(), R"(#version 310 es
 
 vec3 tint_radians(vec3 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -1109,7 +1109,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 float16_t tint_radians(float16_t param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -1140,7 +1140,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec3 tint_radians(f16vec3 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
diff --git a/src/tint/writer/glsl/generator_impl_constructor_test.cc b/src/tint/writer/glsl/generator_impl_constructor_test.cc
index 2f4b3d0..02d148c 100644
--- a/src/tint/writer/glsl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/glsl/generator_impl_constructor_test.cc
@@ -79,7 +79,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("-0.000012f"));
+    EXPECT_THAT(gen.result(), HasSubstr("-0.00001200000042445026f"));
 }
 
 TEST_F(GlslGeneratorImplTest_Constructor, Type_F16) {
@@ -90,7 +90,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("-0.00119972229hf"));
+    EXPECT_THAT(gen.result(), HasSubstr("-0.0011997222900390625hf"));
 }
 
 TEST_F(GlslGeneratorImplTest_Constructor, Type_Bool) {
diff --git a/src/tint/writer/glsl/generator_impl_import_test.cc b/src/tint/writer/glsl/generator_impl_import_test.cc
index 3201712..bf546ac 100644
--- a/src/tint/writer/glsl/generator_impl_import_test.cc
+++ b/src/tint/writer/glsl/generator_impl_import_test.cc
@@ -98,8 +98,10 @@
 
     utils::StringStream out;
     ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
-    EXPECT_EQ(out.str(),
-              std::string(param.glsl_name) + "(vec3(0.100000001f, 0.200000003f, 0.300000012f))");
+    EXPECT_EQ(
+        out.str(),
+        std::string(param.glsl_name) +
+            "(vec3(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f))");
 }
 INSTANTIATE_TEST_SUITE_P(GlslGeneratorImplTest_Import,
                          GlslImportData_SingleVectorParamTest,
diff --git a/src/tint/writer/glsl/generator_impl_loop_test.cc b/src/tint/writer/glsl/generator_impl_loop_test.cc
index 0979f53..2ee83b8 100644
--- a/src/tint/writer/glsl/generator_impl_loop_test.cc
+++ b/src/tint/writer/glsl/generator_impl_loop_test.cc
@@ -134,7 +134,7 @@
 
 TEST_F(GlslGeneratorImplTest_Loop, Emit_LoopWithVarUsedInContinuing) {
     // loop {
-    //   var lhs : f32 = 2.4;
+    //   var lhs : f32 = 2.5;
     //   var other : f32;
     //   break;
     //   continuing {
@@ -144,7 +144,7 @@
 
     GlobalVar("rhs", ty.f32(), builtin::AddressSpace::kPrivate);
 
-    auto* body = Block(Decl(Var("lhs", ty.f32(), Expr(2.4_f))),  //
+    auto* body = Block(Decl(Var("lhs", ty.f32(), Expr(2.5_f))),  //
                        Decl(Var("other", ty.f32())),             //
                        Break());
     auto* continuing = Block(Assign("lhs", "rhs"));
@@ -157,7 +157,7 @@
 
     ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
     EXPECT_EQ(gen.result(), R"(  while (true) {
-    float lhs = 2.400000095f;
+    float lhs = 2.5f;
     float other = 0.0f;
     break;
     {
diff --git a/src/tint/writer/glsl/generator_impl_type_test.cc b/src/tint/writer/glsl/generator_impl_type_test.cc
index 2cc13f6..2535efd 100644
--- a/src/tint/writer/glsl/generator_impl_type_test.cc
+++ b/src/tint/writer/glsl/generator_impl_type_test.cc
@@ -318,7 +318,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, GlslDepthTextureData data) {
-    out << data.dim;
+    utils::StringStream s;
+    s << data.dim;
+    out << s.str();
     return out;
 }
 using GlslDepthTexturesTest = TestParamHelper<GlslDepthTextureData>;
@@ -378,7 +380,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, GlslSampledTextureData data) {
-    out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    out << str.str();
     return out;
 }
 using GlslSampledTexturesTest = TestParamHelper<GlslSampledTextureData>;
@@ -527,7 +531,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, GlslStorageTextureData data) {
-    return out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    return out << str.str();
 }
 using GlslStorageTexturesTest = TestParamHelper<GlslStorageTextureData>;
 TEST_P(GlslStorageTexturesTest, Emit) {
diff --git a/src/tint/writer/hlsl/generator_impl_binary_test.cc b/src/tint/writer/hlsl/generator_impl_binary_test.cc
index 630fc09..7221e1a 100644
--- a/src/tint/writer/hlsl/generator_impl_binary_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_binary_test.cc
@@ -32,7 +32,9 @@
     Types valid_for = Types::All;
 };
 inline std::ostream& operator<<(std::ostream& out, BinaryData data) {
-    out << data.op;
+    utils::StringStream str;
+    str << data.op;
+    out << str.str();
     return out;
 }
 
diff --git a/src/tint/writer/hlsl/generator_impl_builtin_test.cc b/src/tint/writer/hlsl/generator_impl_builtin_test.cc
index 229213b..5054327 100644
--- a/src/tint/writer/hlsl/generator_impl_builtin_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_builtin_test.cc
@@ -812,7 +812,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 [numthreads(1, 1, 1)]
@@ -833,7 +833,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(float3 tint_degrees(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 [numthreads(1, 1, 1)]
@@ -856,7 +856,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(float16_t tint_degrees(float16_t param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 [numthreads(1, 1, 1)]
@@ -879,7 +879,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(vector<float16_t, 3> tint_degrees(vector<float16_t, 3> param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 [numthreads(1, 1, 1)]
@@ -900,7 +900,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 [numthreads(1, 1, 1)]
@@ -921,7 +921,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(float3 tint_radians(float3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 [numthreads(1, 1, 1)]
@@ -944,7 +944,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(float16_t tint_radians(float16_t param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 [numthreads(1, 1, 1)]
@@ -967,7 +967,7 @@
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
     EXPECT_EQ(gen.result(), R"(vector<float16_t, 3> tint_radians(vector<float16_t, 3> param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/src/tint/writer/hlsl/generator_impl_constructor_test.cc b/src/tint/writer/hlsl/generator_impl_constructor_test.cc
index 6cd264e..d285cd6 100644
--- a/src/tint/writer/hlsl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_constructor_test.cc
@@ -79,7 +79,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("-0.000012f"));
+    EXPECT_THAT(gen.result(), HasSubstr("-0.00001200000042445026f"));
 }
 
 TEST_F(HlslGeneratorImplTest_Constructor, Type_F16) {
@@ -90,7 +90,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("float16_t(-0.00119972229h)"));
+    EXPECT_THAT(gen.result(), HasSubstr("float16_t(-0.0011997222900390625h)"));
 }
 
 TEST_F(HlslGeneratorImplTest_Constructor, Type_Bool) {
@@ -402,8 +402,10 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("{float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f),"
-                                        " float3(7.0f, 8.0f, 9.0f)}"));
+    EXPECT_THAT(
+        gen.result(),
+        HasSubstr(
+            "{float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f)}"));
 }
 
 TEST_F(HlslGeneratorImplTest_Constructor, Type_Array_Empty) {
diff --git a/src/tint/writer/hlsl/generator_impl_import_test.cc b/src/tint/writer/hlsl/generator_impl_import_test.cc
index 28b72dc..133774a 100644
--- a/src/tint/writer/hlsl/generator_impl_import_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_import_test.cc
@@ -97,8 +97,10 @@
 
     utils::StringStream out;
     ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
-    EXPECT_EQ(out.str(),
-              std::string(param.hlsl_name) + "(float3(0.100000001f, 0.200000003f, 0.300000012f))");
+    EXPECT_EQ(
+        out.str(),
+        std::string(param.hlsl_name) +
+            "(float3(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f))");
 }
 INSTANTIATE_TEST_SUITE_P(HlslGeneratorImplTest_Import,
                          HlslImportData_SingleVectorParamTest,
diff --git a/src/tint/writer/hlsl/generator_impl_loop_test.cc b/src/tint/writer/hlsl/generator_impl_loop_test.cc
index 45bf04a..98b7f79 100644
--- a/src/tint/writer/hlsl/generator_impl_loop_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_loop_test.cc
@@ -134,7 +134,7 @@
 
 TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithVarUsedInContinuing) {
     // loop {
-    //   var lhs : f32 = 2.4;
+    //   var lhs : f32 = 2.5;
     //   var other : f32;
     //   break;
     //   continuing {
@@ -144,7 +144,7 @@
 
     GlobalVar("rhs", ty.f32(), builtin::AddressSpace::kPrivate);
 
-    auto* body = Block(Decl(Var("lhs", ty.f32(), Expr(2.4_f))),  //
+    auto* body = Block(Decl(Var("lhs", ty.f32(), Expr(2.5_f))),  //
                        Decl(Var("other", ty.f32())),             //
                        Break());
 
@@ -158,7 +158,7 @@
 
     ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
     EXPECT_EQ(gen.result(), R"(  while (true) {
-    float lhs = 2.400000095f;
+    float lhs = 2.5f;
     float other = 0.0f;
     break;
     {
diff --git a/src/tint/writer/hlsl/generator_impl_test.cc b/src/tint/writer/hlsl/generator_impl_test.cc
index eeb9acb..0c39a31 100644
--- a/src/tint/writer/hlsl/generator_impl_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_test.cc
@@ -53,7 +53,9 @@
     const char* attribute_name;
 };
 inline std::ostream& operator<<(std::ostream& out, HlslBuiltinData data) {
-    out << data.builtin;
+    utils::StringStream str;
+    str << data.builtin;
+    out << str.str();
     return out;
 }
 using HlslBuiltinConversionTest = TestParamHelper<HlslBuiltinData>;
diff --git a/src/tint/writer/hlsl/generator_impl_type_test.cc b/src/tint/writer/hlsl/generator_impl_type_test.cc
index 4ee8a22..cb8d349 100644
--- a/src/tint/writer/hlsl/generator_impl_type_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_type_test.cc
@@ -313,7 +313,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, HlslDepthTextureData data) {
-    out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    out << str.str();
     return out;
 }
 using HlslDepthTexturesTest = TestParamHelper<HlslDepthTextureData>;
@@ -376,7 +378,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, HlslSampledTextureData data) {
-    out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    out << str.str();
     return out;
 }
 using HlslSampledTexturesTest = TestParamHelper<HlslSampledTextureData>;
@@ -525,7 +529,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, HlslStorageTextureData data) {
-    out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    out << str.str();
     return out;
 }
 using HlslStorageTexturesTest = TestParamHelper<HlslStorageTextureData>;
diff --git a/src/tint/writer/msl/generator_impl_binary_test.cc b/src/tint/writer/msl/generator_impl_binary_test.cc
index 8b7e4b5..0297d8a 100644
--- a/src/tint/writer/msl/generator_impl_binary_test.cc
+++ b/src/tint/writer/msl/generator_impl_binary_test.cc
@@ -23,7 +23,9 @@
     ast::BinaryOp op;
 };
 inline std::ostream& operator<<(std::ostream& out, BinaryData data) {
-    out << data.op;
+    utils::StringStream str;
+    str << data.op;
+    out << str.str();
     return out;
 }
 using MslBinaryTest = TestParamHelper<BinaryData>;
diff --git a/src/tint/writer/msl/generator_impl_builtin_test.cc b/src/tint/writer/msl/generator_impl_builtin_test.cc
index 0c6ba28..08a2d25 100644
--- a/src/tint/writer/msl/generator_impl_builtin_test.cc
+++ b/src/tint/writer/msl/generator_impl_builtin_test.cc
@@ -851,7 +851,7 @@
 using namespace metal;
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 kernel void test_function() {
@@ -876,7 +876,7 @@
 using namespace metal;
 
 float3 tint_degrees(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 kernel void test_function() {
@@ -903,7 +903,7 @@
 using namespace metal;
 
 half tint_degrees(half param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 kernel void test_function() {
@@ -930,7 +930,7 @@
 using namespace metal;
 
 half3 tint_degrees(half3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 kernel void test_function() {
@@ -955,7 +955,7 @@
 using namespace metal;
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 kernel void test_function() {
@@ -980,7 +980,7 @@
 using namespace metal;
 
 float3 tint_radians(float3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 kernel void test_function() {
@@ -1007,7 +1007,7 @@
 using namespace metal;
 
 half tint_radians(half param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 kernel void test_function() {
@@ -1034,7 +1034,7 @@
 using namespace metal;
 
 half3 tint_radians(half3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 kernel void test_function() {
diff --git a/src/tint/writer/msl/generator_impl_constructor_test.cc b/src/tint/writer/msl/generator_impl_constructor_test.cc
index ba567ab..ec5646c 100644
--- a/src/tint/writer/msl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/msl/generator_impl_constructor_test.cc
@@ -79,7 +79,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("-0.000012f"));
+    EXPECT_THAT(gen.result(), HasSubstr("-0.00001200000042445026f"));
 }
 
 TEST_F(MslGeneratorImplTest_Constructor, Type_F16) {
@@ -90,7 +90,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("-0.00119972229h"));
+    EXPECT_THAT(gen.result(), HasSubstr("-0.0011997222900390625h"));
 }
 
 TEST_F(MslGeneratorImplTest_Constructor, Type_Bool) {
diff --git a/src/tint/writer/msl/generator_impl_loop_test.cc b/src/tint/writer/msl/generator_impl_loop_test.cc
index 6d2959c..a0c56f7 100644
--- a/src/tint/writer/msl/generator_impl_loop_test.cc
+++ b/src/tint/writer/msl/generator_impl_loop_test.cc
@@ -131,7 +131,7 @@
 
 TEST_F(MslGeneratorImplTest, Emit_LoopWithVarUsedInContinuing) {
     // loop {
-    //   var lhs : f32 = 2.4;
+    //   var lhs : f32 = 2.5;
     //   var other : f32;
     //   continuing {
     //     lhs = rhs
@@ -141,7 +141,7 @@
 
     GlobalVar("rhs", ty.f32(), builtin::AddressSpace::kPrivate);
 
-    auto* body = Block(Decl(Var("lhs", ty.f32(), Expr(2.4_f))),  //
+    auto* body = Block(Decl(Var("lhs", ty.f32(), Expr(2.5_f))),  //
                        Decl(Var("other", ty.f32())),             //
                        Break());
 
@@ -155,7 +155,7 @@
 
     ASSERT_TRUE(gen.EmitStatement(outer)) << gen.error();
     EXPECT_EQ(gen.result(), R"(  while (true) {
-    float lhs = 2.400000095f;
+    float lhs = 2.5f;
     float other = 0.0f;
     break;
     {
diff --git a/src/tint/writer/msl/generator_impl_test.cc b/src/tint/writer/msl/generator_impl_test.cc
index 52ae381..43eb558 100644
--- a/src/tint/writer/msl/generator_impl_test.cc
+++ b/src/tint/writer/msl/generator_impl_test.cc
@@ -65,7 +65,9 @@
     const char* attribute_name;
 };
 inline std::ostream& operator<<(std::ostream& out, MslBuiltinData data) {
-    out << data.builtin;
+    utils::StringStream str;
+    str << data.builtin;
+    out << str.str();
     return out;
 }
 using MslBuiltinConversionTest = TestParamHelper<MslBuiltinData>;
diff --git a/src/tint/writer/msl/generator_impl_type_test.cc b/src/tint/writer/msl/generator_impl_type_test.cc
index e1e18a3..ce1c215 100644
--- a/src/tint/writer/msl/generator_impl_type_test.cc
+++ b/src/tint/writer/msl/generator_impl_type_test.cc
@@ -763,7 +763,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, MslDepthTextureData data) {
-    out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    out << str.str();
     return out;
 }
 using MslDepthTexturesTest = TestParamHelper<MslDepthTextureData>;
@@ -805,7 +807,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, MslTextureData data) {
-    out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    out << str.str();
     return out;
 }
 using MslSampledtexturesTest = TestParamHelper<MslTextureData>;
@@ -849,7 +853,9 @@
     std::string result;
 };
 inline std::ostream& operator<<(std::ostream& out, MslStorageTextureData data) {
-    return out << data.dim;
+    utils::StringStream str;
+    str << data.dim;
+    return out << str.str();
 }
 using MslStorageTexturesTest = TestParamHelper<MslStorageTextureData>;
 TEST_P(MslStorageTexturesTest, Emit) {
diff --git a/src/tint/writer/spirv/builder_binary_expression_test.cc b/src/tint/writer/spirv/builder_binary_expression_test.cc
index 7251929..705bf77 100644
--- a/src/tint/writer/spirv/builder_binary_expression_test.cc
+++ b/src/tint/writer/spirv/builder_binary_expression_test.cc
@@ -27,7 +27,9 @@
     std::string name;
 };
 inline std::ostream& operator<<(std::ostream& out, BinaryData data) {
-    out << data.op;
+    utils::StringStream str;
+    str << data.op;
+    out << str.str();
     return out;
 }
 
diff --git a/src/tint/writer/spirv/builder_format_conversion_test.cc b/src/tint/writer/spirv/builder_format_conversion_test.cc
index 63f2183..1efdcca 100644
--- a/src/tint/writer/spirv/builder_format_conversion_test.cc
+++ b/src/tint/writer/spirv/builder_format_conversion_test.cc
@@ -24,7 +24,9 @@
     bool extended_format = false;
 };
 inline std::ostream& operator<<(std::ostream& out, TestData data) {
-    out << data.ast_format;
+    utils::StringStream str;
+    str << data.ast_format;
+    out << str.str();
     return out;
 }
 using ImageFormatConversionTest = TestParamHelper<TestData>;
diff --git a/src/tint/writer/spirv/builder_function_attribute_test.cc b/src/tint/writer/spirv/builder_function_attribute_test.cc
index 555c9ea..1b23982 100644
--- a/src/tint/writer/spirv/builder_function_attribute_test.cc
+++ b/src/tint/writer/spirv/builder_function_attribute_test.cc
@@ -43,7 +43,9 @@
     SpvExecutionModel model;
 };
 inline std::ostream& operator<<(std::ostream& out, FunctionStageData data) {
-    out << data.stage;
+    utils::StringStream str;
+    str << data.stage;
+    out << str.str();
     return out;
 }
 using Attribute_StageTest = TestParamHelper<FunctionStageData>;
diff --git a/src/tint/writer/spirv/builder_global_variable_test.cc b/src/tint/writer/spirv/builder_global_variable_test.cc
index 2f551ff..569d5e9 100644
--- a/src/tint/writer/spirv/builder_global_variable_test.cc
+++ b/src/tint/writer/spirv/builder_global_variable_test.cc
@@ -256,7 +256,9 @@
     SpvBuiltIn result;
 };
 inline std::ostream& operator<<(std::ostream& out, BuiltinData data) {
-    out << data.builtin;
+    utils::StringStream str;
+    str << data.builtin;
+    out << str.str();
     return out;
 }
 using BuiltinDataTest = TestParamHelper<BuiltinData>;
diff --git a/src/tint/writer/spirv/builder_type_test.cc b/src/tint/writer/spirv/builder_type_test.cc
index 55b92c6..89ba34e 100644
--- a/src/tint/writer/spirv/builder_type_test.cc
+++ b/src/tint/writer/spirv/builder_type_test.cc
@@ -611,7 +611,9 @@
     SpvStorageClass result;
 };
 inline std::ostream& operator<<(std::ostream& out, PtrData data) {
-    out << data.ast_class;
+    utils::StringStream str;
+    str << data.ast_class;
+    out << str.str();
     return out;
 }
 using PtrDataTest = TestParamHelper<PtrData>;
diff --git a/src/tint/writer/text_generator.h b/src/tint/writer/text_generator.h
index 74e3ecb..2bd725f 100644
--- a/src/tint/writer/text_generator.h
+++ b/src/tint/writer/text_generator.h
@@ -15,7 +15,6 @@
 #ifndef SRC_TINT_WRITER_TEXT_GENERATOR_H_
 #define SRC_TINT_WRITER_TEXT_GENERATOR_H_
 
-#include <sstream>
 #include <string>
 #include <unordered_map>
 #include <utility>
diff --git a/src/tint/writer/wgsl/generator_impl_binary_test.cc b/src/tint/writer/wgsl/generator_impl_binary_test.cc
index 88bf9f5..fbb6c32 100644
--- a/src/tint/writer/wgsl/generator_impl_binary_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_binary_test.cc
@@ -23,7 +23,9 @@
     ast::BinaryOp op;
 };
 inline std::ostream& operator<<(std::ostream& out, BinaryData data) {
-    out << data.op;
+    utils::StringStream str;
+    str << data.op;
+    out << str.str();
     return out;
 }
 using WgslBinaryTest = TestParamHelper<BinaryData>;
diff --git a/src/tint/writer/wgsl/generator_impl_constructor_test.cc b/src/tint/writer/wgsl/generator_impl_constructor_test.cc
index c815f42..7278736 100644
--- a/src/tint/writer/wgsl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_constructor_test.cc
@@ -79,7 +79,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("f32(-0.000012f)"));
+    EXPECT_THAT(gen.result(), HasSubstr("f32(-0.00001200000042445026f)"));
 }
 
 TEST_F(WgslGeneratorImplTest_Constructor, Type_F16) {
@@ -90,7 +90,7 @@
     GeneratorImpl& gen = Build();
 
     ASSERT_TRUE(gen.Generate()) << gen.error();
-    EXPECT_THAT(gen.result(), HasSubstr("f16(-1.19805336e-05h)"));
+    EXPECT_THAT(gen.result(), HasSubstr("f16(-0.00001198053359985352h)"));
 }
 
 TEST_F(WgslGeneratorImplTest_Constructor, Type_Bool) {
diff --git a/src/tint/writer/wgsl/generator_impl_literal_test.cc b/src/tint/writer/wgsl/generator_impl_literal_test.cc
index e947778..b70f535 100644
--- a/src/tint/writer/wgsl/generator_impl_literal_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_literal_test.cc
@@ -183,16 +183,16 @@
 INSTANTIATE_TEST_SUITE_P(Subnormal,
                          WgslGenerator_F16LiteralTest,
                          ::testing::ValuesIn(std::vector<F16Data>{
-                             {MakeF16(0, 0, 1), "5.96046448e-08h"},  // Smallest
-                             {MakeF16(1, 0, 1), "-5.96046448e-08h"},
-                             {MakeF16(0, 0, 2), "1.1920929e-07h"},
-                             {MakeF16(1, 0, 2), "-1.1920929e-07h"},
-                             {MakeF16(0, 0, 0x3ffu), "6.09755516e-05h"},   // Largest
-                             {MakeF16(1, 0, 0x3ffu), "-6.09755516e-05h"},  // Largest
-                             {MakeF16(0, 0, 0x3afu), "5.620718e-05h"},     // Scattered bits
-                             {MakeF16(1, 0, 0x3afu), "-5.620718e-05h"},    // Scattered bits
-                             {MakeF16(0, 0, 0x2c7u), "4.23789024e-05h"},   // Scattered bits
-                             {MakeF16(1, 0, 0x2c7u), "-4.23789024e-05h"},  // Scattered bits
+                             {MakeF16(0, 0, 1), "0.00000005960464477539h"},  // Smallest
+                             {MakeF16(1, 0, 1), "-0.00000005960464477539h"},
+                             {MakeF16(0, 0, 2), "0.00000011920928955078h"},
+                             {MakeF16(1, 0, 2), "-0.00000011920928955078h"},
+                             {MakeF16(0, 0, 0x3ffu), "0.00006097555160522461h"},   // Largest
+                             {MakeF16(1, 0, 0x3ffu), "-0.00006097555160522461h"},  // Largest
+                             {MakeF16(0, 0, 0x3afu), "0.00005620718002319336h"},   // Scattered bits
+                             {MakeF16(1, 0, 0x3afu), "-0.00005620718002319336h"},  // Scattered bits
+                             {MakeF16(0, 0, 0x2c7u), "0.00004237890243530273h"},   // Scattered bits
+                             {MakeF16(1, 0, 0x2c7u), "-0.00004237890243530273h"},  // Scattered bits
                          }));
 
 }  // namespace
diff --git a/test/tint/bug/chromium/1350147.wgsl.expected.dxc.hlsl b/test/tint/bug/chromium/1350147.wgsl.expected.dxc.hlsl
index 4d6d056..251c3c2 100644
--- a/test/tint/bug/chromium/1350147.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/chromium/1350147.wgsl.expected.dxc.hlsl
@@ -8,8 +8,8 @@
 
 void more_tests_that_would_fail() {
   {
-    const float a = 1.471127629f;
-    const float b = 0.099668652f;
+    const float a = 1.47112762928009033203f;
+    const float b = 0.09966865181922912598f;
   }
   {
     const float a = 2.5f;
diff --git a/test/tint/bug/chromium/1350147.wgsl.expected.fxc.hlsl b/test/tint/bug/chromium/1350147.wgsl.expected.fxc.hlsl
index 4d6d056..251c3c2 100644
--- a/test/tint/bug/chromium/1350147.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/chromium/1350147.wgsl.expected.fxc.hlsl
@@ -8,8 +8,8 @@
 
 void more_tests_that_would_fail() {
   {
-    const float a = 1.471127629f;
-    const float b = 0.099668652f;
+    const float a = 1.47112762928009033203f;
+    const float b = 0.09966865181922912598f;
   }
   {
     const float a = 2.5f;
diff --git a/test/tint/bug/chromium/1350147.wgsl.expected.glsl b/test/tint/bug/chromium/1350147.wgsl.expected.glsl
index 0b8a55c..5860f9b 100644
--- a/test/tint/bug/chromium/1350147.wgsl.expected.glsl
+++ b/test/tint/bug/chromium/1350147.wgsl.expected.glsl
@@ -9,8 +9,8 @@
 
 void more_tests_that_would_fail() {
   {
-    float a = 1.471127629f;
-    float b = 0.099668652f;
+    float a = 1.47112762928009033203f;
+    float b = 0.09966865181922912598f;
   }
   {
     float a = 2.5f;
diff --git a/test/tint/bug/chromium/1350147.wgsl.expected.msl b/test/tint/bug/chromium/1350147.wgsl.expected.msl
index 9c6dde8..86dcfe5 100644
--- a/test/tint/bug/chromium/1350147.wgsl.expected.msl
+++ b/test/tint/bug/chromium/1350147.wgsl.expected.msl
@@ -6,8 +6,8 @@
 
 void more_tests_that_would_fail() {
   {
-    float const a = 1.471127629f;
-    float const b = 0.099668652f;
+    float const a = 1.47112762928009033203f;
+    float const b = 0.09966865181922912598f;
   }
   {
     float const a = 2.5f;
diff --git a/test/tint/bug/chromium/1350147.wgsl.expected.wgsl b/test/tint/bug/chromium/1350147.wgsl.expected.wgsl
index 000a19d..128801a 100644
--- a/test/tint/bug/chromium/1350147.wgsl.expected.wgsl
+++ b/test/tint/bug/chromium/1350147.wgsl.expected.wgsl
@@ -1,18 +1,18 @@
 fn original_clusterfuzz_code() {
-  _ = atan2(1, 0.1);
+  _ = atan2(1, 0.10000000000000000555);
 }
 
 fn more_tests_that_would_fail() {
   {
-    let a = atan2(1, 0.1);
-    let b = atan2(0.1, 1);
+    let a = atan2(1, 0.10000000000000000555);
+    let b = atan2(0.10000000000000000555, 1);
   }
   {
     let a = (1 + 1.5);
     let b = (1.5 + 1);
   }
   {
-    _ = atan2(1, 0.1);
-    _ = atan2(0.1, 1);
+    _ = atan2(1, 0.10000000000000000555);
+    _ = atan2(0.10000000000000000555, 1);
   }
 }
diff --git a/test/tint/bug/chromium/1405676.wgsl.expected.dxc.hlsl b/test/tint/bug/chromium/1405676.wgsl.expected.dxc.hlsl
index 722c2eb..1701eba 100644
--- a/test/tint/bug/chromium/1405676.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/chromium/1405676.wgsl.expected.dxc.hlsl
@@ -6,5 +6,5 @@
 Texture1D<int4> arg_0 : register(t0, space0);
 
 void d() {
-  const float l = 0.141120002f;
+  const float l = 0.14112000167369842529f;
 }
diff --git a/test/tint/bug/chromium/1405676.wgsl.expected.fxc.hlsl b/test/tint/bug/chromium/1405676.wgsl.expected.fxc.hlsl
index 722c2eb..1701eba 100644
--- a/test/tint/bug/chromium/1405676.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/chromium/1405676.wgsl.expected.fxc.hlsl
@@ -6,5 +6,5 @@
 Texture1D<int4> arg_0 : register(t0, space0);
 
 void d() {
-  const float l = 0.141120002f;
+  const float l = 0.14112000167369842529f;
 }
diff --git a/test/tint/bug/chromium/1405676.wgsl.expected.glsl b/test/tint/bug/chromium/1405676.wgsl.expected.glsl
index 37ea957..4519f38 100644
--- a/test/tint/bug/chromium/1405676.wgsl.expected.glsl
+++ b/test/tint/bug/chromium/1405676.wgsl.expected.glsl
@@ -5,6 +5,6 @@
   return;
 }
 void d() {
-  float l = 0.141120002f;
+  float l = 0.14112000167369842529f;
 }
 
diff --git a/test/tint/bug/chromium/1405676.wgsl.expected.msl b/test/tint/bug/chromium/1405676.wgsl.expected.msl
index 08263a7..6101357 100644
--- a/test/tint/bug/chromium/1405676.wgsl.expected.msl
+++ b/test/tint/bug/chromium/1405676.wgsl.expected.msl
@@ -2,6 +2,6 @@
 
 using namespace metal;
 void d() {
-  float const l = 0.141120002f;
+  float const l = 0.14112000167369842529f;
 }
 
diff --git a/test/tint/bug/tint/1061.spvasm.expected.dxc.hlsl b/test/tint/bug/tint/1061.spvasm.expected.dxc.hlsl
index e4d1fbd..556a74d 100644
--- a/test/tint/bug/tint/1061.spvasm.expected.dxc.hlsl
+++ b/test/tint/bug/tint/1061.spvasm.expected.dxc.hlsl
@@ -14,7 +14,7 @@
   v = float4(sin(x_33), cos(x_35), exp2(x_37), log(x_39));
   const float4 x_42 = v;
   const float4 x_44 = asfloat(x_7[0]);
-  if ((distance(x_42, x_44) < 0.100000001f)) {
+  if ((distance(x_42, x_44) < 0.10000000149011611938f)) {
     x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
     x_GLF_color = (0.0f).xxxx;
diff --git a/test/tint/bug/tint/1061.spvasm.expected.fxc.hlsl b/test/tint/bug/tint/1061.spvasm.expected.fxc.hlsl
index e4d1fbd..556a74d 100644
--- a/test/tint/bug/tint/1061.spvasm.expected.fxc.hlsl
+++ b/test/tint/bug/tint/1061.spvasm.expected.fxc.hlsl
@@ -14,7 +14,7 @@
   v = float4(sin(x_33), cos(x_35), exp2(x_37), log(x_39));
   const float4 x_42 = v;
   const float4 x_44 = asfloat(x_7[0]);
-  if ((distance(x_42, x_44) < 0.100000001f)) {
+  if ((distance(x_42, x_44) < 0.10000000149011611938f)) {
     x_GLF_color = float4(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
     x_GLF_color = (0.0f).xxxx;
diff --git a/test/tint/bug/tint/1061.spvasm.expected.glsl b/test/tint/bug/tint/1061.spvasm.expected.glsl
index 0a12089..eaa934c 100644
--- a/test/tint/bug/tint/1061.spvasm.expected.glsl
+++ b/test/tint/bug/tint/1061.spvasm.expected.glsl
@@ -22,7 +22,7 @@
   v = vec4(sin(x_33), cos(x_35), exp2(x_37), log(x_39));
   vec4 x_42 = v;
   vec4 x_44 = x_7.inner.r;
-  if ((distance(x_42, x_44) < 0.100000001f)) {
+  if ((distance(x_42, x_44) < 0.10000000149011611938f)) {
     x_GLF_color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
     x_GLF_color = vec4(0.0f);
diff --git a/test/tint/bug/tint/1061.spvasm.expected.msl b/test/tint/bug/tint/1061.spvasm.expected.msl
index 2f9478f..2ef0acd 100644
--- a/test/tint/bug/tint/1061.spvasm.expected.msl
+++ b/test/tint/bug/tint/1061.spvasm.expected.msl
@@ -16,7 +16,7 @@
   v = float4(sin(x_33), cos(x_35), exp2(x_37), log(x_39));
   float4 const x_42 = v;
   float4 const x_44 = (*(tint_symbol_3)).r;
-  if ((distance(x_42, x_44) < 0.100000001f)) {
+  if ((distance(x_42, x_44) < 0.10000000149011611938f)) {
     *(tint_symbol_4) = float4(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
     *(tint_symbol_4) = float4(0.0f);
diff --git a/test/tint/bug/tint/1061.spvasm.expected.wgsl b/test/tint/bug/tint/1061.spvasm.expected.wgsl
index 3dcf16c..c375f06 100644
--- a/test/tint/bug/tint/1061.spvasm.expected.wgsl
+++ b/test/tint/bug/tint/1061.spvasm.expected.wgsl
@@ -18,7 +18,7 @@
   v = vec4<f32>(sin(x_33), cos(x_35), exp2(x_37), log(x_39));
   let x_42 : vec4<f32> = v;
   let x_44 : vec4<f32> = x_7.r;
-  if ((distance(x_42, x_44) < 0.100000001f)) {
+  if ((distance(x_42, x_44) < 0.10000000149011611938f)) {
     x_GLF_color = vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f);
   } else {
     x_GLF_color = vec4<f32>(0.0f, 0.0f, 0.0f, 0.0f);
diff --git a/test/tint/bug/tint/1121.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/1121.wgsl.expected.dxc.hlsl
index db16cb0..00dff54 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.dxc.hlsl
@@ -34,7 +34,7 @@
   if ((index >= config[0].x)) {
     return;
   }
-  lightsBuffer.Store(((32u * index) + 4u), asuint(((asfloat(lightsBuffer.Load(((32u * index) + 4u))) - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f))))))));
+  lightsBuffer.Store(((32u * index) + 4u), asuint(((asfloat(lightsBuffer.Load(((32u * index) + 4u))) - 0.10000000149011611938f) + (0.00100000004749745131f * (float(index) - (64.0f * floor((float(index) / 64.0f))))))));
   if ((asfloat(lightsBuffer.Load(((32u * index) + 4u))) < asfloat(uniforms[0].y))) {
     lightsBuffer.Store(((32u * index) + 4u), asuint(asfloat(uniforms[1].y)));
   }
diff --git a/test/tint/bug/tint/1121.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/1121.wgsl.expected.fxc.hlsl
index db16cb0..00dff54 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.fxc.hlsl
@@ -34,7 +34,7 @@
   if ((index >= config[0].x)) {
     return;
   }
-  lightsBuffer.Store(((32u * index) + 4u), asuint(((asfloat(lightsBuffer.Load(((32u * index) + 4u))) - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f))))))));
+  lightsBuffer.Store(((32u * index) + 4u), asuint(((asfloat(lightsBuffer.Load(((32u * index) + 4u))) - 0.10000000149011611938f) + (0.00100000004749745131f * (float(index) - (64.0f * floor((float(index) / 64.0f))))))));
   if ((asfloat(lightsBuffer.Load(((32u * index) + 4u))) < asfloat(uniforms[0].y))) {
     lightsBuffer.Store(((32u * index) + 4u), asuint(asfloat(uniforms[1].y)));
   }
diff --git a/test/tint/bug/tint/1121.wgsl.expected.glsl b/test/tint/bug/tint/1121.wgsl.expected.glsl
index 5e6dfaf..5ad0d39 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.glsl
@@ -55,7 +55,7 @@
   if ((index >= config.inner.numLights)) {
     return;
   }
-  lightsBuffer.lights[index].position.y = ((lightsBuffer.lights[index].position.y - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f))))));
+  lightsBuffer.lights[index].position.y = ((lightsBuffer.lights[index].position.y - 0.10000000149011611938f) + (0.00100000004749745131f * (float(index) - (64.0f * floor((float(index) / 64.0f))))));
   if ((lightsBuffer.lights[index].position.y < uniforms.inner.tint_symbol.y)) {
     lightsBuffer.lights[index].position.y = uniforms.inner.tint_symbol_1.y;
   }
diff --git a/test/tint/bug/tint/1121.wgsl.expected.msl b/test/tint/bug/tint/1121.wgsl.expected.msl
index 64aeee3..339e957 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.msl
+++ b/test/tint/bug/tint/1121.wgsl.expected.msl
@@ -65,7 +65,7 @@
   if ((index >= (*(tint_symbol_1)).numLights)) {
     return;
   }
-  (*(tint_symbol_2)).lights[index].position[1] = (((*(tint_symbol_2)).lights[index].position[1] - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f))))));
+  (*(tint_symbol_2)).lights[index].position[1] = (((*(tint_symbol_2)).lights[index].position[1] - 0.10000000149011611938f) + (0.00100000004749745131f * (float(index) - (64.0f * floor((float(index) / 64.0f))))));
   if (((*(tint_symbol_2)).lights[index].position[1] < (*(tint_symbol_3)).min[1])) {
     (*(tint_symbol_2)).lights[index].position[1] = (*(tint_symbol_3)).max[1];
   }
diff --git a/test/tint/bug/tint/1121.wgsl.expected.wgsl b/test/tint/bug/tint/1121.wgsl.expected.wgsl
index 4e5bd4a..f455687 100644
--- a/test/tint/bug/tint/1121.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1121.wgsl.expected.wgsl
@@ -48,7 +48,7 @@
   if ((index >= config.numLights)) {
     return;
   }
-  lightsBuffer.lights[index].position.y = ((lightsBuffer.lights[index].position.y - 0.1) + (0.001 * (f32(index) - (64.0 * floor((f32(index) / 64.0))))));
+  lightsBuffer.lights[index].position.y = ((lightsBuffer.lights[index].position.y - 0.10000000000000000555) + (0.00100000000000000002 * (f32(index) - (64.0 * floor((f32(index) / 64.0))))));
   if ((lightsBuffer.lights[index].position.y < uniforms.min.y)) {
     lightsBuffer.lights[index].position.y = uniforms.max.y;
   }
diff --git a/test/tint/bug/tint/1332.wgsl b/test/tint/bug/tint/1332.wgsl
index d83c3ab..85af82a 100644
--- a/test/tint/bug/tint/1332.wgsl
+++ b/test/tint/bug/tint/1332.wgsl
@@ -1,5 +1,5 @@
 @compute @workgroup_size(1)
 fn compute_main() {
-	let a = 1.23;
+	let a = 1.24;
 	var b = max(a, 1.17549435e-38);
 }
diff --git a/test/tint/bug/tint/1332.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/1332.wgsl.expected.dxc.hlsl
index 9df2d8c..f89bdcd 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/tint/1332.wgsl.expected.dxc.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void compute_main() {
-  const float a = 1.230000019f;
+  const float a = 1.24000000953674316406f;
   float b = max(a, 1.17549435e-38f);
   return;
 }
diff --git a/test/tint/bug/tint/1332.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/1332.wgsl.expected.fxc.hlsl
index 9df2d8c..f89bdcd 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/1332.wgsl.expected.fxc.hlsl
@@ -1,6 +1,6 @@
 [numthreads(1, 1, 1)]
 void compute_main() {
-  const float a = 1.230000019f;
+  const float a = 1.24000000953674316406f;
   float b = max(a, 1.17549435e-38f);
   return;
 }
diff --git a/test/tint/bug/tint/1332.wgsl.expected.glsl b/test/tint/bug/tint/1332.wgsl.expected.glsl
index f95ddc7..d6637dc 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.glsl
+++ b/test/tint/bug/tint/1332.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void compute_main() {
-  float a = 1.230000019f;
+  float a = 1.24000000953674316406f;
   float b = max(a, 1.17549435e-38f);
 }
 
diff --git a/test/tint/bug/tint/1332.wgsl.expected.msl b/test/tint/bug/tint/1332.wgsl.expected.msl
index 7ae8771..998556e 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.msl
+++ b/test/tint/bug/tint/1332.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 kernel void compute_main() {
-  float const a = 1.230000019f;
+  float const a = 1.24000000953674316406f;
   float b = fmax(a, 1.17549435e-38f);
   return;
 }
diff --git a/test/tint/bug/tint/1332.wgsl.expected.spvasm b/test/tint/bug/tint/1332.wgsl.expected.spvasm
index 005dab5..5c8ad70 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.spvasm
+++ b/test/tint/bug/tint/1332.wgsl.expected.spvasm
@@ -13,14 +13,14 @@
        %void = OpTypeVoid
           %1 = OpTypeFunction %void
       %float = OpTypeFloat 32
-%float_1_23000002 = OpConstant %float 1.23000002
+%float_1_24000001 = OpConstant %float 1.24000001
 %float_1_17549435en38 = OpConstant %float 1.17549435e-38
 %_ptr_Function_float = OpTypePointer Function %float
          %12 = OpConstantNull %float
 %compute_main = OpFunction %void None %1
           %4 = OpLabel
           %b = OpVariable %_ptr_Function_float Function %12
-          %7 = OpExtInst %float %8 NMax %float_1_23000002 %float_1_17549435en38
+          %7 = OpExtInst %float %8 NMax %float_1_24000001 %float_1_17549435en38
                OpStore %b %7
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/bug/tint/1332.wgsl.expected.wgsl b/test/tint/bug/tint/1332.wgsl.expected.wgsl
index 27e8e44..6680d1d 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/1332.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 @compute @workgroup_size(1)
 fn compute_main() {
-  let a = 1.23;
+  let a = 1.23999999999999999112;
   var b = max(a, 1.17549435e-38);
 }
diff --git a/test/tint/bug/tint/292.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/292.wgsl.expected.dxc.hlsl
index bb6e936..0ac8209 100644
--- a/test/tint/bug/tint/292.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/tint/292.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 };
 
 float4 main_inner() {
-  float3 light = float3(1.200000048f, 1.0f, 2.0f);
+  float3 light = float3(1.20000004768371582031f, 1.0f, 2.0f);
   float3 negative_light = -(light);
   return (0.0f).xxxx;
 }
diff --git a/test/tint/bug/tint/292.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/292.wgsl.expected.fxc.hlsl
index bb6e936..0ac8209 100644
--- a/test/tint/bug/tint/292.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/292.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 };
 
 float4 main_inner() {
-  float3 light = float3(1.200000048f, 1.0f, 2.0f);
+  float3 light = float3(1.20000004768371582031f, 1.0f, 2.0f);
   float3 negative_light = -(light);
   return (0.0f).xxxx;
 }
diff --git a/test/tint/bug/tint/292.wgsl.expected.glsl b/test/tint/bug/tint/292.wgsl.expected.glsl
index 6d11586..1d7b70c 100644
--- a/test/tint/bug/tint/292.wgsl.expected.glsl
+++ b/test/tint/bug/tint/292.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec4 tint_symbol() {
-  vec3 light = vec3(1.200000048f, 1.0f, 2.0f);
+  vec3 light = vec3(1.20000004768371582031f, 1.0f, 2.0f);
   vec3 negative_light = -(light);
   return vec4(0.0f);
 }
diff --git a/test/tint/bug/tint/292.wgsl.expected.msl b/test/tint/bug/tint/292.wgsl.expected.msl
index c1f9d49..02914e8 100644
--- a/test/tint/bug/tint/292.wgsl.expected.msl
+++ b/test/tint/bug/tint/292.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 float4 tint_symbol_inner() {
-  float3 light = float3(1.200000048f, 1.0f, 2.0f);
+  float3 light = float3(1.20000004768371582031f, 1.0f, 2.0f);
   float3 negative_light = -(light);
   return float4(0.0f);
 }
diff --git a/test/tint/bug/tint/292.wgsl.expected.wgsl b/test/tint/bug/tint/292.wgsl.expected.wgsl
index 994483a..f078d18 100644
--- a/test/tint/bug/tint/292.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/292.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @vertex
 fn main() -> @builtin(position) vec4<f32> {
-  var light : vec3<f32> = vec3<f32>(1.2, 1.0, 2.0);
+  var light : vec3<f32> = vec3<f32>(1.19999999999999995559, 1.0, 2.0);
   var negative_light : vec3<f32> = -(light);
   return vec4<f32>();
 }
diff --git a/test/tint/bug/tint/824.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/824.wgsl.expected.dxc.hlsl
index d565814..cef190b 100644
--- a/test/tint/bug/tint/824.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/tint/824.wgsl.expected.dxc.hlsl
@@ -12,7 +12,7 @@
 };
 
 Output main_inner(uint VertexIndex, uint InstanceIndex) {
-  const float2 zv[4] = {(0.200000003f).xx, (0.300000012f).xx, (-0.100000001f).xx, (1.100000024f).xx};
+  const float2 zv[4] = {(0.20000000298023223877f).xx, (0.30000001192092895508f).xx, (-0.10000000149011611938f).xx, (1.10000002384185791016f).xx};
   const float z = zv[InstanceIndex].x;
   Output output = (Output)0;
   output.Position = float4(0.5f, 0.5f, z, 1.0f);
diff --git a/test/tint/bug/tint/824.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/824.wgsl.expected.fxc.hlsl
index d565814..cef190b 100644
--- a/test/tint/bug/tint/824.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/824.wgsl.expected.fxc.hlsl
@@ -12,7 +12,7 @@
 };
 
 Output main_inner(uint VertexIndex, uint InstanceIndex) {
-  const float2 zv[4] = {(0.200000003f).xx, (0.300000012f).xx, (-0.100000001f).xx, (1.100000024f).xx};
+  const float2 zv[4] = {(0.20000000298023223877f).xx, (0.30000001192092895508f).xx, (-0.10000000149011611938f).xx, (1.10000002384185791016f).xx};
   const float z = zv[InstanceIndex].x;
   Output output = (Output)0;
   output.Position = float4(0.5f, 0.5f, z, 1.0f);
diff --git a/test/tint/bug/tint/824.wgsl.expected.glsl b/test/tint/bug/tint/824.wgsl.expected.glsl
index 0656691..074047c 100644
--- a/test/tint/bug/tint/824.wgsl.expected.glsl
+++ b/test/tint/bug/tint/824.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 };
 
 Output tint_symbol(uint VertexIndex, uint InstanceIndex) {
-  vec2 zv[4] = vec2[4](vec2(0.200000003f), vec2(0.300000012f), vec2(-0.100000001f), vec2(1.100000024f));
+  vec2 zv[4] = vec2[4](vec2(0.20000000298023223877f), vec2(0.30000001192092895508f), vec2(-0.10000000149011611938f), vec2(1.10000002384185791016f));
   float z = zv[InstanceIndex].x;
   Output tint_symbol_1 = Output(vec4(0.0f, 0.0f, 0.0f, 0.0f), vec4(0.0f, 0.0f, 0.0f, 0.0f));
   tint_symbol_1.Position = vec4(0.5f, 0.5f, z, 1.0f);
diff --git a/test/tint/bug/tint/824.wgsl.expected.msl b/test/tint/bug/tint/824.wgsl.expected.msl
index 4427773..f7b83d5 100644
--- a/test/tint/bug/tint/824.wgsl.expected.msl
+++ b/test/tint/bug/tint/824.wgsl.expected.msl
@@ -25,7 +25,7 @@
 };
 
 Output tint_symbol_inner(uint VertexIndex, uint InstanceIndex) {
-  tint_array<float2, 4> const zv = tint_array<float2, 4>{float2(0.200000003f), float2(0.300000012f), float2(-0.100000001f), float2(1.100000024f)};
+  tint_array<float2, 4> const zv = tint_array<float2, 4>{float2(0.20000000298023223877f), float2(0.30000001192092895508f), float2(-0.10000000149011611938f), float2(1.10000002384185791016f)};
   float const z = zv[InstanceIndex][0];
   Output output = {};
   output.Position = float4(0.5f, 0.5f, z, 1.0f);
diff --git a/test/tint/bug/tint/824.wgsl.expected.wgsl b/test/tint/bug/tint/824.wgsl.expected.wgsl
index 929857f..01e87f3 100644
--- a/test/tint/bug/tint/824.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/824.wgsl.expected.wgsl
@@ -7,7 +7,7 @@
 
 @vertex
 fn main(@builtin(vertex_index) VertexIndex : u32, @builtin(instance_index) InstanceIndex : u32) -> Output {
-  let zv : array<vec2<f32>, 4> = array<vec2<f32>, 4>(vec2<f32>(0.2, 0.2), vec2<f32>(0.3, 0.3), vec2<f32>(-(0.1), -(0.1)), vec2<f32>(1.1, 1.1));
+  let zv : array<vec2<f32>, 4> = array<vec2<f32>, 4>(vec2<f32>(0.2000000000000000111, 0.2000000000000000111), vec2<f32>(0.2999999999999999889, 0.2999999999999999889), vec2<f32>(-(0.10000000000000000555), -(0.10000000000000000555)), vec2<f32>(1.10000000000000008882, 1.10000000000000008882));
   let z : f32 = zv[InstanceIndex].x;
   var output : Output;
   output.Position = vec4<f32>(0.5, 0.5, z, 1.0);
diff --git a/test/tint/bug/tint/913.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/913.wgsl.expected.dxc.hlsl
index df80614..721ec13 100644
--- a/test/tint/bug/tint/913.wgsl.expected.dxc.hlsl
+++ b/test/tint/bug/tint/913.wgsl.expected.dxc.hlsl
@@ -6,7 +6,7 @@
 };
 
 bool aboutEqual(float value, float expect) {
-  return (abs((value - expect)) < 0.001f);
+  return (abs((value - expect)) < 0.00100000004749745131f);
 }
 
 struct tint_symbol_8 {
diff --git a/test/tint/bug/tint/913.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/913.wgsl.expected.fxc.hlsl
index df80614..721ec13 100644
--- a/test/tint/bug/tint/913.wgsl.expected.fxc.hlsl
+++ b/test/tint/bug/tint/913.wgsl.expected.fxc.hlsl
@@ -6,7 +6,7 @@
 };
 
 bool aboutEqual(float value, float expect) {
-  return (abs((value - expect)) < 0.001f);
+  return (abs((value - expect)) < 0.00100000004749745131f);
 }
 
 struct tint_symbol_8 {
diff --git a/test/tint/bug/tint/913.wgsl.expected.glsl b/test/tint/bug/tint/913.wgsl.expected.glsl
index 788849f7..79032c5 100644
--- a/test/tint/bug/tint/913.wgsl.expected.glsl
+++ b/test/tint/bug/tint/913.wgsl.expected.glsl
@@ -17,7 +17,7 @@
 } uniforms;
 
 bool aboutEqual(float value, float expect) {
-  return (abs((value - expect)) < 0.001f);
+  return (abs((value - expect)) < 0.00100000004749745131f);
 }
 
 uniform highp sampler2D src_1;
diff --git a/test/tint/bug/tint/913.wgsl.expected.msl b/test/tint/bug/tint/913.wgsl.expected.msl
index 3520d9e..6a4fbea 100644
--- a/test/tint/bug/tint/913.wgsl.expected.msl
+++ b/test/tint/bug/tint/913.wgsl.expected.msl
@@ -27,7 +27,7 @@
 };
 
 bool aboutEqual(float value, float expect) {
-  return (fabs((value - expect)) < 0.001f);
+  return (fabs((value - expect)) < 0.00100000004749745131f);
 }
 
 void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, const constant Uniforms* const tint_symbol_9, device OutputBuf* const tint_symbol_10) {
diff --git a/test/tint/bug/tint/913.wgsl.expected.wgsl b/test/tint/bug/tint/913.wgsl.expected.wgsl
index 4940ac9..db96ff9 100644
--- a/test/tint/bug/tint/913.wgsl.expected.wgsl
+++ b/test/tint/bug/tint/913.wgsl.expected.wgsl
@@ -19,7 +19,7 @@
 @group(0) @binding(3) var<uniform> uniforms : Uniforms;
 
 fn aboutEqual(value : f32, expect : f32) -> bool {
-  return (abs((value - expect)) < 0.001);
+  return (abs((value - expect)) < 0.00100000000000000002);
 }
 
 @compute @workgroup_size(1, 1, 1)
diff --git a/test/tint/builtins/degrees.spvasm.expected.dxc.hlsl b/test/tint/builtins/degrees.spvasm.expected.dxc.hlsl
index 6baebf9..6362b1d 100644
--- a/test/tint/builtins/degrees.spvasm.expected.dxc.hlsl
+++ b/test/tint/builtins/degrees.spvasm.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void main_1() {
diff --git a/test/tint/builtins/degrees.spvasm.expected.fxc.hlsl b/test/tint/builtins/degrees.spvasm.expected.fxc.hlsl
index 6baebf9..6362b1d 100644
--- a/test/tint/builtins/degrees.spvasm.expected.fxc.hlsl
+++ b/test/tint/builtins/degrees.spvasm.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void main_1() {
diff --git a/test/tint/builtins/degrees.spvasm.expected.glsl b/test/tint/builtins/degrees.spvasm.expected.glsl
index bc50976..4ff1e45 100644
--- a/test/tint/builtins/degrees.spvasm.expected.glsl
+++ b/test/tint/builtins/degrees.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
diff --git a/test/tint/builtins/degrees.spvasm.expected.msl b/test/tint/builtins/degrees.spvasm.expected.msl
index d5dca09..2db983e 100644
--- a/test/tint/builtins/degrees.spvasm.expected.msl
+++ b/test/tint/builtins/degrees.spvasm.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void main_1() {
diff --git a/test/tint/builtins/frexp.wgsl.expected.dxc.hlsl b/test/tint/builtins/frexp.wgsl.expected.dxc.hlsl
index 8afb719..477f97b 100644
--- a/test/tint/builtins/frexp.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/frexp.wgsl.expected.dxc.hlsl
@@ -4,7 +4,7 @@
 };
 [numthreads(1, 1, 1)]
 void main() {
-  const frexp_result_f32 res = {0.61500001f, 1};
+  const frexp_result_f32 res = {0.61500000953674316406f, 1};
   const int exp = res.exp;
   const float fract = res.fract;
   return;
diff --git a/test/tint/builtins/frexp.wgsl.expected.fxc.hlsl b/test/tint/builtins/frexp.wgsl.expected.fxc.hlsl
index 8afb719..477f97b 100644
--- a/test/tint/builtins/frexp.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/frexp.wgsl.expected.fxc.hlsl
@@ -4,7 +4,7 @@
 };
 [numthreads(1, 1, 1)]
 void main() {
-  const frexp_result_f32 res = {0.61500001f, 1};
+  const frexp_result_f32 res = {0.61500000953674316406f, 1};
   const int exp = res.exp;
   const float fract = res.fract;
   return;
diff --git a/test/tint/builtins/frexp.wgsl.expected.glsl b/test/tint/builtins/frexp.wgsl.expected.glsl
index fbf6fb3..a48a2e2 100644
--- a/test/tint/builtins/frexp.wgsl.expected.glsl
+++ b/test/tint/builtins/frexp.wgsl.expected.glsl
@@ -7,7 +7,7 @@
 
 
 void tint_symbol() {
-  frexp_result_f32 res = frexp_result_f32(0.61500001f, 1);
+  frexp_result_f32 res = frexp_result_f32(0.61500000953674316406f, 1);
   int tint_symbol_1 = res.exp;
   float tint_symbol_2 = res.fract;
 }
diff --git a/test/tint/builtins/frexp.wgsl.expected.msl b/test/tint/builtins/frexp.wgsl.expected.msl
index d0791c7..a927527 100644
--- a/test/tint/builtins/frexp.wgsl.expected.msl
+++ b/test/tint/builtins/frexp.wgsl.expected.msl
@@ -7,7 +7,7 @@
   int exp;
 };
 kernel void tint_symbol() {
-  frexp_result_f32 const res = frexp_result_f32{.fract=0.61500001f, .exp=1};
+  frexp_result_f32 const res = frexp_result_f32{.fract=0.61500000953674316406f, .exp=1};
   int const exp = res.exp;
   float const fract = res.fract;
   return;
diff --git a/test/tint/builtins/frexp.wgsl.expected.wgsl b/test/tint/builtins/frexp.wgsl.expected.wgsl
index b90d86b..915825e 100644
--- a/test/tint/builtins/frexp.wgsl.expected.wgsl
+++ b/test/tint/builtins/frexp.wgsl.expected.wgsl
@@ -1,6 +1,6 @@
 @compute @workgroup_size(1)
 fn main() {
-  let res = frexp(1.23);
+  let res = frexp(1.22999999999999998224);
   let exp : i32 = res.exp;
   let fract : f32 = res.fract;
 }
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 12356f0..6bb1b9c 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(0.250488281h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.25048828125h)).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 015ed01..e59e9c4 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(0.250488281hf);
+  f16vec2 res = f16vec2(0.25048828125hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_004aff() {
-  f16vec2 res = f16vec2(0.250488281hf);
+  f16vec2 res = f16vec2(0.25048828125hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_004aff() {
-  f16vec2 res = f16vec2(0.250488281hf);
+  f16vec2 res = f16vec2(0.25048828125hf);
 }
 
 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 67bf3ab..7c2ca8f 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(0.250488281h);
+  half2 res = half2(0.25048828125h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.wgsl
index e63b172..f06e5d5 100644
--- a/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/069188.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_069188() {
-  var res = acos(vec3(0.96891242171000003));
+  var res = acos(vec3(0.96891242171000002692));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.wgsl
index f43392d..6e33be1 100644
--- a/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/15d35b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_15d35b() {
-  var res = acos(vec2(0.96891242171000003));
+  var res = acos(vec2(0.96891242171000002692));
 }
 
 @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 1dff9cc..dea8dd8 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(0.250488281h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.25048828125h)).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 5831f92..8acbd6f 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(0.250488281hf);
+  f16vec4 res = f16vec4(0.25048828125hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_203628() {
-  f16vec4 res = f16vec4(0.250488281hf);
+  f16vec4 res = f16vec4(0.25048828125hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_203628() {
-  f16vec4 res = f16vec4(0.250488281hf);
+  f16vec4 res = f16vec4(0.25048828125hf);
 }
 
 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 718ec84..11d632e 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(0.250488281h);
+  half4 res = half4(0.25048828125h);
 }
 
 struct tint_symbol {
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 1ae3af9..ad7679f 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(0.250488281h);
+  float16_t res = float16_t(0.25048828125h);
 }
 
 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 ffc7b25..6b8fc12 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 = 0.250488281hf;
+  float16_t res = 0.25048828125hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_303e3d() {
-  float16_t res = 0.250488281hf;
+  float16_t res = 0.25048828125hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_303e3d() {
-  float16_t res = 0.250488281hf;
+  float16_t res = 0.25048828125hf;
 }
 
 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 80a86d6..ed81513 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 = 0.250488281h;
+  half res = 0.25048828125h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl
index 528d7d5..b3aad15 100644
--- a/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/489247.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_489247() {
-  var res : f32 = acos(0.968912423f);
+  var res : f32 = acos(0.96891242265701293945f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.wgsl
index a5deb74..5724b04 100644
--- a/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/4dac75.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_4dac75() {
-  var res = acos(vec4(0.96891242171000003));
+  var res = acos(vec4(0.96891242171000002692));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.wgsl
index 5ea3b75..85a294e 100644
--- a/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/5e9ad2.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_5e9ad2() {
-  var res = acos(0.96891242171000003);
+  var res = acos(0.96891242171000002692);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl
index 9cf63c30..8de5539 100644
--- a/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/8e2acf.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_8e2acf() {
-  var res : vec4<f32> = acos(vec4<f32>(0.968912423f));
+  var res : vec4<f32> = acos(vec4<f32>(0.96891242265701293945f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl
index cc5628a..bca3a51 100644
--- a/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/a610c4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_a610c4() {
-  var res : vec3<f32> = acos(vec3<f32>(0.968912423f));
+  var res : vec3<f32> = acos(vec3<f32>(0.96891242265701293945f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl
index 1824267..cac426d 100644
--- a/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acos/dfc915.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_dfc915() {
-  var res : vec2<f32> = acos(vec2<f32>(0.968912423f));
+  var res : vec2<f32> = acos(vec2<f32>(0.96891242265701293945f));
 }
 
 @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 c972d2e..40d4b10 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(0.250488281h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.25048828125h)).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 51cfd54..12eb244 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(0.250488281hf);
+  f16vec3 res = f16vec3(0.25048828125hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acos_f47057() {
-  f16vec3 res = f16vec3(0.250488281hf);
+  f16vec3 res = f16vec3(0.25048828125hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acos_f47057() {
-  f16vec3 res = f16vec3(0.250488281hf);
+  f16vec3 res = f16vec3(0.25048828125hf);
 }
 
 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 547e7db..c8b8e72 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(0.250488281h);
+  half3 res = half3(0.25048828125h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl
index 359ab28..8726acc 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<2, fa>) -> vec<2, fa>
 fn acosh_17260e() {
-  var res = acosh(vec2(2.));
+  var res = acosh(vec2(1.5430806348));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.dxc.hlsl
index df4361d..2585c3d 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_17260e() {
-  float2 res = (1.316957951f).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.fxc.hlsl
index df4361d..2585c3d 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_17260e() {
-  float2 res = (1.316957951f).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.glsl
index ccd2b03..cc419fd 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_17260e() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_17260e() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_17260e() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.msl
index a279c86..1bbb7fd 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_17260e() {
-  float2 res = float2(1.316957951f);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.spvasm
index 83ef32a..3604454 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,12 +31,11 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-%float_1_31695795 = OpConstant %float 1.31695795
-         %15 = OpConstantComposite %v2float %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %19 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_17260e = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v2float Function %18
@@ -56,12 +55,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_17260e
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_17260e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %acosh_17260e
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %acosh_17260e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.wgsl
index 9a71725..f12ef9d 100644
--- a/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/17260e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_17260e() {
-  var res = acosh(vec2(2.0));
+  var res = acosh(vec2(1.54308063479999990619));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl
index 1753ed7..22bab11 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(fa) -> fa
 fn acosh_3433e8() {
-  var res = acosh(2.);
+  var res = acosh(1.5430806348);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.dxc.hlsl
index 4349e35..868a9af 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.fxc.hlsl
index 4349e35..868a9af 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.glsl
index f425b91..b1d4a3a 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.msl
index 24bcb7d..edbcc9a 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.spvasm
index 8b4981f..31904ab 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,14 +30,13 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_1_31695795 = OpConstant %float 1.31695795
+    %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %16 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_3433e8 = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1_31695795
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %16
@@ -53,12 +52,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %acosh_3433e8
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %acosh_3433e8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_3433e8
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_3433e8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.wgsl
index 657dfb7..ff805c6 100644
--- a/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/3433e8.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_3433e8() {
-  var res = acosh(2.0);
+  var res = acosh(1.54308063479999990619);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl
index 179b970..75b63f9 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<4, fa>) -> vec<4, fa>
 fn acosh_490aae() {
-  var res = acosh(vec4(2.));
+  var res = acosh(vec4(1.5430806348));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.dxc.hlsl
index ed15f7d..1799078 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_490aae() {
-  float4 res = (1.316957951f).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.fxc.hlsl
index ed15f7d..1799078 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_490aae() {
-  float4 res = (1.316957951f).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.glsl
index 907f155..b5c0bd3 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_490aae() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_490aae() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_490aae() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.msl
index d098c04..61dfb50 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_490aae() {
-  float4 res = float4(1.316957951f);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.spvasm
index 914b880..4e0f69b 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,11 +30,10 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_1_31695795 = OpConstant %float 1.31695795
-         %14 = OpConstantComposite %v4float %float_1_31695795 %float_1_31695795 %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %17 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_490aae = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %5
@@ -54,12 +53,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %acosh_490aae
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %acosh_490aae
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %acosh_490aae
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %acosh_490aae
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.wgsl
index 1e81f7f..9457a49 100644
--- a/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/490aae.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_490aae() {
-  var res = acosh(vec4(2.0));
+  var res = acosh(vec4(1.54308063479999990619));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl
index 46807d3..4679b37 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>(2.h));
+  var res: vec2<f16> = acosh(vec2<f16>(1.5430806348h));
 }
 
 @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 73f2e1f..9dc5706 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
@@ -1,5 +1,5 @@
 void acosh_5f49d8() {
-  vector<float16_t, 2> res = (float16_t(1.31640625h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.99951171875h)).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 b0c35d8..559172b 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_5f49d8() {
-  f16vec2 res = f16vec2(1.31640625hf);
+  f16vec2 res = f16vec2(0.99951171875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acosh_5f49d8() {
-  f16vec2 res = f16vec2(1.31640625hf);
+  f16vec2 res = f16vec2(0.99951171875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_5f49d8() {
-  f16vec2 res = f16vec2(1.31640625hf);
+  f16vec2 res = f16vec2(0.99951171875hf);
 }
 
 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 c403efd..df27967 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_5f49d8() {
-  half2 res = half2(1.31640625h);
+  half2 res = half2(0.99951171875h);
 }
 
 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 f320e4e..5a493f9 100644
--- a/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/5f49d8.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-%half_0x1_51p_0 = OpConstant %half 0x1.51p+0
-         %16 = OpConstantComposite %v2half %half_0x1_51p_0 %half_0x1_51p_0
+%half_0x1_ffcpn1 = OpConstant %half 0x1.ffcp-1
+         %16 = OpConstantComposite %v2half %half_0x1_ffcpn1 %half_0x1_ffcpn1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
          %19 = OpConstantNull %v2half
          %20 = OpTypeFunction %v4float
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 b50c1bd..1886b02 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>(2.0h));
+  var res : vec2<f16> = acosh(vec2<f16>(1.54296875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl b/test/tint/builtins/gen/literal/acosh/640883.wgsl
index a1f9e53..6b962ff 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<2, f32>) -> vec<2, f32>
 fn acosh_640883() {
-  var res: vec2<f32> = acosh(vec2<f32>(2.f));
+  var res: vec2<f32> = acosh(vec2<f32>(1.5430806348f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.dxc.hlsl
index 8e11176..216fb4c 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_640883() {
-  float2 res = (1.316957951f).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.fxc.hlsl
index 8e11176..216fb4c 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_640883() {
-  float2 res = (1.316957951f).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.glsl
index f983f22..0c16b6f 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_640883() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_640883() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_640883() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.msl
index ed3bf24..09896fe 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_640883() {
-  float2 res = float2(1.316957951f);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.spvasm
index 5bbf93e..ea6700f 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,12 +31,11 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-%float_1_31695795 = OpConstant %float 1.31695795
-         %15 = OpConstantComposite %v2float %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %19 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_640883 = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v2float Function %18
@@ -56,12 +55,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_640883
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_640883
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %acosh_640883
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %acosh_640883
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.wgsl
index 700d426..00d4e01 100644
--- a/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/640883.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_640883() {
-  var res : vec2<f32> = acosh(vec2<f32>(2.0f));
+  var res : vec2<f32> = acosh(vec2<f32>(1.54308068752288818359f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl
index 994cac0..0fea651 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<3, fa>) -> vec<3, fa>
 fn acosh_9f213e() {
-  var res = acosh(vec3(2.));
+  var res = acosh(vec3(1.5430806348));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.dxc.hlsl
index 15244b5..8f27be1 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_9f213e() {
-  float3 res = (1.316957951f).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.fxc.hlsl
index 15244b5..8f27be1 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_9f213e() {
-  float3 res = (1.316957951f).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.glsl
index d8b3935..cd02020 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_9f213e() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_9f213e() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_9f213e() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.msl
index 4937d28..fa5ea42 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_9f213e() {
-  float3 res = float3(1.316957951f);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.spvasm
index 6b2098f..9ec135e 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,12 +31,11 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-%float_1_31695795 = OpConstant %float 1.31695795
-         %15 = OpConstantComposite %v3float %float_1_31695795 %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %19 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_9f213e = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v3float Function %18
@@ -56,12 +55,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_9f213e
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_9f213e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %acosh_9f213e
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %acosh_9f213e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.wgsl
index 9dfc860..8e4d2bb 100644
--- a/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/9f213e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_9f213e() {
-  var res = acosh(vec3(2.0));
+  var res = acosh(vec3(1.54308063479999990619));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl
index 3a3b29e..e5bf068 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(2.h);
+  var res: f16 = acosh(1.5430806348h);
 }
 
 @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 df213bf..8bcc87e 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
@@ -1,5 +1,5 @@
 void acosh_a37dfe() {
-  float16_t res = float16_t(1.31640625h);
+  float16_t res = float16_t(0.99951171875h);
 }
 
 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 890d7a3..5675660 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_a37dfe() {
-  float16_t res = 1.31640625hf;
+  float16_t res = 0.99951171875hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acosh_a37dfe() {
-  float16_t res = 1.31640625hf;
+  float16_t res = 0.99951171875hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_a37dfe() {
-  float16_t res = 1.31640625hf;
+  float16_t res = 0.99951171875hf;
 }
 
 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 54d77e1..aa56648 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_a37dfe() {
-  half res = 1.31640625h;
+  half res = 0.99951171875h;
 }
 
 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 deba610..0024847 100644
--- a/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/a37dfe.wgsl.expected.spvasm
@@ -35,7 +35,7 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-%half_0x1_51p_0 = OpConstant %half 0x1.51p+0
+%half_0x1_ffcpn1 = OpConstant %half 0x1.ffcp-1
 %_ptr_Function_half = OpTypePointer Function %half
          %17 = OpConstantNull %half
          %18 = OpTypeFunction %v4float
@@ -43,7 +43,7 @@
 %acosh_a37dfe = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_half Function %17
-               OpStore %res %half_0x1_51p_0
+               OpStore %res %half_0x1_ffcpn1
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %18
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 6d0aeac..6f55e4e 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(2.0h);
+  var res : f16 = acosh(1.54296875h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl
index 1108535..4f494cc 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<4, f32>) -> vec<4, f32>
 fn acosh_d51ccb() {
-  var res: vec4<f32> = acosh(vec4<f32>(2.f));
+  var res: vec4<f32> = acosh(vec4<f32>(1.5430806348f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.dxc.hlsl
index 8404b8e..bc54cfc 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_d51ccb() {
-  float4 res = (1.316957951f).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.fxc.hlsl
index 8404b8e..bc54cfc 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_d51ccb() {
-  float4 res = (1.316957951f).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.glsl
index bdd22a9..c40473a 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_d51ccb() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_d51ccb() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_d51ccb() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.msl
index bb8f6b2..04c0cfa 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_d51ccb() {
-  float4 res = float4(1.316957951f);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.spvasm
index f2951e5..0af3742 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,11 +30,10 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_1_31695795 = OpConstant %float 1.31695795
-         %14 = OpConstantComposite %v4float %float_1_31695795 %float_1_31695795 %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %17 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_d51ccb = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %5
@@ -54,12 +53,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %acosh_d51ccb
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %acosh_d51ccb
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %acosh_d51ccb
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %acosh_d51ccb
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.wgsl
index b964b8e..6f12d48 100644
--- a/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/d51ccb.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_d51ccb() {
-  var res : vec4<f32> = acosh(vec4<f32>(2.0f));
+  var res : vec4<f32> = acosh(vec4<f32>(1.54308068752288818359f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl
index fca8b80..acd9343 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>(2.h));
+  var res: vec4<f16> = acosh(vec4<f16>(1.5430806348h));
 }
 
 @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 3342ff9..4df2787 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
@@ -1,5 +1,5 @@
 void acosh_de60d8() {
-  vector<float16_t, 4> res = (float16_t(1.31640625h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.99951171875h)).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 641da93..7d52db7 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_de60d8() {
-  f16vec4 res = f16vec4(1.31640625hf);
+  f16vec4 res = f16vec4(0.99951171875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acosh_de60d8() {
-  f16vec4 res = f16vec4(1.31640625hf);
+  f16vec4 res = f16vec4(0.99951171875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_de60d8() {
-  f16vec4 res = f16vec4(1.31640625hf);
+  f16vec4 res = f16vec4(0.99951171875hf);
 }
 
 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 2996e65..3ba201e 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_de60d8() {
-  half4 res = half4(1.31640625h);
+  half4 res = half4(0.99951171875h);
 }
 
 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 cdf0fd7..5337702 100644
--- a/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/de60d8.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-%half_0x1_51p_0 = OpConstant %half 0x1.51p+0
-         %16 = OpConstantComposite %v4half %half_0x1_51p_0 %half_0x1_51p_0 %half_0x1_51p_0 %half_0x1_51p_0
+%half_0x1_ffcpn1 = OpConstant %half 0x1.ffcp-1
+         %16 = OpConstantComposite %v4half %half_0x1_ffcpn1 %half_0x1_ffcpn1 %half_0x1_ffcpn1 %half_0x1_ffcpn1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
          %19 = OpConstantNull %v4half
          %20 = OpTypeFunction %v4float
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 8fac87b..f834d7d 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>(2.0h));
+  var res : vec4<f16> = acosh(vec4<f16>(1.54296875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl
index 3fea9ad..a4fed29 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<3, f32>) -> vec<3, f32>
 fn acosh_e38f5c() {
-  var res: vec3<f32> = acosh(vec3<f32>(2.f));
+  var res: vec3<f32> = acosh(vec3<f32>(1.5430806348f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.dxc.hlsl
index 9df46f5..ffcf2d9 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_e38f5c() {
-  float3 res = (1.316957951f).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.fxc.hlsl
index 9df46f5..ffcf2d9 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_e38f5c() {
-  float3 res = (1.316957951f).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.glsl
index 575313c..5ace5b6 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_e38f5c() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_e38f5c() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_e38f5c() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.msl
index 6ebf8c7..7d01e57 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_e38f5c() {
-  float3 res = float3(1.316957951f);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.spvasm
index 169cee0..d85709e 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,12 +31,11 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-%float_1_31695795 = OpConstant %float 1.31695795
-         %15 = OpConstantComposite %v3float %float_1_31695795 %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %19 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_e38f5c = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v3float Function %18
@@ -56,12 +55,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_e38f5c
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_e38f5c
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %acosh_e38f5c
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %acosh_e38f5c
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.wgsl
index e62cdaa..f8473c9 100644
--- a/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/e38f5c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_e38f5c() {
-  var res : vec3<f32> = acosh(vec3<f32>(2.0f));
+  var res : vec3<f32> = acosh(vec3<f32>(1.54308068752288818359f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl
index a94002b..9de3379 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(f32) -> f32
 fn acosh_ecf2d1() {
-  var res: f32 = acosh(2.f);
+  var res: f32 = acosh(1.5430806348f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.dxc.hlsl
index b4765ec..93def9e 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_ecf2d1() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.fxc.hlsl
index b4765ec..93def9e 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_ecf2d1() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.glsl
index 196118b..a4311af 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_ecf2d1() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_ecf2d1() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_ecf2d1() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.msl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.msl
index 3d30b27..1cd6264 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_ecf2d1() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.spvasm
index 108eeb0..3c51a05 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,14 +30,13 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_1_31695795 = OpConstant %float 1.31695795
+    %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %16 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_ecf2d1 = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1_31695795
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %16
@@ -53,12 +52,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %acosh_ecf2d1
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %acosh_ecf2d1
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_ecf2d1
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_ecf2d1
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.wgsl
index c85a427..f07750c 100644
--- a/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/acosh/ecf2d1.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_ecf2d1() {
-  var res : f32 = acosh(2.0f);
+  var res : f32 = acosh(1.54308068752288818359f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/acosh/f56574.wgsl b/test/tint/builtins/gen/literal/acosh/f56574.wgsl
index f39d38d..8d9a464 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>(2.h));
+  var res: vec3<f16> = acosh(vec3<f16>(1.5430806348h));
 }
 
 @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 d7e00fd..ee217e6 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
@@ -1,5 +1,5 @@
 void acosh_f56574() {
-  vector<float16_t, 3> res = (float16_t(1.31640625h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.99951171875h)).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 9cbd247..a3a707e 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_f56574() {
-  f16vec3 res = f16vec3(1.31640625hf);
+  f16vec3 res = f16vec3(0.99951171875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void acosh_f56574() {
-  f16vec3 res = f16vec3(1.31640625hf);
+  f16vec3 res = f16vec3(0.99951171875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void acosh_f56574() {
-  f16vec3 res = f16vec3(1.31640625hf);
+  f16vec3 res = f16vec3(0.99951171875hf);
 }
 
 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 7abc0d3..2a90824 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_f56574() {
-  half3 res = half3(1.31640625h);
+  half3 res = half3(0.99951171875h);
 }
 
 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 0fd6735..8605345 100644
--- a/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/acosh/f56574.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-%half_0x1_51p_0 = OpConstant %half 0x1.51p+0
-         %16 = OpConstantComposite %v3half %half_0x1_51p_0 %half_0x1_51p_0 %half_0x1_51p_0
+%half_0x1_ffcpn1 = OpConstant %half 0x1.ffcp-1
+         %16 = OpConstantComposite %v3half %half_0x1_ffcpn1 %half_0x1_ffcpn1 %half_0x1_ffcpn1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
          %19 = OpConstantNull %v3half
          %20 = OpTypeFunction %v4float
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 bece2fd..463b9e2 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>(2.0h));
+  var res : vec3<f16> = acosh(vec3<f16>(1.54296875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl
index bc5d1dc..8f104ac 100644
--- a/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/064953.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_064953() {
-  var res : vec4<f32> = asin(vec4<f32>(0.47942555f));
+  var res : vec4<f32> = asin(vec4<f32>(0.47942554950714111328f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.wgsl
index a283860..f9e60a3 100644
--- a/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/0bac07.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_0bac07() {
-  var res = asin(vec3(0.479425538604));
+  var res = asin(vec3(0.4794255386040000011));
 }
 
 @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 21b8491..a3ec9d2 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.499755859h);
+  float16_t res = float16_t(0.499755859375h);
 }
 
 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 ee0dcab..7867385 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.499755859hf;
+  float16_t res = 0.499755859375hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_11dfda() {
-  float16_t res = 0.499755859hf;
+  float16_t res = 0.499755859375hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_11dfda() {
-  float16_t res = 0.499755859hf;
+  float16_t res = 0.499755859375hf;
 }
 
 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 5bb00b3..e5b8c70 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.499755859h;
+  half res = 0.499755859375h;
 }
 
 struct tint_symbol {
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 434bded..97d74ca 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(0.479248047h);
+  var res : f16 = asin(0.479248046875h);
 }
 
 @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 b39bb3e..b4a1c25 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.499755859h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.499755859375h)).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 1f946d0..62addca 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.499755859hf);
+  f16vec3 res = f16vec3(0.499755859375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_2d8e29() {
-  f16vec3 res = f16vec3(0.499755859hf);
+  f16vec3 res = f16vec3(0.499755859375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_2d8e29() {
-  f16vec3 res = f16vec3(0.499755859hf);
+  f16vec3 res = f16vec3(0.499755859375hf);
 }
 
 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 f71b867..da728bf 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.499755859h);
+  half3 res = half3(0.499755859375h);
 }
 
 struct tint_symbol {
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 0a0207c..d911ca4 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>(0.479248047h));
+  var res : vec3<f16> = asin(vec3<f16>(0.479248046875h));
 }
 
 @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 62589e5..2f61c02 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.499755859h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.499755859375h)).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 1c60738..9af8626 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.499755859hf);
+  f16vec4 res = f16vec4(0.499755859375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_3cfbd4() {
-  f16vec4 res = f16vec4(0.499755859hf);
+  f16vec4 res = f16vec4(0.499755859375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_3cfbd4() {
-  f16vec4 res = f16vec4(0.499755859hf);
+  f16vec4 res = f16vec4(0.499755859375hf);
 }
 
 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 6283ba0..ecbe8f5 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.499755859h);
+  half4 res = half4(0.499755859375h);
 }
 
 struct tint_symbol {
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 e646e00..f2ee7c3 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>(0.479248047h));
+  var res : vec4<f16> = asin(vec4<f16>(0.479248046875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.wgsl
index f6ce56f..651b4af 100644
--- a/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/64bb1f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_64bb1f() {
-  var res = asin(vec4(0.479425538604));
+  var res = asin(vec4(0.4794255386040000011));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl
index 77b8ae2..b5a89eb 100644
--- a/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/7b6a44.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_7b6a44() {
-  var res : vec2<f32> = asin(vec2<f32>(0.47942555f));
+  var res : vec2<f32> = asin(vec2<f32>(0.47942554950714111328f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl
index 8d19bf5..fab18a2 100644
--- a/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/8cd9c9.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_8cd9c9() {
-  var res : vec3<f32> = asin(vec3<f32>(0.47942555f));
+  var res : vec3<f32> = asin(vec3<f32>(0.47942554950714111328f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.wgsl
index e7aacda..7e32e21 100644
--- a/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/a5dd88.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_a5dd88() {
-  var res = asin(vec2(0.479425538604));
+  var res = asin(vec2(0.4794255386040000011));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.wgsl
index 09cf49a..5664236 100644
--- a/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/a6d73a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_a6d73a() {
-  var res = asin(0.479425538604);
+  var res = asin(0.4794255386040000011);
 }
 
 @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 870f92b..7f4a247 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.499755859h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.499755859375h)).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 b462aa0..1e8ba02 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.499755859hf);
+  f16vec2 res = f16vec2(0.499755859375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asin_b4aced() {
-  f16vec2 res = f16vec2(0.499755859hf);
+  f16vec2 res = f16vec2(0.499755859375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_b4aced() {
-  f16vec2 res = f16vec2(0.499755859hf);
+  f16vec2 res = f16vec2(0.499755859375hf);
 }
 
 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 56a0113..32e1af9 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.499755859h);
+  half2 res = half2(0.499755859375h);
 }
 
 struct tint_symbol {
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 81b0b44..da77c20 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>(0.479248047h));
+  var res : vec2<f16> = asin(vec2<f16>(0.479248046875h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl
index 7e36cce..ad35e32 100644
--- a/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/asin/c0c272.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_c0c272() {
-  var res : f32 = asin(0.47942555f);
+  var res : f32 = asin(0.47942554950714111328f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl
index ea3d30b..e3052ef 100644
--- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_157447() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl
index ea3d30b..e3052ef 100644
--- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_157447() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.glsl
index f4e0999..d407617 100644
--- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_157447() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_157447() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_157447() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.msl
index 1a3b085..f3f3433 100644
--- a/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/157447.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_157447() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.dxc.hlsl
index aa8bcb9..01a4bd5 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_16b543() {
-  float2 res = (0.881373584f).xx;
+  float2 res = (0.88137358427047729492f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.fxc.hlsl
index aa8bcb9..01a4bd5 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_16b543() {
-  float2 res = (0.881373584f).xx;
+  float2 res = (0.88137358427047729492f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.glsl
index bccd4b5..f714432 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_16b543() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_16b543() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_16b543() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.msl
index f4b3d6a..4a5e1a7 100644
--- a/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/16b543.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_16b543() {
-  float2 res = float2(0.881373584f);
+  float2 res = float2(0.88137358427047729492f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.dxc.hlsl
index 8b08b8c..10d6034 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.fxc.hlsl
index 8b08b8c..10d6034 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.glsl
index dd4be60..e2e9a76 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.msl
index a391e66..f2634fd 100644
--- a/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/180015.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl
index 42281c9..a1b603f8 100644
--- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_2265ee() {
-  float3 res = (0.881373584f).xxx;
+  float3 res = (0.88137358427047729492f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl
index 42281c9..a1b603f8 100644
--- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_2265ee() {
-  float3 res = (0.881373584f).xxx;
+  float3 res = (0.88137358427047729492f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.glsl
index a5b2df8..1f46b85 100644
--- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_2265ee() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_2265ee() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_2265ee() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.msl
index 01ed85c..425e59f 100644
--- a/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/2265ee.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_2265ee() {
-  float3 res = float3(0.881373584f);
+  float3 res = float3(0.88137358427047729492f);
 }
 
 struct tint_symbol {
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 16f004b..d4f5bb7 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.881347656h);
+  float16_t res = float16_t(0.88134765625h);
 }
 
 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 d5da6f4..4b0554c 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.881347656hf;
+  float16_t res = 0.88134765625hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_468a48() {
-  float16_t res = 0.881347656hf;
+  float16_t res = 0.88134765625hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_468a48() {
-  float16_t res = 0.881347656hf;
+  float16_t res = 0.88134765625hf;
 }
 
 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 eecb9b7..3d04c5f 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.881347656h;
+  half res = 0.88134765625h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl
index bd77bf3..d6f9077 100644
--- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_4a2226() {
-  float2 res = (0.881373584f).xx;
+  float2 res = (0.88137358427047729492f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl
index bd77bf3..d6f9077 100644
--- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_4a2226() {
-  float2 res = (0.881373584f).xx;
+  float2 res = (0.88137358427047729492f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.glsl
index 2148139..2f38d77 100644
--- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_4a2226() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_4a2226() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_4a2226() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.msl
index 1e30067..10eca91 100644
--- a/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/4a2226.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_4a2226() {
-  float2 res = float2(0.881373584f);
+  float2 res = float2(0.88137358427047729492f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.dxc.hlsl
index 7352b92..1a8827f 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_51079e() {
-  float3 res = (0.881373584f).xxx;
+  float3 res = (0.88137358427047729492f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.fxc.hlsl
index 7352b92..1a8827f 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_51079e() {
-  float3 res = (0.881373584f).xxx;
+  float3 res = (0.88137358427047729492f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.glsl
index 00b7fd0..7af712f 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_51079e() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_51079e() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_51079e() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.msl
index 94fd3a3..3df4a6b 100644
--- a/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/51079e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_51079e() {
-  float3 res = float3(0.881373584f);
+  float3 res = float3(0.88137358427047729492f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl
index 38dbc99..28cf9bf 100644
--- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_8d2e51() {
-  float4 res = (0.881373584f).xxxx;
+  float4 res = (0.88137358427047729492f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl
index 38dbc99..28cf9bf 100644
--- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_8d2e51() {
-  float4 res = (0.881373584f).xxxx;
+  float4 res = (0.88137358427047729492f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.glsl
index 1a087ee..9fb9a3b 100644
--- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_8d2e51() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_8d2e51() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_8d2e51() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.msl
index 0f6c879..e6ddde2 100644
--- a/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/8d2e51.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_8d2e51() {
-  float4 res = float4(0.881373584f);
+  float4 res = float4(0.88137358427047729492f);
 }
 
 struct tint_symbol {
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 aceecc0..de48e04 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.881347656h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.88134765625h)).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 7033652..35c3916 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.881347656hf);
+  f16vec4 res = f16vec4(0.88134765625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_95ab2b() {
-  f16vec4 res = f16vec4(0.881347656hf);
+  f16vec4 res = f16vec4(0.88134765625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_95ab2b() {
-  f16vec4 res = f16vec4(0.881347656hf);
+  f16vec4 res = f16vec4(0.88134765625hf);
 }
 
 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 d294e1a..d191758 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.881347656h);
+  half4 res = half4(0.88134765625h);
 }
 
 struct tint_symbol {
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 7a2f4f0..802429f 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.881347656h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.88134765625h)).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 b6efd56..1be54f0 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.881347656hf);
+  f16vec2 res = f16vec2(0.88134765625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_ad8f8b() {
-  f16vec2 res = f16vec2(0.881347656hf);
+  f16vec2 res = f16vec2(0.88134765625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_ad8f8b() {
-  f16vec2 res = f16vec2(0.881347656hf);
+  f16vec2 res = f16vec2(0.88134765625hf);
 }
 
 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 4d9d5b5..4a89f51 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.881347656h);
+  half2 res = half2(0.88134765625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.dxc.hlsl
index b15efcd..dbf7249 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_cf8603() {
-  float4 res = (0.881373584f).xxxx;
+  float4 res = (0.88137358427047729492f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.fxc.hlsl
index b15efcd..dbf7249 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_cf8603() {
-  float4 res = (0.881373584f).xxxx;
+  float4 res = (0.88137358427047729492f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.glsl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.glsl
index 11087b2..e60d6d8 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_cf8603() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_cf8603() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_cf8603() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.msl b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.msl
index 61a56b9..e1a1d53 100644
--- a/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/asinh/cf8603.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_cf8603() {
-  float4 res = float4(0.881373584f);
+  float4 res = float4(0.88137358427047729492f);
 }
 
 struct tint_symbol {
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 611ab3e..bb18443 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.881347656h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.88134765625h)).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 f5e2e87..46c51ce 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.881347656hf);
+  f16vec3 res = f16vec3(0.88134765625hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void asinh_fb5e8c() {
-  f16vec3 res = f16vec3(0.881347656hf);
+  f16vec3 res = f16vec3(0.88134765625hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asinh_fb5e8c() {
-  f16vec3 res = f16vec3(0.881347656hf);
+  f16vec3 res = f16vec3(0.88134765625hf);
 }
 
 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 a7d247d..7753043 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.881347656h);
+  half3 res = half3(0.88134765625h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.dxc.hlsl
index 41818f4..1f58ff0 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_02979a() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.fxc.hlsl
index 41818f4..1f58ff0 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_02979a() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.glsl
index 46783bc..85d99bb 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_02979a() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_02979a() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_02979a() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.msl
index 39b894b..0112cf1 100644
--- a/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/02979a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_02979a() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.dxc.hlsl
index e5151fa..2ddd1f2 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_331e6d() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.fxc.hlsl
index e5151fa..2ddd1f2 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_331e6d() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.glsl
index 646e9e3..c3d1dbb 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_331e6d() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_331e6d() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_331e6d() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.msl
index fc6b5b9..a505ed9 100644
--- a/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/331e6d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_331e6d() {
-  float3 res = float3(0.785398185f);
+  float3 res = float3(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.dxc.hlsl
index bea5d88..a7298c6 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_5ca7b8() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.fxc.hlsl
index bea5d88..a7298c6 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_5ca7b8() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.glsl
index e816df0..c79c72f 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_5ca7b8() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_5ca7b8() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_5ca7b8() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.msl
index d2a1cc8..8629789 100644
--- a/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/5ca7b8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_5ca7b8() {
-  float2 res = float2(0.785398185f);
+  float2 res = float2(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.dxc.hlsl
index f7c75ea..2db8ef0 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_749e1b() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.fxc.hlsl
index f7c75ea..2db8ef0 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_749e1b() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.glsl
index e596e37..049397c 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_749e1b() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_749e1b() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_749e1b() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.msl
index 4ee66a7..0a495f1 100644
--- a/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/749e1b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_749e1b() {
-  float3 res = float3(0.785398185f);
+  float3 res = float3(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.dxc.hlsl
index 173246a..e193179 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.fxc.hlsl
index 173246a..e193179 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.glsl
index 952e56b..3cc4ed2 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.msl
index 12934a2..f007b24 100644
--- a/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/7a2a75.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.dxc.hlsl
index f007a49..1b444ab 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_a8b696() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.fxc.hlsl
index f007a49..1b444ab 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_a8b696() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.glsl
index d04359c..21a67f4 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_a8b696() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_a8b696() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_a8b696() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.msl
index c7e812e..e3636b0 100644
--- a/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/a8b696.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_a8b696() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.dxc.hlsl
index 96fe34b..fc396b4 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_ad96e4() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.fxc.hlsl
index 96fe34b..fc396b4 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_ad96e4() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.glsl
index eb84cd8..bac3b19 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_ad96e4() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_ad96e4() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_ad96e4() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.msl
index ce75560..adbe323 100644
--- a/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/ad96e4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_ad96e4() {
-  float2 res = float2(0.785398185f);
+  float2 res = float2(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.dxc.hlsl
index 96e0256..e6dfad9 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_d17fb2() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.fxc.hlsl
index 96e0256..e6dfad9 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_d17fb2() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.glsl
index 93ead11..3ea638e 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_d17fb2() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_d17fb2() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_d17fb2() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.msl
index d74bfda..b0029f9 100644
--- a/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan/d17fb2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_d17fb2() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl
index dce0209..5af1f00 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl
index dce0209..5af1f00 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl
index 4919787..b4afab7 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl
index fb91e8d..5d601c5 100644
--- a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl
index 71f64a4..6251bb1 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_3c2865() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl
index 71f64a4..6251bb1 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_3c2865() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl
index b2ebe38..40e2aaa 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_3c2865() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_3c2865() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_3c2865() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl
index 867108a..c6528f6 100644
--- a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_3c2865() {
-  float3 res = float3(0.785398185f);
+  float3 res = float3(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl
index f3d2565..4c5a28f 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_57fb13() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl
index f3d2565..4c5a28f 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_57fb13() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl
index e4ffcba..a774c1c 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_57fb13() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_57fb13() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_57fb13() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl
index bdc31a4..df50917 100644
--- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_57fb13() {
-  float2 res = float2(0.785398185f);
+  float2 res = float2(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl
index d1f9172..3f5ad15 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_96057c() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl
index d1f9172..3f5ad15 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_96057c() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl
index 84a2072..a55d862 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_96057c() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_96057c() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_96057c() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl
index 8a2998e..4f5806a 100644
--- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_96057c() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl
index a025539..603b203 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_a70d0d() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl
index a025539..603b203 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_a70d0d() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl
index a63fa44..27a20ac 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_a70d0d() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_a70d0d() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_a70d0d() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl
index c34104b..b2d9b60 100644
--- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_a70d0d() {
-  float3 res = float3(0.785398185f);
+  float3 res = float3(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl
index 5620691..0b86fe8 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_ae713e() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl
index 5620691..0b86fe8 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_ae713e() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl
index 46798f9..d511e37 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_ae713e() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_ae713e() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_ae713e() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl
index ec369ef..3ec89eb 100644
--- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_ae713e() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl
index 93f2273..2401e58 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c19683() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl
index 93f2273..2401e58 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c19683() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl
index d823d61..dc495d7 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_c19683() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_c19683() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_c19683() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl
index 3af76c7..82ea445 100644
--- a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_c19683() {
-  float2 res = float2(0.785398185f);
+  float2 res = float2(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl
index c666d69..63f0862 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c4be45() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl
index c666d69..63f0862 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c4be45() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl
index 2d65f82..427f0a0 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_c4be45() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_c4be45() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_c4be45() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl
index 89fe4fa..8f638ca 100644
--- a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_c4be45() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl
index 2aacc1c..9886e9a 100644
--- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_440cca() {
-  float3 res = (0.549306154f).xxx;
+  float3 res = (0.54930615425109863281f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl
index 2aacc1c..9886e9a 100644
--- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_440cca() {
-  float3 res = (0.549306154f).xxx;
+  float3 res = (0.54930615425109863281f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl
index babebf4..113da45 100644
--- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_440cca() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_440cca() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_440cca() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl
index 203e734..079c92e 100644
--- a/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/440cca.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_440cca() {
-  float3 res = float3(0.549306154f);
+  float3 res = float3(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.dxc.hlsl
index c309e30..bf921e0 100644
--- a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_70d5bd() {
-  float2 res = (0.549306154f).xx;
+  float2 res = (0.54930615425109863281f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.fxc.hlsl
index c309e30..bf921e0 100644
--- a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_70d5bd() {
-  float2 res = (0.549306154f).xx;
+  float2 res = (0.54930615425109863281f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.glsl
index 4810f62..2fce2e4 100644
--- a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_70d5bd() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_70d5bd() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_70d5bd() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.msl
index 57452f4..811ff35 100644
--- a/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/70d5bd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_70d5bd() {
-  float2 res = float2(0.549306154f);
+  float2 res = float2(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl
index 1b3ce0a..eda280b 100644
--- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_7997d8() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl
index 1b3ce0a..eda280b 100644
--- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_7997d8() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl
index df17e4d..c084125 100644
--- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_7997d8() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_7997d8() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_7997d8() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl
index 4e41260..0caba9a 100644
--- a/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/7997d8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_7997d8() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.dxc.hlsl
index 001e7db..9493ebf 100644
--- a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_7f2874() {
-  float3 res = (0.549306154f).xxx;
+  float3 res = (0.54930615425109863281f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.fxc.hlsl
index 001e7db..9493ebf 100644
--- a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_7f2874() {
-  float3 res = (0.549306154f).xxx;
+  float3 res = (0.54930615425109863281f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.glsl
index 1de983e..a28b2e9 100644
--- a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_7f2874() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_7f2874() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_7f2874() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.msl
index e93df5b..f4dcc17 100644
--- a/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/7f2874.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_7f2874() {
-  float3 res = float3(0.549306154f);
+  float3 res = float3(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl
index 88aa1bd..0db252c 100644
--- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_c0e634() {
-  float2 res = (0.549306154f).xx;
+  float2 res = (0.54930615425109863281f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl
index 88aa1bd..0db252c 100644
--- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_c0e634() {
-  float2 res = (0.549306154f).xx;
+  float2 res = (0.54930615425109863281f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl
index 9b5babf..ffa9cf4 100644
--- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_c0e634() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_c0e634() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_c0e634() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl
index 631c14f..59f2617 100644
--- a/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/c0e634.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_c0e634() {
-  float2 res = float2(0.549306154f);
+  float2 res = float2(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.dxc.hlsl
index 8f168ec..39101cd 100644
--- a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.fxc.hlsl
index 8f168ec..39101cd 100644
--- a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.glsl
index 0ce5962..86ca443 100644
--- a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.msl
index 966c056..5d78f52 100644
--- a/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/c5dc32.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.dxc.hlsl
index a1d65a3..dbd3c2d 100644
--- a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_e431bb() {
-  float4 res = (0.549306154f).xxxx;
+  float4 res = (0.54930615425109863281f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.fxc.hlsl
index a1d65a3..dbd3c2d 100644
--- a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_e431bb() {
-  float4 res = (0.549306154f).xxxx;
+  float4 res = (0.54930615425109863281f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.glsl
index 240bd01..28ea06f 100644
--- a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_e431bb() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_e431bb() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_e431bb() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.msl
index caa1898..f13663a 100644
--- a/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/e431bb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_e431bb() {
-  float4 res = float4(0.549306154f);
+  float4 res = float4(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl
index ae5ce9c..8a89d13 100644
--- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_f3e01b() {
-  float4 res = (0.549306154f).xxxx;
+  float4 res = (0.54930615425109863281f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl
index ae5ce9c..8a89d13 100644
--- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_f3e01b() {
-  float4 res = (0.549306154f).xxxx;
+  float4 res = (0.54930615425109863281f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl
index 882eea2..0b3dcbe 100644
--- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_f3e01b() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_f3e01b() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_f3e01b() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl
index 2b04fe0..a86f707 100644
--- a/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/atanh/f3e01b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_f3e01b() {
-  float4 res = float4(0.549306154f);
+  float4 res = float4(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.dxc.hlsl
index 63b2df2..18eec3c 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_0d170c() {
-  float4 res = (57.295776367f).xxxx;
+  float4 res = (57.2957763671875f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.fxc.hlsl
index 63b2df2..18eec3c 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_0d170c() {
-  float4 res = (57.295776367f).xxxx;
+  float4 res = (57.2957763671875f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.glsl
index 4269efe..e14cbfc 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_0d170c() {
-  vec4 res = vec4(57.295776367f);
+  vec4 res = vec4(57.2957763671875f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_0d170c() {
-  vec4 res = vec4(57.295776367f);
+  vec4 res = vec4(57.2957763671875f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_0d170c() {
-  vec4 res = vec4(57.295776367f);
+  vec4 res = vec4(57.2957763671875f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.msl
index ef0d58a..337b31f 100644
--- a/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/0d170c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_0d170c() {
-  float4 res = float4(57.295776367f);
+  float4 res = float4(57.2957763671875f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.dxc.hlsl
index cbe6583..f2668e1 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_1ad5df() {
-  float2 res = (57.295776367f).xx;
+  float2 res = (57.2957763671875f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.fxc.hlsl
index cbe6583..f2668e1 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_1ad5df() {
-  float2 res = (57.295776367f).xx;
+  float2 res = (57.2957763671875f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.glsl
index 8640b14..c985ccc 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_1ad5df() {
-  vec2 res = vec2(57.295776367f);
+  vec2 res = vec2(57.2957763671875f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_1ad5df() {
-  vec2 res = vec2(57.295776367f);
+  vec2 res = vec2(57.2957763671875f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_1ad5df() {
-  vec2 res = vec2(57.295776367f);
+  vec2 res = vec2(57.2957763671875f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.msl
index 4af91d1..e2c6907 100644
--- a/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/1ad5df.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_1ad5df() {
-  float2 res = float2(57.295776367f);
+  float2 res = float2(57.2957763671875f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.dxc.hlsl
index fa9e278..a55fec7 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_2af623() {
-  float3 res = (57.295776367f).xxx;
+  float3 res = (57.2957763671875f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.fxc.hlsl
index fa9e278..a55fec7 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_2af623() {
-  float3 res = (57.295776367f).xxx;
+  float3 res = (57.2957763671875f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.glsl
index 08b51ee..1f14b71 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_2af623() {
-  vec3 res = vec3(57.295776367f);
+  vec3 res = vec3(57.2957763671875f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_2af623() {
-  vec3 res = vec3(57.295776367f);
+  vec3 res = vec3(57.2957763671875f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_2af623() {
-  vec3 res = vec3(57.295776367f);
+  vec3 res = vec3(57.2957763671875f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.msl
index 4da3b35..5ee520d 100644
--- a/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/2af623.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_2af623() {
-  float3 res = float3(57.295776367f);
+  float3 res = float3(57.2957763671875f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.dxc.hlsl
index 360efa4..c9c20ca 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_51f705() {
-  float res = 57.295776367f;
+  float res = 57.2957763671875f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.fxc.hlsl
index 360efa4..c9c20ca 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_51f705() {
-  float res = 57.295776367f;
+  float res = 57.2957763671875f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.glsl
index a9b22b4..dbb8ac8 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_51f705() {
-  float res = 57.295776367f;
+  float res = 57.2957763671875f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_51f705() {
-  float res = 57.295776367f;
+  float res = 57.2957763671875f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_51f705() {
-  float res = 57.295776367f;
+  float res = 57.2957763671875f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.msl
index 6ff8e85..326c7b3 100644
--- a/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/51f705.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_51f705() {
-  float res = 57.295776367f;
+  float res = 57.2957763671875f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.dxc.hlsl
index eb0415d..7092c04 100644
--- a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_810467() {
-  float2 res = (57.295780182f).xx;
+  float2 res = (57.295780181884765625f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.fxc.hlsl
index eb0415d..7092c04 100644
--- a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_810467() {
-  float2 res = (57.295780182f).xx;
+  float2 res = (57.295780181884765625f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.glsl
index cee6770..9d96588 100644
--- a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_810467() {
-  vec2 res = vec2(57.295780182f);
+  vec2 res = vec2(57.295780181884765625f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_810467() {
-  vec2 res = vec2(57.295780182f);
+  vec2 res = vec2(57.295780181884765625f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_810467() {
-  vec2 res = vec2(57.295780182f);
+  vec2 res = vec2(57.295780181884765625f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.msl
index 26fdf6d..60430771 100644
--- a/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/810467.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_810467() {
-  float2 res = float2(57.295780182f);
+  float2 res = float2(57.295780181884765625f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.dxc.hlsl
index 78013a9..1b755ad 100644
--- a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_c0880c() {
-  float3 res = (57.295780182f).xxx;
+  float3 res = (57.295780181884765625f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.fxc.hlsl
index 78013a9..1b755ad 100644
--- a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_c0880c() {
-  float3 res = (57.295780182f).xxx;
+  float3 res = (57.295780181884765625f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.glsl
index ad03188..d5946bf 100644
--- a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_c0880c() {
-  vec3 res = vec3(57.295780182f);
+  vec3 res = vec3(57.295780181884765625f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_c0880c() {
-  vec3 res = vec3(57.295780182f);
+  vec3 res = vec3(57.295780181884765625f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_c0880c() {
-  vec3 res = vec3(57.295780182f);
+  vec3 res = vec3(57.295780181884765625f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.msl
index 4b019e9..9047e09 100644
--- a/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/c0880c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_c0880c() {
-  float3 res = float3(57.295780182f);
+  float3 res = float3(57.295780181884765625f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.dxc.hlsl
index 0ea5685..5d5f6b3 100644
--- a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_d43a49() {
-  float4 res = (57.295780182f).xxxx;
+  float4 res = (57.295780181884765625f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.fxc.hlsl
index 0ea5685..5d5f6b3 100644
--- a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_d43a49() {
-  float4 res = (57.295780182f).xxxx;
+  float4 res = (57.295780181884765625f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.glsl
index 893f790..b599bb7 100644
--- a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_d43a49() {
-  vec4 res = vec4(57.295780182f);
+  vec4 res = vec4(57.295780181884765625f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_d43a49() {
-  vec4 res = vec4(57.295780182f);
+  vec4 res = vec4(57.295780181884765625f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_d43a49() {
-  vec4 res = vec4(57.295780182f);
+  vec4 res = vec4(57.295780181884765625f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.msl
index adddeb0..623900a 100644
--- a/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/d43a49.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_d43a49() {
-  float4 res = float4(57.295780182f);
+  float4 res = float4(57.295780181884765625f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.dxc.hlsl
index a11be10..574781e6 100644
--- a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.fxc.hlsl
index a11be10..574781e6 100644
--- a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.glsl
index 4572eb3..3017003 100644
--- a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.msl b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.msl
index 770b0ab..ff426d2 100644
--- a/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/degrees/fafa7e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.dxc.hlsl
index f3d2a84..2c3fb1b 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_0f70eb() {
-  float4 res = (2.718281746f).xxxx;
+  float4 res = (2.71828174591064453125f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.fxc.hlsl
index f3d2a84..2c3fb1b 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_0f70eb() {
-  float4 res = (2.718281746f).xxxx;
+  float4 res = (2.71828174591064453125f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.glsl
index d2c6e1a..7dd5b56 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_0f70eb() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_0f70eb() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_0f70eb() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.msl
index 2a9ee2c..8fa9364 100644
--- a/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/0f70eb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_0f70eb() {
-  float4 res = float4(2.718281746f);
+  float4 res = float4(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.dxc.hlsl
index 22d7711..df1dea4 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_1951e7() {
-  float2 res = (2.718281746f).xx;
+  float2 res = (2.71828174591064453125f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.fxc.hlsl
index 22d7711..df1dea4 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_1951e7() {
-  float2 res = (2.718281746f).xx;
+  float2 res = (2.71828174591064453125f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.glsl
index 33980c0..cec115c 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_1951e7() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_1951e7() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_1951e7() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.msl
index 4b3ae55..28541fa 100644
--- a/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/1951e7.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_1951e7() {
-  float2 res = float2(2.718281746f);
+  float2 res = float2(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.dxc.hlsl
index a370f26..28dfe2e 100644
--- a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.fxc.hlsl
index a370f26..28dfe2e 100644
--- a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.glsl
index 304cb4d..2b7644c 100644
--- a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.msl
index 94c050b..8a3790c 100644
--- a/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/49e4c5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.dxc.hlsl
index f19809c..03894d3 100644
--- a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_699629() {
-  float2 res = (2.718281746f).xx;
+  float2 res = (2.71828174591064453125f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.fxc.hlsl
index f19809c..03894d3 100644
--- a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_699629() {
-  float2 res = (2.718281746f).xx;
+  float2 res = (2.71828174591064453125f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.glsl
index 93856b5..6a619c6 100644
--- a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_699629() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_699629() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_699629() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.msl
index e68e3dd..0520bd3 100644
--- a/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/699629.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_699629() {
-  float2 res = float2(2.718281746f);
+  float2 res = float2(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.dxc.hlsl
index 5f88788..1894900 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_771fd2() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.fxc.hlsl
index 5f88788..1894900 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_771fd2() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.glsl
index 882d7aa..a92f5aa 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_771fd2() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_771fd2() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_771fd2() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.msl
index f86564f..fe77596 100644
--- a/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/771fd2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_771fd2() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.dxc.hlsl
index ea132ce..439cbe2 100644
--- a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_bda5bb() {
-  float3 res = (2.718281746f).xxx;
+  float3 res = (2.71828174591064453125f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.fxc.hlsl
index ea132ce..439cbe2 100644
--- a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_bda5bb() {
-  float3 res = (2.718281746f).xxx;
+  float3 res = (2.71828174591064453125f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.glsl
index 65cb0f6..71a9995 100644
--- a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_bda5bb() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_bda5bb() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_bda5bb() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.msl
index 46be400..e43a8a9 100644
--- a/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/bda5bb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_bda5bb() {
-  float3 res = float3(2.718281746f);
+  float3 res = float3(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.dxc.hlsl
index 5d794f9..bd62731 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_d98450() {
-  float3 res = (2.718281746f).xxx;
+  float3 res = (2.71828174591064453125f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.fxc.hlsl
index 5d794f9..bd62731 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_d98450() {
-  float3 res = (2.718281746f).xxx;
+  float3 res = (2.71828174591064453125f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.glsl
index 4074503..f6fc3b3 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_d98450() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_d98450() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_d98450() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.msl
index 2c3e2f0..dec059d 100644
--- a/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/d98450.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_d98450() {
-  float3 res = float3(2.718281746f);
+  float3 res = float3(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.dxc.hlsl
index b4228d0..7d907a4 100644
--- a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_dad791() {
-  float4 res = (2.718281746f).xxxx;
+  float4 res = (2.71828174591064453125f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.fxc.hlsl
index b4228d0..7d907a4 100644
--- a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_dad791() {
-  float4 res = (2.718281746f).xxxx;
+  float4 res = (2.71828174591064453125f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.glsl b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.glsl
index 1adc457..756089e 100644
--- a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_dad791() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_dad791() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_dad791() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.msl b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.msl
index c445389..76c438c 100644
--- a/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/exp/dad791.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_dad791() {
-  float4 res = float4(2.718281746f);
+  float4 res = float4(2.71828174591064453125f);
 }
 
 struct tint_symbol {
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 53cdda9..befe3df 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 = (float16_t(0.577148438h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.5771484375h)).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 ce3ca5b..3bd03af 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 = f16vec3(0.577148438hf);
+  f16vec3 res = f16vec3(0.5771484375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void normalize_39d5ec() {
-  f16vec3 res = f16vec3(0.577148438hf);
+  f16vec3 res = f16vec3(0.5771484375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void normalize_39d5ec() {
-  f16vec3 res = f16vec3(0.577148438hf);
+  f16vec3 res = f16vec3(0.5771484375hf);
 }
 
 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 ec7d2f3..afa6c5d 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 = half3(0.577148438h);
+  half3 res = half3(0.5771484375h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.dxc.hlsl
index 7ecf609..19d529f 100644
--- a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_584e47() {
-  float2 res = (0.707106769f).xx;
+  float2 res = (0.70710676908493041992f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.fxc.hlsl
index 7ecf609..19d529f 100644
--- a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_584e47() {
-  float2 res = (0.707106769f).xx;
+  float2 res = (0.70710676908493041992f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.glsl
index bc0e2ee..8d56c8c 100644
--- a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void normalize_584e47() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void normalize_584e47() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void normalize_584e47() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.msl
index 37095b8..53b3295 100644
--- a/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/584e47.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_584e47() {
-  float2 res = float2(0.707106769f);
+  float2 res = float2(0.70710676908493041992f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.dxc.hlsl
index 79592d9..bf9c4b9 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_64d8c0() {
-  float3 res = (0.577350259f).xxx;
+  float3 res = (0.57735025882720947266f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.fxc.hlsl
index 79592d9..bf9c4b9 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_64d8c0() {
-  float3 res = (0.577350259f).xxx;
+  float3 res = (0.57735025882720947266f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.glsl
index 490f3e8..fcdb09e 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void normalize_64d8c0() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void normalize_64d8c0() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void normalize_64d8c0() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.msl
index b7d517c..d67eae3 100644
--- a/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/64d8c0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_64d8c0() {
-  float3 res = float3(0.577350259f);
+  float3 res = float3(0.57735025882720947266f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.dxc.hlsl
index 257e626..0112f14 100644
--- a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_e7def8() {
-  float3 res = (0.577350259f).xxx;
+  float3 res = (0.57735025882720947266f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.fxc.hlsl
index 257e626..0112f14 100644
--- a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_e7def8() {
-  float3 res = (0.577350259f).xxx;
+  float3 res = (0.57735025882720947266f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.glsl
index b29cf51..053a255 100644
--- a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void normalize_e7def8() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void normalize_e7def8() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void normalize_e7def8() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.msl
index b07b880..a931001 100644
--- a/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/e7def8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_e7def8() {
-  float3 res = float3(0.577350259f);
+  float3 res = float3(0.57735025882720947266f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.dxc.hlsl
index 05e023e..eded47d 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_fc2ef1() {
-  float2 res = (0.707106769f).xx;
+  float2 res = (0.70710676908493041992f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.fxc.hlsl
index 05e023e..eded47d 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_fc2ef1() {
-  float2 res = (0.707106769f).xx;
+  float2 res = (0.70710676908493041992f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.glsl
index 9cac98d..d1bb408 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void normalize_fc2ef1() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void normalize_fc2ef1() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void normalize_fc2ef1() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.msl b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.msl
index c2c153d..5bd8afa 100644
--- a/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/normalize/fc2ef1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_fc2ef1() {
-  float2 res = float2(0.707106769f);
+  float2 res = float2(0.70710676908493041992f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.dxc.hlsl
index 9fda1fb..96e2ebe 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_09b7fc() {
-  float4 res = (0.017453292f).xxxx;
+  float4 res = (0.01745329238474369049f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.fxc.hlsl
index 9fda1fb..96e2ebe 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_09b7fc() {
-  float4 res = (0.017453292f).xxxx;
+  float4 res = (0.01745329238474369049f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.glsl
index 4a6d169..47c6819 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_09b7fc() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_09b7fc() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_09b7fc() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.msl
index 5b7469d..9f35906 100644
--- a/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/09b7fc.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_09b7fc() {
-  float4 res = float4(0.017453292f);
+  float4 res = float4(0.01745329238474369049f);
 }
 
 struct tint_symbol {
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 0421e6d..6f3a8c1 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
@@ -1,5 +1,5 @@
 void radians_208fd9() {
-  float16_t res = float16_t(0.017440796h);
+  float16_t res = float16_t(0.0174407958984375h);
 }
 
 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 efcf7aa..732800a 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_208fd9() {
-  float16_t res = 0.017440796hf;
+  float16_t res = 0.0174407958984375hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void radians_208fd9() {
-  float16_t res = 0.017440796hf;
+  float16_t res = 0.0174407958984375hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_208fd9() {
-  float16_t res = 0.017440796hf;
+  float16_t res = 0.0174407958984375hf;
 }
 
 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 93c1037..758dea9 100644
--- a/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/208fd9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_208fd9() {
-  half res = 0.017440796h;
+  half res = 0.0174407958984375h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.dxc.hlsl
index 247db1d..9250050 100644
--- a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_379214() {
-  float3 res = (0.017453292f).xxx;
+  float3 res = (0.01745329238474369049f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.fxc.hlsl
index 247db1d..9250050 100644
--- a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_379214() {
-  float3 res = (0.017453292f).xxx;
+  float3 res = (0.01745329238474369049f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.glsl
index 5593c1d..750b043 100644
--- a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_379214() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_379214() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_379214() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.msl
index 638763a..a5472a1 100644
--- a/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/379214.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_379214() {
-  float3 res = float3(0.017453292f);
+  float3 res = float3(0.01745329238474369049f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.dxc.hlsl
index cb67c5d9..495afb9 100644
--- a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_44a9f8() {
-  float2 res = (0.017453292f).xx;
+  float2 res = (0.01745329238474369049f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.fxc.hlsl
index cb67c5d9..495afb9 100644
--- a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_44a9f8() {
-  float2 res = (0.017453292f).xx;
+  float2 res = (0.01745329238474369049f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.glsl
index 6caa601..201150e 100644
--- a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_44a9f8() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_44a9f8() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_44a9f8() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.msl
index fea0149..c6b2951 100644
--- a/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/44a9f8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_44a9f8() {
-  float2 res = float2(0.017453292f);
+  float2 res = float2(0.01745329238474369049f);
 }
 
 struct tint_symbol {
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 f107b59..ab8106d 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
@@ -1,5 +1,5 @@
 void radians_44f20b() {
-  vector<float16_t, 4> res = (float16_t(0.017440796h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.0174407958984375h)).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 ed65328..37ab991 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_44f20b() {
-  f16vec4 res = f16vec4(0.017440796hf);
+  f16vec4 res = f16vec4(0.0174407958984375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void radians_44f20b() {
-  f16vec4 res = f16vec4(0.017440796hf);
+  f16vec4 res = f16vec4(0.0174407958984375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_44f20b() {
-  f16vec4 res = f16vec4(0.017440796hf);
+  f16vec4 res = f16vec4(0.0174407958984375hf);
 }
 
 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 d279cb3..b89d20e 100644
--- a/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/44f20b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_44f20b() {
-  half4 res = half4(0.017440796h);
+  half4 res = half4(0.0174407958984375h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.dxc.hlsl
index b3e2192..a633d34 100644
--- a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_524a91() {
-  float4 res = (0.017453292f).xxxx;
+  float4 res = (0.01745329238474369049f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.fxc.hlsl
index b3e2192..a633d34 100644
--- a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_524a91() {
-  float4 res = (0.017453292f).xxxx;
+  float4 res = (0.01745329238474369049f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.glsl
index fd1508e..1f61586 100644
--- a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_524a91() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_524a91() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_524a91() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.msl
index fa539e0..dd19a42 100644
--- a/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/524a91.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_524a91() {
-  float4 res = float4(0.017453292f);
+  float4 res = float4(0.01745329238474369049f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.dxc.hlsl
index 08ec6b4..a96dd39 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_61687a() {
-  float2 res = (0.017453292f).xx;
+  float2 res = (0.01745329238474369049f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.fxc.hlsl
index 08ec6b4..a96dd39 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_61687a() {
-  float2 res = (0.017453292f).xx;
+  float2 res = (0.01745329238474369049f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.glsl
index 3ef50f3..2aa6742 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_61687a() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_61687a() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_61687a() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.msl
index 8d8cf5c..8d7cc83 100644
--- a/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/61687a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_61687a() {
-  float2 res = float2(0.017453292f);
+  float2 res = float2(0.01745329238474369049f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.dxc.hlsl
index 5722b0d..7a1632f 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_6b0ff2() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.fxc.hlsl
index 5722b0d..7a1632f 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_6b0ff2() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.glsl
index ceb5f05..65b545c 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_6b0ff2() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_6b0ff2() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_6b0ff2() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.msl
index 486252d..4a419cd 100644
--- a/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/6b0ff2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_6b0ff2() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
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 680dffd..a805d45 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
@@ -1,5 +1,5 @@
 void radians_7ea4c7() {
-  vector<float16_t, 3> res = (float16_t(0.017440796h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.0174407958984375h)).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 44b3775..21ac51c 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_7ea4c7() {
-  f16vec3 res = f16vec3(0.017440796hf);
+  f16vec3 res = f16vec3(0.0174407958984375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void radians_7ea4c7() {
-  f16vec3 res = f16vec3(0.017440796hf);
+  f16vec3 res = f16vec3(0.0174407958984375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_7ea4c7() {
-  f16vec3 res = f16vec3(0.017440796hf);
+  f16vec3 res = f16vec3(0.0174407958984375hf);
 }
 
 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 59edb2a..15bc4dd 100644
--- a/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/7ea4c7.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_7ea4c7() {
-  half3 res = half3(0.017440796h);
+  half3 res = half3(0.0174407958984375h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.dxc.hlsl
index cde7b14..a8182f5 100644
--- a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.fxc.hlsl
index cde7b14..a8182f5 100644
--- a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.glsl
index a445da1..c25f8c4 100644
--- a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.msl
index ddd3b6e..82e4244 100644
--- a/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/bff231.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.dxc.hlsl
index 92aca96..e209cbc 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_f96258() {
-  float3 res = (0.017453292f).xxx;
+  float3 res = (0.01745329238474369049f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.fxc.hlsl
index 92aca96..e209cbc 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_f96258() {
-  float3 res = (0.017453292f).xxx;
+  float3 res = (0.01745329238474369049f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.glsl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.glsl
index 7f15f68..e270807 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_f96258() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_f96258() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_f96258() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.msl b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.msl
index 3ce84b4..9b61c50 100644
--- a/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/f96258.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_f96258() {
-  float3 res = float3(0.017453292f);
+  float3 res = float3(0.01745329238474369049f);
 }
 
 struct tint_symbol {
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 4ed51a0..a3813ae 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
@@ -1,5 +1,5 @@
 void radians_fbacf0() {
-  vector<float16_t, 2> res = (float16_t(0.017440796h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.0174407958984375h)).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 263666e..80ea9f0 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_fbacf0() {
-  f16vec2 res = f16vec2(0.017440796hf);
+  f16vec2 res = f16vec2(0.0174407958984375hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void radians_fbacf0() {
-  f16vec2 res = f16vec2(0.017440796hf);
+  f16vec2 res = f16vec2(0.0174407958984375hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void radians_fbacf0() {
-  f16vec2 res = f16vec2(0.017440796hf);
+  f16vec2 res = f16vec2(0.0174407958984375hf);
 }
 
 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 d462d32..f813a60 100644
--- a/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/radians/fbacf0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_fbacf0() {
-  half2 res = half2(0.017440796h);
+  half2 res = half2(0.0174407958984375h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl
index 31e76ba..e4be756 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<4, f32>) -> vec<4, f32>
 fn round_106c0b() {
-  var res: vec4<f32> = round(vec4<f32>(3.4f));
+  var res: vec4<f32> = round(vec4<f32>(3.5f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.dxc.hlsl
index 3bdb1e3..8a44079 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_106c0b() {
-  float4 res = (3.0f).xxxx;
+  float4 res = (4.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.fxc.hlsl
index 3bdb1e3..8a44079 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_106c0b() {
-  float4 res = (3.0f).xxxx;
+  float4 res = (4.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.glsl
index 39b7333..df6aaf6 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_106c0b() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_106c0b() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_106c0b() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.msl
index cfa1d57..7569146 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_106c0b() {
-  float4 res = float4(3.0f);
+  float4 res = float4(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.spvasm
index 878880c..71ffb45 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.spvasm
@@ -30,8 +30,8 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %float_3 = OpConstant %float 3
-         %14 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %14 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %17 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl
index be86d16..b378aa9 100644
--- a/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/106c0b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_106c0b() {
-  var res : vec4<f32> = round(vec4<f32>(3.400000095f));
+  var res : vec4<f32> = round(vec4<f32>(3.5f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl b/test/tint/builtins/gen/literal/round/184d5a.wgsl
index 56c4e50..530da3b 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<4, fa>) -> vec<4, fa>
 fn round_184d5a() {
-  var res = round(vec4(3.4));
+  var res = round(vec4(3.5));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.dxc.hlsl
index 278152a..f7bdfca 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_184d5a() {
-  float4 res = (3.0f).xxxx;
+  float4 res = (4.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.fxc.hlsl
index 278152a..f7bdfca 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_184d5a() {
-  float4 res = (3.0f).xxxx;
+  float4 res = (4.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.glsl
index d27ab94..a18114c 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_184d5a() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_184d5a() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_184d5a() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.msl
index e592f73..318e048 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_184d5a() {
-  float4 res = float4(3.0f);
+  float4 res = float4(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.spvasm
index 67a91d3..dedbfa1c 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.spvasm
@@ -30,8 +30,8 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %float_3 = OpConstant %float 3
-         %14 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %14 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %17 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.wgsl
index 8f0872c..bcbe801 100644
--- a/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/184d5a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_184d5a() {
-  var res = round(vec4(3.4));
+  var res = round(vec4(3.5));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl
index af33919..0a90eae 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<3, f32>) -> vec<3, f32>
 fn round_1c7897() {
-  var res: vec3<f32> = round(vec3<f32>(3.4f));
+  var res: vec3<f32> = round(vec3<f32>(3.5f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.dxc.hlsl
index f22675b..6653501 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_1c7897() {
-  float3 res = (3.0f).xxx;
+  float3 res = (4.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.fxc.hlsl
index f22675b..6653501 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_1c7897() {
-  float3 res = (3.0f).xxx;
+  float3 res = (4.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.glsl
index c275e8e..9bc7454 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_1c7897() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_1c7897() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_1c7897() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.msl
index 2e26c54..c4da823 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_1c7897() {
-  float3 res = float3(3.0f);
+  float3 res = float3(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.spvasm
index a28da2e..81eb5a8 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.spvasm
@@ -31,8 +31,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-    %float_3 = OpConstant %float 3
-         %15 = OpConstantComposite %v3float %float_3 %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %15 = OpConstantComposite %v3float %float_4 %float_4 %float_4
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %19 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl
index 1dd4fc6..919ce17 100644
--- a/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/1c7897.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_1c7897() {
-  var res : vec3<f32> = round(vec3<f32>(3.400000095f));
+  var res : vec3<f32> = round(vec3<f32>(3.5f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl
index 17bf011..b66178c 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<2, f32>) -> vec<2, f32>
 fn round_52c84d() {
-  var res: vec2<f32> = round(vec2<f32>(3.4f));
+  var res: vec2<f32> = round(vec2<f32>(3.5f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.dxc.hlsl
index 9bbbab4..e1678fe 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_52c84d() {
-  float2 res = (3.0f).xx;
+  float2 res = (4.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.fxc.hlsl
index 9bbbab4..e1678fe 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_52c84d() {
-  float2 res = (3.0f).xx;
+  float2 res = (4.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.glsl
index 30ba810..9376115 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_52c84d() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_52c84d() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_52c84d() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.msl
index af2fe94..51f463a 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_52c84d() {
-  float2 res = float2(3.0f);
+  float2 res = float2(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.spvasm
index 43f47a8..1e63417 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.spvasm
@@ -31,8 +31,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-    %float_3 = OpConstant %float 3
-         %15 = OpConstantComposite %v2float %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %15 = OpConstantComposite %v2float %float_4 %float_4
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %19 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl
index c075326..d4288e4 100644
--- a/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/52c84d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_52c84d() {
-  var res : vec2<f32> = round(vec2<f32>(3.400000095f));
+  var res : vec2<f32> = round(vec2<f32>(3.5f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl b/test/tint/builtins/gen/literal/round/773a8f.wgsl
index 1f0ad03..28ac24e 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(fa) -> fa
 fn round_773a8f() {
-  var res = round(3.4);
+  var res = round(3.5);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.dxc.hlsl
index dc329d8..f8e0f12 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.fxc.hlsl
index dc329d8..f8e0f12 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.glsl
index f7e71c8..0d7b0a4 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.msl
index 4b27365..c9f83f8 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.spvasm
index b97daa9..d784d9a 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.spvasm
@@ -30,14 +30,14 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
 %_ptr_Function_float = OpTypePointer Function %float
          %16 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_773a8f = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_3
+               OpStore %res %float_4
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %16
diff --git a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.wgsl
index b151d40..0942acb 100644
--- a/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/773a8f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_773a8f() {
-  var res = round(3.4);
+  var res = round(3.5);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl
index 059ab19..ff10793 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<2, fa>) -> vec<2, fa>
 fn round_8fdca3() {
-  var res = round(vec2(3.4));
+  var res = round(vec2(3.5));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.dxc.hlsl
index 5e441a3..3f822c5 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_8fdca3() {
-  float2 res = (3.0f).xx;
+  float2 res = (4.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.fxc.hlsl
index 5e441a3..3f822c5 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_8fdca3() {
-  float2 res = (3.0f).xx;
+  float2 res = (4.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.glsl
index ef15129..14cbb3b 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_8fdca3() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_8fdca3() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_8fdca3() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.msl
index dbffaee..0ff475e 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_8fdca3() {
-  float2 res = float2(3.0f);
+  float2 res = float2(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.spvasm
index 40ce4a2..f24efe9 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.spvasm
@@ -31,8 +31,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-    %float_3 = OpConstant %float 3
-         %15 = OpConstantComposite %v2float %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %15 = OpConstantComposite %v2float %float_4 %float_4
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %19 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.wgsl
index 13867b0..d59b694 100644
--- a/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/8fdca3.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_8fdca3() {
-  var res = round(vec2(3.4));
+  var res = round(vec2(3.5));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/9078ef.wgsl b/test/tint/builtins/gen/literal/round/9078ef.wgsl
index 58c608f..62b2ce5 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(3.4h);
+  var res: f16 = round(3.5h);
 }
 
 @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 5ffca69..ca26e0e 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 = float16_t(3.0h);
+  float16_t res = float16_t(4.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 72105b4..a30b084 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 = 3.0hf;
+  float16_t res = 4.0hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_9078ef() {
-  float16_t res = 3.0hf;
+  float16_t res = 4.0hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_9078ef() {
-  float16_t res = 3.0hf;
+  float16_t res = 4.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 a9fe430..1dfd603 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 = 3.0h;
+  half res = 4.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 7e23e01..6add4c3 100644
--- a/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/9078ef.wgsl.expected.spvasm
@@ -35,7 +35,7 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-%half_0x1_8p_1 = OpConstant %half 0x1.8p+1
+%half_0x1p_2 = OpConstant %half 0x1p+2
 %_ptr_Function_half = OpTypePointer Function %half
          %17 = OpConstantNull %half
          %18 = OpTypeFunction %v4float
@@ -43,7 +43,7 @@
 %round_9078ef = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_half Function %17
-               OpStore %res %half_0x1_8p_1
+               OpStore %res %half_0x1p_2
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %18
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 170d4a4..6e919be 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(3.3984375h);
+  var res : f16 = round(3.5h);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl
index a3b64a4..a54a0d8 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(f32) -> f32
 fn round_9edc38() {
-  var res: f32 = round(3.4f);
+  var res: f32 = round(3.5f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.dxc.hlsl
index daa1c1c..e33c4f3 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_9edc38() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.fxc.hlsl
index daa1c1c..e33c4f3 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_9edc38() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.glsl
index 01ef2a5..3b6ac86 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_9edc38() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_9edc38() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_9edc38() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.msl
index 611d154..21bf09c 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_9edc38() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.spvasm
index 8f2c920..3639932 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.spvasm
@@ -30,14 +30,14 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
 %_ptr_Function_float = OpTypePointer Function %float
          %16 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_9edc38 = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_3
+               OpStore %res %float_4
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %16
diff --git a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl
index 918f864..b8d95e0 100644
--- a/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/9edc38.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_9edc38() {
-  var res : f32 = round(3.400000095f);
+  var res : f32 = round(3.5f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl b/test/tint/builtins/gen/literal/round/a1673d.wgsl
index 9487990..cbb609e 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<3, fa>) -> vec<3, fa>
 fn round_a1673d() {
-  var res = round(vec3(3.4));
+  var res = round(vec3(3.5));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.dxc.hlsl
index 4032312..df8181f 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_a1673d() {
-  float3 res = (3.0f).xxx;
+  float3 res = (4.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.fxc.hlsl
index 4032312..df8181f 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_a1673d() {
-  float3 res = (3.0f).xxx;
+  float3 res = (4.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.glsl
index 0a8db5f..dd390a7 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_a1673d() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_a1673d() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_a1673d() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.msl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.msl
index e9b35bb..7303f72 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_a1673d() {
-  float3 res = float3(3.0f);
+  float3 res = float3(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.spvasm
index e9bbf2e..f0a7e42 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.spvasm
@@ -31,8 +31,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-    %float_3 = OpConstant %float 3
-         %15 = OpConstantComposite %v3float %float_3 %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %15 = OpConstantComposite %v3float %float_4 %float_4 %float_4
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %19 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.wgsl
index 89bacdf..bdcf70d 100644
--- a/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/round/a1673d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_a1673d() {
-  var res = round(vec3(3.4));
+  var res = round(vec3(3.5));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/d87e84.wgsl b/test/tint/builtins/gen/literal/round/d87e84.wgsl
index b9d842e..95ab824 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>(3.4h));
+  var res: vec2<f16> = round(vec2<f16>(3.5h));
 }
 
 @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 96f6ffe..9189150 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 = (float16_t(3.0h)).xx;
+  vector<float16_t, 2> res = (float16_t(4.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 2c32de4..5ede7fd 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 = f16vec2(3.0hf);
+  f16vec2 res = f16vec2(4.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_d87e84() {
-  f16vec2 res = f16vec2(3.0hf);
+  f16vec2 res = f16vec2(4.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_d87e84() {
-  f16vec2 res = f16vec2(3.0hf);
+  f16vec2 res = f16vec2(4.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 4393a40..5d535eb 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 = half2(3.0h);
+  half2 res = half2(4.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 5e597b2..9c21fe9 100644
--- a/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/d87e84.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-%half_0x1_8p_1 = OpConstant %half 0x1.8p+1
-         %16 = OpConstantComposite %v2half %half_0x1_8p_1 %half_0x1_8p_1
+%half_0x1p_2 = OpConstant %half 0x1p+2
+         %16 = OpConstantComposite %v2half %half_0x1p_2 %half_0x1p_2
 %_ptr_Function_v2half = OpTypePointer Function %v2half
          %19 = OpConstantNull %v2half
          %20 = OpTypeFunction %v4float
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 64094ac..e47782b 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>(3.3984375h));
+  var res : vec2<f16> = round(vec2<f16>(3.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/e1bba2.wgsl b/test/tint/builtins/gen/literal/round/e1bba2.wgsl
index 5353797..cbf710a 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>(3.4h));
+  var res: vec3<f16> = round(vec3<f16>(3.5h));
 }
 
 @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 d2d2c98..b5d707f 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 = (float16_t(3.0h)).xxx;
+  vector<float16_t, 3> res = (float16_t(4.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 a03d0bf..1a7a32a 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 = f16vec3(3.0hf);
+  f16vec3 res = f16vec3(4.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_e1bba2() {
-  f16vec3 res = f16vec3(3.0hf);
+  f16vec3 res = f16vec3(4.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_e1bba2() {
-  f16vec3 res = f16vec3(3.0hf);
+  f16vec3 res = f16vec3(4.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 4b890be..1b0be02 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 = half3(3.0h);
+  half3 res = half3(4.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 9a870a2..713ac10 100644
--- a/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/e1bba2.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-%half_0x1_8p_1 = OpConstant %half 0x1.8p+1
-         %16 = OpConstantComposite %v3half %half_0x1_8p_1 %half_0x1_8p_1 %half_0x1_8p_1
+%half_0x1p_2 = OpConstant %half 0x1p+2
+         %16 = OpConstantComposite %v3half %half_0x1p_2 %half_0x1p_2 %half_0x1p_2
 %_ptr_Function_v3half = OpTypePointer Function %v3half
          %19 = OpConstantNull %v3half
          %20 = OpTypeFunction %v4float
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 897964e..67e742f 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>(3.3984375h));
+  var res : vec3<f16> = round(vec3<f16>(3.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/round/f665b5.wgsl b/test/tint/builtins/gen/literal/round/f665b5.wgsl
index f16b14a..dd4fbea 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>(3.4h));
+  var res: vec4<f16> = round(vec4<f16>(3.5h));
 }
 
 @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 90f7e0b..9acd46a 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 = (float16_t(3.0h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(4.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 5107c21..60ff2bd 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 = f16vec4(3.0hf);
+  f16vec4 res = f16vec4(4.0hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void round_f665b5() {
-  f16vec4 res = f16vec4(3.0hf);
+  f16vec4 res = f16vec4(4.0hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_f665b5() {
-  f16vec4 res = f16vec4(3.0hf);
+  f16vec4 res = f16vec4(4.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 9ab14ff..7d642cc 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 = half4(3.0h);
+  half4 res = half4(4.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 341d4cc..0398b56 100644
--- a/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/literal/round/f665b5.wgsl.expected.spvasm
@@ -36,8 +36,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-%half_0x1_8p_1 = OpConstant %half 0x1.8p+1
-         %16 = OpConstantComposite %v4half %half_0x1_8p_1 %half_0x1_8p_1 %half_0x1_8p_1 %half_0x1_8p_1
+%half_0x1p_2 = OpConstant %half 0x1p+2
+         %16 = OpConstantComposite %v4half %half_0x1p_2 %half_0x1p_2 %half_0x1p_2 %half_0x1p_2
 %_ptr_Function_v4half = OpTypePointer Function %v4half
          %19 = OpConstantNull %v4half
          %20 = OpTypeFunction %v4float
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 ed1085f..30a8e63 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>(3.3984375h));
+  var res : vec4<f16> = round(vec4<f16>(3.5h));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl
index 21eef61..cfd6a05 100644
--- a/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/01f241.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_01f241() {
-  var res : vec3<f32> = sin(vec3<f32>(1.570796371f));
+  var res : vec3<f32> = sin(vec3<f32>(1.57079637050628662109f));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.wgsl
index ac0d7a3..f86cd7b 100644
--- a/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/15b2c6.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_15b2c6() {
-  var res = sin(vec4(1.57079632679));
+  var res = sin(vec4(1.57079632679000003037));
 }
 
 @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 f1f2665..3a502b0 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 = (float16_t(0.999511719h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.99951171875h)).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 dafd096..1deffeb 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 = f16vec3(0.999511719hf);
+  f16vec3 res = f16vec3(0.99951171875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_2c903b() {
-  f16vec3 res = f16vec3(0.999511719hf);
+  f16vec3 res = f16vec3(0.99951171875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_2c903b() {
-  f16vec3 res = f16vec3(0.999511719hf);
+  f16vec3 res = f16vec3(0.99951171875hf);
 }
 
 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 48e1f49..7ad80c1 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 = half3(0.999511719h);
+  half3 res = half3(0.99951171875h);
 }
 
 struct tint_symbol {
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 54efd94..fd5dbc4 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 = (float16_t(0.999511719h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.99951171875h)).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 1fb265d..3b74546 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 = f16vec2(0.999511719hf);
+  f16vec2 res = f16vec2(0.99951171875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_3cca11() {
-  f16vec2 res = f16vec2(0.999511719hf);
+  f16vec2 res = f16vec2(0.99951171875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_3cca11() {
-  f16vec2 res = f16vec2(0.999511719hf);
+  f16vec2 res = f16vec2(0.99951171875hf);
 }
 
 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 f4e66e7..9073313 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 = half2(0.999511719h);
+  half2 res = half2(0.99951171875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl
index b34cd50..c41ee07 100644
--- a/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/4e3979.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_4e3979() {
-  var res : vec4<f32> = sin(vec4<f32>(1.570796371f));
+  var res : vec4<f32> = sin(vec4<f32>(1.57079637050628662109f));
 }
 
 @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 3bc3e1a..0df743d 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 = (float16_t(0.999511719h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.99951171875h)).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 7062bc7..51d37c9 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 = f16vec4(0.999511719hf);
+  f16vec4 res = f16vec4(0.99951171875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_5c0712() {
-  f16vec4 res = f16vec4(0.999511719hf);
+  f16vec4 res = f16vec4(0.99951171875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_5c0712() {
-  f16vec4 res = f16vec4(0.999511719hf);
+  f16vec4 res = f16vec4(0.99951171875hf);
 }
 
 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 d391468..eb4455c 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 = half4(0.999511719h);
+  half4 res = half4(0.99951171875h);
 }
 
 struct tint_symbol {
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 2b4a486..99fbd85 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 = float16_t(0.999511719h);
+  float16_t res = float16_t(0.99951171875h);
 }
 
 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 7f38b05..cf886ea 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 = 0.999511719hf;
+  float16_t res = 0.99951171875hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sin_66a59f() {
-  float16_t res = 0.999511719hf;
+  float16_t res = 0.99951171875hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sin_66a59f() {
-  float16_t res = 0.999511719hf;
+  float16_t res = 0.99951171875hf;
 }
 
 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 25b572f..1bd61c0 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 = 0.999511719h;
+  half res = 0.99951171875h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.wgsl
index 66c7133..0113897 100644
--- a/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/67b03c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_67b03c() {
-  var res = sin(vec3(1.57079632679));
+  var res = sin(vec3(1.57079632679000003037));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.wgsl
index c5dc6fb..f419906 100644
--- a/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/68d3ab.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_68d3ab() {
-  var res = sin(vec2(1.57079632679));
+  var res = sin(vec2(1.57079632679000003037));
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.wgsl
index ee62525..3f2f4a5 100644
--- a/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/a9ab19.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_a9ab19() {
-  var res = sin(1.57079632679);
+  var res = sin(1.57079632679000003037);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl
index e2ee40d..c8cecdf 100644
--- a/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/b78c91.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_b78c91() {
-  var res : f32 = sin(1.570796371f);
+  var res : f32 = sin(1.57079637050628662109f);
 }
 
 @vertex
diff --git a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl
index f51b852..63a10ac 100644
--- a/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/literal/sin/fc8bc4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_fc8bc4() {
-  var res : vec2<f32> = sin(vec2<f32>(1.570796371f));
+  var res : vec2<f32> = sin(vec2<f32>(1.57079637050628662109f));
 }
 
 @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 cba9089..6eacac1 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 = (float16_t(1.174804688h)).xxx;
+  vector<float16_t, 3> res = (float16_t(1.1748046875h)).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 637d66a..9a5ff4e 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 = f16vec3(1.174804688hf);
+  f16vec3 res = f16vec3(1.1748046875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_0908c1() {
-  f16vec3 res = f16vec3(1.174804688hf);
+  f16vec3 res = f16vec3(1.1748046875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_0908c1() {
-  f16vec3 res = f16vec3(1.174804688hf);
+  f16vec3 res = f16vec3(1.1748046875hf);
 }
 
 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 ae2eac9..df2390e 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 = half3(1.174804688h);
+  half3 res = half3(1.1748046875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.dxc.hlsl
index 2fffd3e..b9d5df0 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_445e33() {
-  float4 res = (1.175201178f).xxxx;
+  float4 res = (1.17520117759704589844f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.fxc.hlsl
index 2fffd3e..b9d5df0 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_445e33() {
-  float4 res = (1.175201178f).xxxx;
+  float4 res = (1.17520117759704589844f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.glsl
index 3dcdacd..0b7b8c2 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_445e33() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_445e33() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_445e33() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.msl
index 412a087..6c11d97 100644
--- a/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/445e33.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_445e33() {
-  float4 res = float4(1.175201178f);
+  float4 res = float4(1.17520117759704589844f);
 }
 
 struct tint_symbol {
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 451e9cf..024f936 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 = float16_t(1.174804688h);
+  float16_t res = float16_t(1.1748046875h);
 }
 
 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 7e42f16..73167f0 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 = 1.174804688hf;
+  float16_t res = 1.1748046875hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_69cce2() {
-  float16_t res = 1.174804688hf;
+  float16_t res = 1.1748046875hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_69cce2() {
-  float16_t res = 1.174804688hf;
+  float16_t res = 1.1748046875hf;
 }
 
 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 61ee6d4..dab30e3 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 = 1.174804688h;
+  half res = 1.1748046875h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.dxc.hlsl
index cc0e402..e630d7f 100644
--- a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_77a2a3() {
-  float3 res = (1.175201178f).xxx;
+  float3 res = (1.17520117759704589844f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.fxc.hlsl
index cc0e402..e630d7f 100644
--- a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_77a2a3() {
-  float3 res = (1.175201178f).xxx;
+  float3 res = (1.17520117759704589844f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.glsl
index 4853046..da0114b 100644
--- a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_77a2a3() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_77a2a3() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_77a2a3() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.msl
index 2370cd2..c9d3493 100644
--- a/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/77a2a3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_77a2a3() {
-  float3 res = float3(1.175201178f);
+  float3 res = float3(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.dxc.hlsl
index fc2f01c..f0601ba 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_7bb598() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.fxc.hlsl
index fc2f01c..f0601ba 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_7bb598() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.glsl
index cac34fc..eb31eba 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_7bb598() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_7bb598() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_7bb598() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.msl
index d52eeca..c777012 100644
--- a/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/7bb598.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_7bb598() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
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 051609e..6a7fb59 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 = (float16_t(1.174804688h)).xx;
+  vector<float16_t, 2> res = (float16_t(1.1748046875h)).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 c651991..a0d98d8 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 = f16vec2(1.174804688hf);
+  f16vec2 res = f16vec2(1.1748046875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_924f19() {
-  f16vec2 res = f16vec2(1.174804688hf);
+  f16vec2 res = f16vec2(1.1748046875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_924f19() {
-  f16vec2 res = f16vec2(1.174804688hf);
+  f16vec2 res = f16vec2(1.1748046875hf);
 }
 
 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 db1590e..69521ba 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 = half2(1.174804688h);
+  half2 res = half2(1.1748046875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.dxc.hlsl
index 9aef2e9..f87b31d 100644
--- a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_9c1092() {
-  float2 res = (1.175201178f).xx;
+  float2 res = (1.17520117759704589844f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.fxc.hlsl
index 9aef2e9..f87b31d 100644
--- a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_9c1092() {
-  float2 res = (1.175201178f).xx;
+  float2 res = (1.17520117759704589844f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.glsl
index f6a45bd..725e252 100644
--- a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_9c1092() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_9c1092() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_9c1092() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.msl
index 04d9187..c5abd6e4 100644
--- a/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/9c1092.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_9c1092() {
-  float2 res = float2(1.175201178f);
+  float2 res = float2(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.dxc.hlsl
index 32eaad5..432b95d 100644
--- a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_a3da7c() {
-  float4 res = (1.175201178f).xxxx;
+  float4 res = (1.17520117759704589844f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.fxc.hlsl
index 32eaad5..432b95d 100644
--- a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_a3da7c() {
-  float4 res = (1.175201178f).xxxx;
+  float4 res = (1.17520117759704589844f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.glsl
index d0068d8..1a25c28 100644
--- a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_a3da7c() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_a3da7c() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_a3da7c() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.msl
index 2e9d194..468ea9c 100644
--- a/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/a3da7c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_a3da7c() {
-  float4 res = float4(1.175201178f);
+  float4 res = float4(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.dxc.hlsl
index 2f9bb17..c4c5eef 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_b9860e() {
-  float2 res = (1.175201178f).xx;
+  float2 res = (1.17520117759704589844f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.fxc.hlsl
index 2f9bb17..c4c5eef 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_b9860e() {
-  float2 res = (1.175201178f).xx;
+  float2 res = (1.17520117759704589844f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.glsl
index b52b933..521ef12 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_b9860e() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_b9860e() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_b9860e() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.msl
index 3d4fb9b..6a4db89 100644
--- a/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/b9860e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_b9860e() {
-  float2 res = float2(1.175201178f);
+  float2 res = float2(1.17520117759704589844f);
 }
 
 struct tint_symbol {
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 3e7ff80..9686bbe 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 = (float16_t(1.174804688h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(1.1748046875h)).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 6a9a369..acddf06 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 = f16vec4(1.174804688hf);
+  f16vec4 res = f16vec4(1.1748046875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void sinh_ba7e25() {
-  f16vec4 res = f16vec4(1.174804688hf);
+  f16vec4 res = f16vec4(1.1748046875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void sinh_ba7e25() {
-  f16vec4 res = f16vec4(1.174804688hf);
+  f16vec4 res = f16vec4(1.1748046875hf);
 }
 
 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 897d183..92d4cdc 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 = half4(1.174804688h);
+  half4 res = half4(1.1748046875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.dxc.hlsl
index 05a1561..493f629 100644
--- a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.fxc.hlsl
index 05a1561..493f629 100644
--- a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.glsl
index 49d4879..bfe94eae 100644
--- a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.msl
index 9cfbeae..cbe42f1 100644
--- a/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/c4df74.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.dxc.hlsl
index d3d4751..96f66c9 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_c9a5eb() {
-  float3 res = (1.175201178f).xxx;
+  float3 res = (1.17520117759704589844f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.fxc.hlsl
index d3d4751..96f66c9 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_c9a5eb() {
-  float3 res = (1.175201178f).xxx;
+  float3 res = (1.17520117759704589844f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.glsl
index f497e71..845e739 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_c9a5eb() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_c9a5eb() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_c9a5eb() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.msl b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.msl
index 4991e13..9649266 100644
--- a/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/sinh/c9a5eb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_c9a5eb() {
-  float3 res = float3(1.175201178f);
+  float3 res = float3(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.dxc.hlsl
index 5e87d82..de05419 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_244e2a() {
-  float4 res = (1.557407737f).xxxx;
+  float4 res = (1.55740773677825927734f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.fxc.hlsl
index 5e87d82..de05419 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_244e2a() {
-  float4 res = (1.557407737f).xxxx;
+  float4 res = (1.55740773677825927734f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.glsl
index c72c1bc..065546b 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_244e2a() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_244e2a() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_244e2a() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.msl
index 89614e3..72269f4 100644
--- a/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/244e2a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_244e2a() {
-  float4 res = float4(1.557407737f);
+  float4 res = float4(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.dxc.hlsl
index 29a7537..38e7ef5 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_2f030e() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.fxc.hlsl
index 29a7537..38e7ef5 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_2f030e() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.glsl
index c91a2de..d427fec 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_2f030e() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_2f030e() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_2f030e() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.msl
index 61f231d..44e8f92 100644
--- a/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/2f030e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_2f030e() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.dxc.hlsl
index 0473e41..3401d98 100644
--- a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.fxc.hlsl
index 0473e41..3401d98 100644
--- a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.glsl
index a3a2a8f..fb990ea 100644
--- a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.msl
index 91762c3..c8f7db6 100644
--- a/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/311400.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.dxc.hlsl
index 8e47663..853f844 100644
--- a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_7be368() {
-  float2 res = (1.557407737f).xx;
+  float2 res = (1.55740773677825927734f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.fxc.hlsl
index 8e47663..853f844 100644
--- a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_7be368() {
-  float2 res = (1.557407737f).xx;
+  float2 res = (1.55740773677825927734f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.glsl
index 32f4892..1ac28bd 100644
--- a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_7be368() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_7be368() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_7be368() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.msl
index 106ec06..38be7fd 100644
--- a/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/7be368.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_7be368() {
-  float2 res = float2(1.557407737f);
+  float2 res = float2(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.dxc.hlsl
index 15be1b3..80c489c 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_7ea104() {
-  float3 res = (1.557407737f).xxx;
+  float3 res = (1.55740773677825927734f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.fxc.hlsl
index 15be1b3..80c489c 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_7ea104() {
-  float3 res = (1.557407737f).xxx;
+  float3 res = (1.55740773677825927734f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.glsl
index cc4dcc1..bddb74b 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_7ea104() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_7ea104() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_7ea104() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.msl
index 8b61237..3de5a44 100644
--- a/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/7ea104.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_7ea104() {
-  float3 res = float3(1.557407737f);
+  float3 res = float3(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.dxc.hlsl
index 2ae30e9..1697a91 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_8ce3e9() {
-  float2 res = (1.557407737f).xx;
+  float2 res = (1.55740773677825927734f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.fxc.hlsl
index 2ae30e9..1697a91 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_8ce3e9() {
-  float2 res = (1.557407737f).xx;
+  float2 res = (1.55740773677825927734f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.glsl
index de1d43b..eede9b1 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_8ce3e9() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_8ce3e9() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_8ce3e9() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.msl
index f90db0d..6847444 100644
--- a/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/8ce3e9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_8ce3e9() {
-  float2 res = float2(1.557407737f);
+  float2 res = float2(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.dxc.hlsl
index fcb1fb7..476c35f 100644
--- a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_a0966f() {
-  float4 res = (1.557407737f).xxxx;
+  float4 res = (1.55740773677825927734f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.fxc.hlsl
index fcb1fb7..476c35f 100644
--- a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_a0966f() {
-  float4 res = (1.557407737f).xxxx;
+  float4 res = (1.55740773677825927734f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.glsl
index ffdb301..5803b3a 100644
--- a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_a0966f() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_a0966f() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_a0966f() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.msl
index 958b44b..35d33ed 100644
--- a/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/a0966f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_a0966f() {
-  float4 res = float4(1.557407737f);
+  float4 res = float4(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.dxc.hlsl
index 3b0cc00..281ae97 100644
--- a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_ae26ae() {
-  float3 res = (1.557407737f).xxx;
+  float3 res = (1.55740773677825927734f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.fxc.hlsl
index 3b0cc00..281ae97 100644
--- a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_ae26ae() {
-  float3 res = (1.557407737f).xxx;
+  float3 res = (1.55740773677825927734f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.glsl
index bebd277..b920c44 100644
--- a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_ae26ae() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_ae26ae() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_ae26ae() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.msl b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.msl
index 6f23097..7bb17f6 100644
--- a/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tan/ae26ae.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_ae26ae() {
-  float3 res = float3(1.557407737f);
+  float3 res = float3(1.55740773677825927734f);
 }
 
 struct tint_symbol {
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 d716d36..80169a4 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 = (float16_t(0.761230469h)).xxx;
+  vector<float16_t, 3> res = (float16_t(0.76123046875h)).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 99c867a..ab71629 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 = f16vec3(0.761230469hf);
+  f16vec3 res = f16vec3(0.76123046875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_06a4fe() {
-  f16vec3 res = f16vec3(0.761230469hf);
+  f16vec3 res = f16vec3(0.76123046875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_06a4fe() {
-  f16vec3 res = f16vec3(0.761230469hf);
+  f16vec3 res = f16vec3(0.76123046875hf);
 }
 
 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 c398ee2..39f6cc3 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 = half3(0.761230469h);
+  half3 res = half3(0.76123046875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.dxc.hlsl
index 531d037..c10b04f 100644
--- a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.fxc.hlsl
index 531d037..c10b04f 100644
--- a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.glsl
index 9a6f7ec..74033cd 100644
--- a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.msl
index 36f2eb8..bc8a976 100644
--- a/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/313aa1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.dxc.hlsl
index 4bb249b..aa453c1 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_5663c5() {
-  float4 res = (0.761594176f).xxxx;
+  float4 res = (0.76159417629241943359f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.fxc.hlsl
index 4bb249b..aa453c1 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_5663c5() {
-  float4 res = (0.761594176f).xxxx;
+  float4 res = (0.76159417629241943359f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.glsl
index 58f71df..8adbf50 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_5663c5() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_5663c5() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_5663c5() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.msl
index acc7d70..4b57e77 100644
--- a/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/5663c5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_5663c5() {
-  float4 res = float4(0.761594176f);
+  float4 res = float4(0.76159417629241943359f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.dxc.hlsl
index 8520148..b83cf25 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_5724b3() {
-  float2 res = (0.761594176f).xx;
+  float2 res = (0.76159417629241943359f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.fxc.hlsl
index 8520148..b83cf25 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_5724b3() {
-  float2 res = (0.761594176f).xx;
+  float2 res = (0.76159417629241943359f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.glsl
index 89e4115..506ecf9 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_5724b3() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_5724b3() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_5724b3() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.msl
index 4467340..bebf870 100644
--- a/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/5724b3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_5724b3() {
-  float2 res = float2(0.761594176f);
+  float2 res = float2(0.76159417629241943359f);
 }
 
 struct tint_symbol {
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 5cb27b6..7572be8 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 = float16_t(0.761230469h);
+  float16_t res = float16_t(0.76123046875h);
 }
 
 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 75ca685..1aff59f 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 = 0.761230469hf;
+  float16_t res = 0.76123046875hf;
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_5b19af() {
-  float16_t res = 0.761230469hf;
+  float16_t res = 0.76123046875hf;
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_5b19af() {
-  float16_t res = 0.761230469hf;
+  float16_t res = 0.76123046875hf;
 }
 
 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 c6bc391..62d8460 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 = 0.761230469h;
+  half res = 0.76123046875h;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.dxc.hlsl
index b804dc3..7269f3f 100644
--- a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_6289fd() {
-  float3 res = (0.761594176f).xxx;
+  float3 res = (0.76159417629241943359f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.fxc.hlsl
index b804dc3..7269f3f 100644
--- a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_6289fd() {
-  float3 res = (0.761594176f).xxx;
+  float3 res = (0.76159417629241943359f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.glsl
index b883e60..de224d7 100644
--- a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_6289fd() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_6289fd() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_6289fd() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.msl
index 491a4da..d324e64 100644
--- a/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/6289fd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_6289fd() {
-  float3 res = float3(0.761594176f);
+  float3 res = float3(0.76159417629241943359f);
 }
 
 struct tint_symbol {
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 aae259d..07100ef 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 = (float16_t(0.761230469h)).xx;
+  vector<float16_t, 2> res = (float16_t(0.76123046875h)).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 c0a57af..17e12eb 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 = f16vec2(0.761230469hf);
+  f16vec2 res = f16vec2(0.76123046875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_6d105a() {
-  f16vec2 res = f16vec2(0.761230469hf);
+  f16vec2 res = f16vec2(0.76123046875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_6d105a() {
-  f16vec2 res = f16vec2(0.761230469hf);
+  f16vec2 res = f16vec2(0.76123046875hf);
 }
 
 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 b4c20c4..3a14e28 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 = half2(0.761230469h);
+  half2 res = half2(0.76123046875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.dxc.hlsl
index 7a66c83..36f827b 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_9f9fb9() {
-  float3 res = (0.761594176f).xxx;
+  float3 res = (0.76159417629241943359f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.fxc.hlsl
index 7a66c83..36f827b 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_9f9fb9() {
-  float3 res = (0.761594176f).xxx;
+  float3 res = (0.76159417629241943359f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.glsl
index 74d1a8f..33e666e 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_9f9fb9() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_9f9fb9() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_9f9fb9() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.msl
index 7b21791..0023996 100644
--- a/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/9f9fb9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_9f9fb9() {
-  float3 res = float3(0.761594176f);
+  float3 res = float3(0.76159417629241943359f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.dxc.hlsl
index 1b0ad28..8f514b0 100644
--- a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_ac5d33() {
-  float4 res = (0.761594176f).xxxx;
+  float4 res = (0.76159417629241943359f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.fxc.hlsl
index 1b0ad28..8f514b0 100644
--- a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_ac5d33() {
-  float4 res = (0.761594176f).xxxx;
+  float4 res = (0.76159417629241943359f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.glsl
index 698681d..9687133 100644
--- a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_ac5d33() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_ac5d33() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_ac5d33() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.msl
index a6e681d..385d435 100644
--- a/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/ac5d33.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_ac5d33() {
-  float4 res = float4(0.761594176f);
+  float4 res = float4(0.76159417629241943359f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.dxc.hlsl
index 2d81f93..47810e7 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_c15fdb() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.fxc.hlsl
index 2d81f93..47810e7 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_c15fdb() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.glsl
index e0391d5..8255524 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_c15fdb() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_c15fdb() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_c15fdb() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.msl
index c10991e..1666182 100644
--- a/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/c15fdb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_c15fdb() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.dxc.hlsl
index 39bb4df..e8c8480 100644
--- a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_c48aa6() {
-  float2 res = (0.761594176f).xx;
+  float2 res = (0.76159417629241943359f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.fxc.hlsl
index 39bb4df..e8c8480 100644
--- a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_c48aa6() {
-  float2 res = (0.761594176f).xx;
+  float2 res = (0.76159417629241943359f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.glsl
index fe899fa..767b82c 100644
--- a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_c48aa6() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_c48aa6() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_c48aa6() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.msl b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.msl
index 49ccdba..2826d37 100644
--- a/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/tanh/c48aa6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_c48aa6() {
-  float2 res = float2(0.761594176f);
+  float2 res = float2(0.76159417629241943359f);
 }
 
 struct tint_symbol {
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 19315cc..9272ad6 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 = (float16_t(0.761230469h)).xxxx;
+  vector<float16_t, 4> res = (float16_t(0.76123046875h)).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 53cdc2c..c144c38 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 = f16vec4(0.761230469hf);
+  f16vec4 res = f16vec4(0.76123046875hf);
 }
 
 vec4 vertex_main() {
@@ -23,7 +23,7 @@
 precision mediump float;
 
 void tanh_e8efb3() {
-  f16vec4 res = f16vec4(0.761230469hf);
+  f16vec4 res = f16vec4(0.76123046875hf);
 }
 
 void fragment_main() {
@@ -38,7 +38,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void tanh_e8efb3() {
-  f16vec4 res = f16vec4(0.761230469hf);
+  f16vec4 res = f16vec4(0.76123046875hf);
 }
 
 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 215aedb..abae79e 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 = half4(0.761230469h);
+  half4 res = half4(0.76123046875h);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.dxc.hlsl
index e93690f..725b54d 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void unpack2x16float_32a5cf() {
-  float2 res = float2(5.96046448e-08f, 0.0f);
+  float2 res = float2(0.00000005960464477539f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.fxc.hlsl
index e93690f..725b54d 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void unpack2x16float_32a5cf() {
-  float2 res = float2(5.96046448e-08f, 0.0f);
+  float2 res = float2(0.00000005960464477539f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.glsl
index 0151e43..443a36f 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void unpack2x16float_32a5cf() {
-  vec2 res = vec2(5.96046448e-08f, 0.0f);
+  vec2 res = vec2(0.00000005960464477539f, 0.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void unpack2x16float_32a5cf() {
-  vec2 res = vec2(5.96046448e-08f, 0.0f);
+  vec2 res = vec2(0.00000005960464477539f, 0.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void unpack2x16float_32a5cf() {
-  vec2 res = vec2(5.96046448e-08f, 0.0f);
+  vec2 res = vec2(0.00000005960464477539f, 0.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.msl
index fae1c5a..f70f80a 100644
--- a/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/unpack2x16float/32a5cf.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void unpack2x16float_32a5cf() {
-  float2 res = float2(5.96046448e-08f, 0.0f);
+  float2 res = float2(0.00000005960464477539f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.dxc.hlsl
index c19aff6..3e34800 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void unpack2x16snorm_b4aea6() {
-  float2 res = float2(3.05185094e-05f, 0.0f);
+  float2 res = float2(0.00003051850944757462f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.fxc.hlsl
index c19aff6..3e34800 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void unpack2x16snorm_b4aea6() {
-  float2 res = float2(3.05185094e-05f, 0.0f);
+  float2 res = float2(0.00003051850944757462f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.glsl
index 9311736..96060f5 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void unpack2x16snorm_b4aea6() {
-  vec2 res = vec2(3.05185094e-05f, 0.0f);
+  vec2 res = vec2(0.00003051850944757462f, 0.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void unpack2x16snorm_b4aea6() {
-  vec2 res = vec2(3.05185094e-05f, 0.0f);
+  vec2 res = vec2(0.00003051850944757462f, 0.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void unpack2x16snorm_b4aea6() {
-  vec2 res = vec2(3.05185094e-05f, 0.0f);
+  vec2 res = vec2(0.00003051850944757462f, 0.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.msl
index 5bf1fc4..6db7776 100644
--- a/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/unpack2x16snorm/b4aea6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void unpack2x16snorm_b4aea6() {
-  float2 res = float2(3.05185094e-05f, 0.0f);
+  float2 res = float2(0.00003051850944757462f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.dxc.hlsl
index 77022d5..2933570 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void unpack2x16unorm_7699c0() {
-  float2 res = float2(1.52590219e-05f, 0.0f);
+  float2 res = float2(0.00001525902189314365f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.fxc.hlsl
index 77022d5..2933570 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void unpack2x16unorm_7699c0() {
-  float2 res = float2(1.52590219e-05f, 0.0f);
+  float2 res = float2(0.00001525902189314365f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.glsl
index d783ce0e..c14494f 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void unpack2x16unorm_7699c0() {
-  vec2 res = vec2(1.52590219e-05f, 0.0f);
+  vec2 res = vec2(0.00001525902189314365f, 0.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void unpack2x16unorm_7699c0() {
-  vec2 res = vec2(1.52590219e-05f, 0.0f);
+  vec2 res = vec2(0.00001525902189314365f, 0.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void unpack2x16unorm_7699c0() {
-  vec2 res = vec2(1.52590219e-05f, 0.0f);
+  vec2 res = vec2(0.00001525902189314365f, 0.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.msl
index aff4473..2d3303a 100644
--- a/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/unpack2x16unorm/7699c0.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void unpack2x16unorm_7699c0() {
-  float2 res = float2(1.52590219e-05f, 0.0f);
+  float2 res = float2(0.00001525902189314365f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.dxc.hlsl
index f932f45..c4befc5 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void unpack4x8snorm_523fb3() {
-  float4 res = float4(0.007874016f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.fxc.hlsl
index f932f45..c4befc5 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void unpack4x8snorm_523fb3() {
-  float4 res = float4(0.007874016f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.glsl
index 020cd3b..5366556 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void unpack4x8snorm_523fb3() {
-  vec4 res = vec4(0.007874016f, 0.0f, 0.0f, 0.0f);
+  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void unpack4x8snorm_523fb3() {
-  vec4 res = vec4(0.007874016f, 0.0f, 0.0f, 0.0f);
+  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void unpack4x8snorm_523fb3() {
-  vec4 res = vec4(0.007874016f, 0.0f, 0.0f, 0.0f);
+  vec4 res = vec4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.msl
index 221fb62..2a8dbba 100644
--- a/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/unpack4x8snorm/523fb3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void unpack4x8snorm_523fb3() {
-  float4 res = float4(0.007874016f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.00787401571869850159f, 0.0f, 0.0f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.dxc.hlsl
index a8fe133..17a3f97 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void unpack4x8unorm_750c74() {
-  float4 res = float4(0.003921569f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.fxc.hlsl
index a8fe133..17a3f97 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void unpack4x8unorm_750c74() {
-  float4 res = float4(0.003921569f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.glsl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.glsl
index 51a36e5..418b297 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void unpack4x8unorm_750c74() {
-  vec4 res = vec4(0.003921569f, 0.0f, 0.0f, 0.0f);
+  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void unpack4x8unorm_750c74() {
-  vec4 res = vec4(0.003921569f, 0.0f, 0.0f, 0.0f);
+  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void unpack4x8unorm_750c74() {
-  vec4 res = vec4(0.003921569f, 0.0f, 0.0f, 0.0f);
+  vec4 res = vec4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.msl b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.msl
index 0b46f34..6127018 100644
--- a/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.msl
+++ b/test/tint/builtins/gen/literal/unpack4x8unorm/750c74.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void unpack4x8unorm_750c74() {
-  float4 res = float4(0.003921569f, 0.0f, 0.0f, 0.0f);
+  float4 res = float4(0.0039215688593685627f, 0.0f, 0.0f, 0.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acos/069188.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/069188.wgsl.expected.wgsl
index 3f86871..e3a8162 100644
--- a/test/tint/builtins/gen/var/acos/069188.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/069188.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_069188() {
-  const arg_0 = vec3(0.96891242171000003);
+  const arg_0 = vec3(0.96891242171000002692);
   var res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.wgsl
index 35f65c9..fe51140 100644
--- a/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/15d35b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_15d35b() {
-  const arg_0 = vec2(0.96891242171000003);
+  const arg_0 = vec2(0.96891242171000002692);
   var res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.dxc.hlsl
index 6511667..4981ad4 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_489247() {
-  float arg_0 = 0.968912423f;
+  float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.fxc.hlsl
index 6511667..4981ad4 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acos_489247() {
-  float arg_0 = 0.968912423f;
+  float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.glsl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.glsl
index 97c41de..a3df677 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acos_489247() {
-  float arg_0 = 0.968912423f;
+  float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void acos_489247() {
-  float arg_0 = 0.968912423f;
+  float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void acos_489247() {
-  float arg_0 = 0.968912423f;
+  float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.msl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.msl
index 88a49ef..58bb57f 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_489247() {
-  float arg_0 = 0.968912423f;
+  float arg_0 = 0.96891242265701293945f;
   float res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl
index fb42815..f24aa65 100644
--- a/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/489247.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_489247() {
-  var arg_0 = 0.968912423f;
+  var arg_0 = 0.96891242265701293945f;
   var res : f32 = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.wgsl
index cfb28b2..cca9d4a 100644
--- a/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/4dac75.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_4dac75() {
-  const arg_0 = vec4(0.96891242171000003);
+  const arg_0 = vec4(0.96891242171000002692);
   var res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.wgsl
index 46b31ba..63b271c 100644
--- a/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/5e9ad2.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_5e9ad2() {
-  const arg_0 = 0.96891242171000003;
+  const arg_0 = 0.96891242171000002692;
   var res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.dxc.hlsl
index 377f210..132d051 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_8e2acf() {
-  float4 arg_0 = (0.968912423f).xxxx;
+  float4 arg_0 = (0.96891242265701293945f).xxxx;
   float4 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.fxc.hlsl
index 377f210..132d051 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acos_8e2acf() {
-  float4 arg_0 = (0.968912423f).xxxx;
+  float4 arg_0 = (0.96891242265701293945f).xxxx;
   float4 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.glsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.glsl
index a532582..e38ef29 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acos_8e2acf() {
-  vec4 arg_0 = vec4(0.968912423f);
+  vec4 arg_0 = vec4(0.96891242265701293945f);
   vec4 res = acos(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void acos_8e2acf() {
-  vec4 arg_0 = vec4(0.968912423f);
+  vec4 arg_0 = vec4(0.96891242265701293945f);
   vec4 res = acos(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void acos_8e2acf() {
-  vec4 arg_0 = vec4(0.968912423f);
+  vec4 arg_0 = vec4(0.96891242265701293945f);
   vec4 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.msl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.msl
index 9948dfe..cb5678b 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_8e2acf() {
-  float4 arg_0 = float4(0.968912423f);
+  float4 arg_0 = float4(0.96891242265701293945f);
   float4 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl
index 7b9cd99..382a167 100644
--- a/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/8e2acf.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_8e2acf() {
-  var arg_0 = vec4<f32>(0.968912423f);
+  var arg_0 = vec4<f32>(0.96891242265701293945f);
   var res : vec4<f32> = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.dxc.hlsl
index da06d7c..f58321b 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_a610c4() {
-  float3 arg_0 = (0.968912423f).xxx;
+  float3 arg_0 = (0.96891242265701293945f).xxx;
   float3 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.fxc.hlsl
index da06d7c..f58321b 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acos_a610c4() {
-  float3 arg_0 = (0.968912423f).xxx;
+  float3 arg_0 = (0.96891242265701293945f).xxx;
   float3 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.glsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.glsl
index ccb75ac..8ac0fa0 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acos_a610c4() {
-  vec3 arg_0 = vec3(0.968912423f);
+  vec3 arg_0 = vec3(0.96891242265701293945f);
   vec3 res = acos(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void acos_a610c4() {
-  vec3 arg_0 = vec3(0.968912423f);
+  vec3 arg_0 = vec3(0.96891242265701293945f);
   vec3 res = acos(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void acos_a610c4() {
-  vec3 arg_0 = vec3(0.968912423f);
+  vec3 arg_0 = vec3(0.96891242265701293945f);
   vec3 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.msl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.msl
index fec82f5..1da585a 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_a610c4() {
-  float3 arg_0 = float3(0.968912423f);
+  float3 arg_0 = float3(0.96891242265701293945f);
   float3 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl
index eaade09..5407c8f 100644
--- a/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/a610c4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_a610c4() {
-  var arg_0 = vec3<f32>(0.968912423f);
+  var arg_0 = vec3<f32>(0.96891242265701293945f);
   var res : vec3<f32> = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.dxc.hlsl
index 38ee5b3..b375306 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acos_dfc915() {
-  float2 arg_0 = (0.968912423f).xx;
+  float2 arg_0 = (0.96891242265701293945f).xx;
   float2 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.fxc.hlsl
index 38ee5b3..b375306 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acos_dfc915() {
-  float2 arg_0 = (0.968912423f).xx;
+  float2 arg_0 = (0.96891242265701293945f).xx;
   float2 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.glsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.glsl
index 0ae53a7..3cc6415 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acos_dfc915() {
-  vec2 arg_0 = vec2(0.968912423f);
+  vec2 arg_0 = vec2(0.96891242265701293945f);
   vec2 res = acos(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void acos_dfc915() {
-  vec2 arg_0 = vec2(0.968912423f);
+  vec2 arg_0 = vec2(0.96891242265701293945f);
   vec2 res = acos(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void acos_dfc915() {
-  vec2 arg_0 = vec2(0.968912423f);
+  vec2 arg_0 = vec2(0.96891242265701293945f);
   vec2 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.msl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.msl
index 6992e2e..32e6662 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acos_dfc915() {
-  float2 arg_0 = float2(0.968912423f);
+  float2 arg_0 = float2(0.96891242265701293945f);
   float2 res = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl
index 29d05ac..7af1a8c 100644
--- a/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acos/dfc915.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acos_dfc915() {
-  var arg_0 = vec2<f32>(0.968912423f);
+  var arg_0 = vec2<f32>(0.96891242265701293945f);
   var res : vec2<f32> = acos(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl b/test/tint/builtins/gen/var/acosh/17260e.wgsl
index b08c369..af65dcc 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<2, fa>) -> vec<2, fa>
 fn acosh_17260e() {
-  const arg_0 = vec2(2.);
+  const arg_0 = vec2(1.5430806348);
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.dxc.hlsl
index df4361d..2585c3d 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_17260e() {
-  float2 res = (1.316957951f).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.fxc.hlsl
index df4361d..2585c3d 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_17260e() {
-  float2 res = (1.316957951f).xx;
+  float2 res = (1.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.glsl
index ccd2b03..cc419fd 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_17260e() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_17260e() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_17260e() {
-  vec2 res = vec2(1.316957951f);
+  vec2 res = vec2(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.msl
index a279c86..1bbb7fd 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_17260e() {
-  float2 res = float2(1.316957951f);
+  float2 res = float2(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.spvasm
index 83ef32a..3604454 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,12 +31,11 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-%float_1_31695795 = OpConstant %float 1.31695795
-         %15 = OpConstantComposite %v2float %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v2float %float_1 %float_1
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %19 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_17260e = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v2float Function %18
@@ -56,12 +55,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_17260e
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_17260e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %acosh_17260e
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %acosh_17260e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.wgsl
index a800387..4d5bc83 100644
--- a/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/17260e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_17260e() {
-  const arg_0 = vec2(2.0);
+  const arg_0 = vec2(1.54308063479999990619);
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl
index 3109164..e288842 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(fa) -> fa
 fn acosh_3433e8() {
-  const arg_0 = 2.;
+  const arg_0 = 1.5430806348;
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.dxc.hlsl
index 4349e35..868a9af 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.fxc.hlsl
index 4349e35..868a9af 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.glsl
index f425b91..b1d4a3a 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.msl
index 24bcb7d..edbcc9a 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_3433e8() {
-  float res = 1.316957951f;
+  float res = 1.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.spvasm
index 8b4981f..31904ab 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 30
+; Bound: 29
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,14 +30,13 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_1_31695795 = OpConstant %float 1.31695795
+    %float_1 = OpConstant %float 1
 %_ptr_Function_float = OpTypePointer Function %float
          %16 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_3433e8 = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_1_31695795
+               OpStore %res %float_1
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %16
@@ -53,12 +52,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %25 = OpLabel
-         %26 = OpFunctionCall %void %acosh_3433e8
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %acosh_3433e8
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_3433e8
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_3433e8
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.wgsl
index f2ce6f3..aab58ea 100644
--- a/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/3433e8.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_3433e8() {
-  const arg_0 = 2.0;
+  const arg_0 = 1.54308063479999990619;
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl b/test/tint/builtins/gen/var/acosh/490aae.wgsl
index 930de7b..5217c72 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<4, fa>) -> vec<4, fa>
 fn acosh_490aae() {
-  const arg_0 = vec4(2.);
+  const arg_0 = vec4(1.5430806348);
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.dxc.hlsl
index ed15f7d..1799078 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_490aae() {
-  float4 res = (1.316957951f).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.fxc.hlsl
index ed15f7d..1799078 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_490aae() {
-  float4 res = (1.316957951f).xxxx;
+  float4 res = (1.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.glsl
index 907f155..b5c0bd3 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_490aae() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_490aae() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_490aae() {
-  vec4 res = vec4(1.316957951f);
+  vec4 res = vec4(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.msl
index d098c04..61dfb50 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_490aae() {
-  float4 res = float4(1.316957951f);
+  float4 res = float4(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.spvasm
index 914b880..4e0f69b 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 31
+; Bound: 30
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -30,11 +30,10 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_1_31695795 = OpConstant %float 1.31695795
-         %14 = OpConstantComposite %v4float %float_1_31695795 %float_1_31695795 %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %17 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_490aae = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v4float Function %5
@@ -54,12 +53,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %26 = OpLabel
-         %27 = OpFunctionCall %void %acosh_490aae
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %acosh_490aae
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %29 = OpLabel
-         %30 = OpFunctionCall %void %acosh_490aae
+         %28 = OpLabel
+         %29 = OpFunctionCall %void %acosh_490aae
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.wgsl
index 11342bd..34a6b89 100644
--- a/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/490aae.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_490aae() {
-  const arg_0 = vec4(2.0);
+  const arg_0 = vec4(1.54308063479999990619);
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl
index 99a67bc..8d46b27 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(vec<2, f16>) -> vec<2, f16>
 fn acosh_5f49d8() {
-  var arg_0 = vec2<f16>(2.h);
+  var arg_0 = vec2<f16>(1.5430806348h);
   var res: vec2<f16> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.dxc.hlsl
index b172fb5b..9969e1b 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_5f49d8() {
-  vector<float16_t, 2> arg_0 = (float16_t(2.0h)).xx;
+  vector<float16_t, 2> arg_0 = (float16_t(1.54296875h)).xx;
   vector<float16_t, 2> res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl
index bed92c5..296064f 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_5f49d8() {
-  f16vec2 arg_0 = f16vec2(2.0hf);
+  f16vec2 arg_0 = f16vec2(1.54296875hf);
   f16vec2 res = tint_acosh(arg_0);
 }
 
@@ -32,7 +32,7 @@
 }
 
 void acosh_5f49d8() {
-  f16vec2 arg_0 = f16vec2(2.0hf);
+  f16vec2 arg_0 = f16vec2(1.54296875hf);
   f16vec2 res = tint_acosh(arg_0);
 }
 
@@ -52,7 +52,7 @@
 }
 
 void acosh_5f49d8() {
-  f16vec2 arg_0 = f16vec2(2.0hf);
+  f16vec2 arg_0 = f16vec2(1.54296875hf);
   f16vec2 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.msl
index ba419ec..27b4676 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_5f49d8() {
-  half2 arg_0 = half2(2.0h);
+  half2 arg_0 = half2(1.54296875h);
   half2 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.spvasm
index fbe9926..11249cb 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.spvasm
@@ -46,8 +46,8 @@
          %21 = OpConstantNull %v2half
        %void = OpTypeVoid
          %24 = OpTypeFunction %void
-%half_0x1p_1 = OpConstant %half 0x1p+1
-         %29 = OpConstantComposite %v2half %half_0x1p_1 %half_0x1p_1
+%half_0x1_8bp_0 = OpConstant %half 0x1.8bp+0
+         %29 = OpConstantComposite %v2half %half_0x1_8bp_0 %half_0x1_8bp_0
 %_ptr_Function_v2half = OpTypePointer Function %v2half
          %35 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.wgsl
index 4935a9a..8643906 100644
--- a/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/5f49d8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_5f49d8() {
-  var arg_0 = vec2<f16>(2.0h);
+  var arg_0 = vec2<f16>(1.54296875h);
   var res : vec2<f16> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl b/test/tint/builtins/gen/var/acosh/640883.wgsl
index de003ff..8f82ed6 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<2, f32>) -> vec<2, f32>
 fn acosh_640883() {
-  var arg_0 = vec2<f32>(2.f);
+  var arg_0 = vec2<f32>(1.5430806348f);
   var res: vec2<f32> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.dxc.hlsl
index a77b0d7..7cfdb66 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_640883() {
-  float2 arg_0 = (2.0f).xx;
+  float2 arg_0 = (1.54308068752288818359f).xx;
   float2 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.fxc.hlsl
index a77b0d7..7cfdb66 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_640883() {
-  float2 arg_0 = (2.0f).xx;
+  float2 arg_0 = (1.54308068752288818359f).xx;
   float2 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl
index e115249..106661e 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 }
 
 void acosh_640883() {
-  vec2 arg_0 = vec2(2.0f);
+  vec2 arg_0 = vec2(1.54308068752288818359f);
   vec2 res = tint_acosh(arg_0);
 }
 
@@ -30,7 +30,7 @@
 }
 
 void acosh_640883() {
-  vec2 arg_0 = vec2(2.0f);
+  vec2 arg_0 = vec2(1.54308068752288818359f);
   vec2 res = tint_acosh(arg_0);
 }
 
@@ -49,7 +49,7 @@
 }
 
 void acosh_640883() {
-  vec2 arg_0 = vec2(2.0f);
+  vec2 arg_0 = vec2(1.54308068752288818359f);
   vec2 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.msl
index 93805a6..a91bd46 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_640883() {
-  float2 arg_0 = float2(2.0f);
+  float2 arg_0 = float2(1.54308068752288818359f);
   float2 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.spvasm
index 5d7285b..35311c8 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.spvasm
@@ -41,8 +41,8 @@
          %20 = OpConstantNull %v2float
        %void = OpTypeVoid
          %23 = OpTypeFunction %void
-    %float_2 = OpConstant %float 2
-         %28 = OpConstantComposite %v2float %float_2 %float_2
+%float_1_54308069 = OpConstant %float 1.54308069
+         %28 = OpConstantComposite %v2float %float_1_54308069 %float_1_54308069
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %34 = OpTypeFunction %v4float
  %tint_acosh = OpFunction %v2float None %9
diff --git a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.wgsl
index c527a54..78d4db8 100644
--- a/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/640883.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_640883() {
-  var arg_0 = vec2<f32>(2.0f);
+  var arg_0 = vec2<f32>(1.54308068752288818359f);
   var res : vec2<f32> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl
index befe6e9..c37498c 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<3, fa>) -> vec<3, fa>
 fn acosh_9f213e() {
-  const arg_0 = vec3(2.);
+  const arg_0 = vec3(1.5430806348);
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.dxc.hlsl
index 15244b5..8f27be1 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_9f213e() {
-  float3 res = (1.316957951f).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.fxc.hlsl
index 15244b5..8f27be1 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void acosh_9f213e() {
-  float3 res = (1.316957951f).xxx;
+  float3 res = (1.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.glsl
index d8b3935..cd02020 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void acosh_9f213e() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void acosh_9f213e() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void acosh_9f213e() {
-  vec3 res = vec3(1.316957951f);
+  vec3 res = vec3(1.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.msl
index 4937d28..fa5ea42 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void acosh_9f213e() {
-  float3 res = float3(1.316957951f);
+  float3 res = float3(1.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.spvasm
index 6b2098f..9ec135e 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.spvasm
@@ -1,7 +1,7 @@
 ; SPIR-V
 ; Version: 1.3
 ; Generator: Google Tint Compiler; 0
-; Bound: 33
+; Bound: 32
 ; Schema: 0
                OpCapability Shader
                OpMemoryModel Logical GLSL450
@@ -31,12 +31,11 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-%float_1_31695795 = OpConstant %float 1.31695795
-         %15 = OpConstantComposite %v3float %float_1_31695795 %float_1_31695795 %float_1_31695795
+    %float_1 = OpConstant %float 1
+         %15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %19 = OpTypeFunction %v4float
-    %float_1 = OpConstant %float 1
 %acosh_9f213e = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_v3float Function %18
@@ -56,12 +55,12 @@
                OpReturn
                OpFunctionEnd
 %fragment_main = OpFunction %void None %9
-         %28 = OpLabel
-         %29 = OpFunctionCall %void %acosh_9f213e
+         %27 = OpLabel
+         %28 = OpFunctionCall %void %acosh_9f213e
                OpReturn
                OpFunctionEnd
 %compute_main = OpFunction %void None %9
-         %31 = OpLabel
-         %32 = OpFunctionCall %void %acosh_9f213e
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %acosh_9f213e
                OpReturn
                OpFunctionEnd
diff --git a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.wgsl
index 651c000..9f4ef83 100644
--- a/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/9f213e.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_9f213e() {
-  const arg_0 = vec3(2.0);
+  const arg_0 = vec3(1.54308063479999990619);
   var res = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl
index ede2b12..8c9057b 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(f16) -> f16
 fn acosh_a37dfe() {
-  var arg_0 = 2.h;
+  var arg_0 = 1.5430806348h;
   var res: f16 = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.dxc.hlsl
index 0b6b943..ad9ca5b 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t arg_0 = float16_t(2.0h);
+  float16_t arg_0 = float16_t(1.54296875h);
   float16_t res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.glsl
index 2a8d3c9..67bcd2f 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t arg_0 = 2.0hf;
+  float16_t arg_0 = 1.54296875hf;
   float16_t res = tint_acosh(arg_0);
 }
 
@@ -32,7 +32,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t arg_0 = 2.0hf;
+  float16_t arg_0 = 1.54296875hf;
   float16_t res = tint_acosh(arg_0);
 }
 
@@ -52,7 +52,7 @@
 }
 
 void acosh_a37dfe() {
-  float16_t arg_0 = 2.0hf;
+  float16_t arg_0 = 1.54296875hf;
   float16_t res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.msl
index 08574f0..f1fe88c 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_a37dfe() {
-  half arg_0 = 2.0h;
+  half arg_0 = 1.54296875h;
   half res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.spvasm
index 769b3f7..eb82699 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.spvasm
@@ -43,7 +43,7 @@
          %18 = OpConstantNull %half
        %void = OpTypeVoid
          %21 = OpTypeFunction %void
-%half_0x1p_1 = OpConstant %half 0x1p+1
+%half_0x1_8bp_0 = OpConstant %half 0x1.8bp+0
 %_ptr_Function_half = OpTypePointer Function %half
          %31 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
@@ -59,7 +59,7 @@
          %24 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_half Function %18
         %res = OpVariable %_ptr_Function_half Function %18
-               OpStore %arg_0 %half_0x1p_1
+               OpStore %arg_0 %half_0x1_8bp_0
          %29 = OpLoad %half %arg_0
          %28 = OpFunctionCall %half %tint_acosh %29
                OpStore %res %28
diff --git a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.wgsl
index 7f8bd50..d826a72 100644
--- a/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/a37dfe.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_a37dfe() {
-  var arg_0 = 2.0h;
+  var arg_0 = 1.54296875h;
   var res : f16 = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl
index a757916..efa3b30 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<4, f32>) -> vec<4, f32>
 fn acosh_d51ccb() {
-  var arg_0 = vec4<f32>(2.f);
+  var arg_0 = vec4<f32>(1.5430806348f);
   var res: vec4<f32> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.dxc.hlsl
index 2282730..ed07389 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_d51ccb() {
-  float4 arg_0 = (2.0f).xxxx;
+  float4 arg_0 = (1.54308068752288818359f).xxxx;
   float4 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.fxc.hlsl
index 2282730..ed07389 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_d51ccb() {
-  float4 arg_0 = (2.0f).xxxx;
+  float4 arg_0 = (1.54308068752288818359f).xxxx;
   float4 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl
index fe7a0a5..c9981d6 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 }
 
 void acosh_d51ccb() {
-  vec4 arg_0 = vec4(2.0f);
+  vec4 arg_0 = vec4(1.54308068752288818359f);
   vec4 res = tint_acosh(arg_0);
 }
 
@@ -30,7 +30,7 @@
 }
 
 void acosh_d51ccb() {
-  vec4 arg_0 = vec4(2.0f);
+  vec4 arg_0 = vec4(1.54308068752288818359f);
   vec4 res = tint_acosh(arg_0);
 }
 
@@ -49,7 +49,7 @@
 }
 
 void acosh_d51ccb() {
-  vec4 arg_0 = vec4(2.0f);
+  vec4 arg_0 = vec4(1.54308068752288818359f);
   vec4 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.msl
index 669a9f2..74fc9cf 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_d51ccb() {
-  float4 arg_0 = float4(2.0f);
+  float4 arg_0 = float4(1.54308068752288818359f);
   float4 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.spvasm
index 63302db..711d3b4 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.spvasm
@@ -39,8 +39,8 @@
      %v4bool = OpTypeVector %bool 4
        %void = OpTypeVoid
          %21 = OpTypeFunction %void
-    %float_2 = OpConstant %float 2
-         %26 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
+%float_1_54308069 = OpConstant %float 1.54308069
+         %26 = OpConstantComposite %v4float %float_1_54308069 %float_1_54308069 %float_1_54308069 %float_1_54308069
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %32 = OpTypeFunction %v4float
  %tint_acosh = OpFunction %v4float None %9
diff --git a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.wgsl
index 8e9b29d..3807b09 100644
--- a/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/d51ccb.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_d51ccb() {
-  var arg_0 = vec4<f32>(2.0f);
+  var arg_0 = vec4<f32>(1.54308068752288818359f);
   var res : vec4<f32> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl
index 9c20dae..9586527 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(vec<4, f16>) -> vec<4, f16>
 fn acosh_de60d8() {
-  var arg_0 = vec4<f16>(2.h);
+  var arg_0 = vec4<f16>(1.5430806348h);
   var res: vec4<f16> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.dxc.hlsl
index c35d1fe..4e81214 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_de60d8() {
-  vector<float16_t, 4> arg_0 = (float16_t(2.0h)).xxxx;
+  vector<float16_t, 4> arg_0 = (float16_t(1.54296875h)).xxxx;
   vector<float16_t, 4> res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl
index 43dd4fc..51ccc00 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_de60d8() {
-  f16vec4 arg_0 = f16vec4(2.0hf);
+  f16vec4 arg_0 = f16vec4(1.54296875hf);
   f16vec4 res = tint_acosh(arg_0);
 }
 
@@ -32,7 +32,7 @@
 }
 
 void acosh_de60d8() {
-  f16vec4 arg_0 = f16vec4(2.0hf);
+  f16vec4 arg_0 = f16vec4(1.54296875hf);
   f16vec4 res = tint_acosh(arg_0);
 }
 
@@ -52,7 +52,7 @@
 }
 
 void acosh_de60d8() {
-  f16vec4 arg_0 = f16vec4(2.0hf);
+  f16vec4 arg_0 = f16vec4(1.54296875hf);
   f16vec4 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.msl
index 0d01611..175621f 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_de60d8() {
-  half4 arg_0 = half4(2.0h);
+  half4 arg_0 = half4(1.54296875h);
   half4 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.spvasm
index 8ca035a..24431be 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.spvasm
@@ -46,8 +46,8 @@
          %21 = OpConstantNull %v4half
        %void = OpTypeVoid
          %24 = OpTypeFunction %void
-%half_0x1p_1 = OpConstant %half 0x1p+1
-         %29 = OpConstantComposite %v4half %half_0x1p_1 %half_0x1p_1 %half_0x1p_1 %half_0x1p_1
+%half_0x1_8bp_0 = OpConstant %half 0x1.8bp+0
+         %29 = OpConstantComposite %v4half %half_0x1_8bp_0 %half_0x1_8bp_0 %half_0x1_8bp_0 %half_0x1_8bp_0
 %_ptr_Function_v4half = OpTypePointer Function %v4half
          %35 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.wgsl
index e58782f..d281060 100644
--- a/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/de60d8.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_de60d8() {
-  var arg_0 = vec4<f16>(2.0h);
+  var arg_0 = vec4<f16>(1.54296875h);
   var res : vec4<f16> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl
index e920594..5f0312e 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(vec<3, f32>) -> vec<3, f32>
 fn acosh_e38f5c() {
-  var arg_0 = vec3<f32>(2.f);
+  var arg_0 = vec3<f32>(1.5430806348f);
   var res: vec3<f32> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.dxc.hlsl
index c5917cd..be4b540 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_e38f5c() {
-  float3 arg_0 = (2.0f).xxx;
+  float3 arg_0 = (1.54308068752288818359f).xxx;
   float3 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.fxc.hlsl
index c5917cd..be4b540 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_e38f5c() {
-  float3 arg_0 = (2.0f).xxx;
+  float3 arg_0 = (1.54308068752288818359f).xxx;
   float3 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl
index 12b8b4e..ec99a2d 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 }
 
 void acosh_e38f5c() {
-  vec3 arg_0 = vec3(2.0f);
+  vec3 arg_0 = vec3(1.54308068752288818359f);
   vec3 res = tint_acosh(arg_0);
 }
 
@@ -30,7 +30,7 @@
 }
 
 void acosh_e38f5c() {
-  vec3 arg_0 = vec3(2.0f);
+  vec3 arg_0 = vec3(1.54308068752288818359f);
   vec3 res = tint_acosh(arg_0);
 }
 
@@ -49,7 +49,7 @@
 }
 
 void acosh_e38f5c() {
-  vec3 arg_0 = vec3(2.0f);
+  vec3 arg_0 = vec3(1.54308068752288818359f);
   vec3 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.msl
index 8f1e1af..f31abf1 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_e38f5c() {
-  float3 arg_0 = float3(2.0f);
+  float3 arg_0 = float3(1.54308068752288818359f);
   float3 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.spvasm
index b1aa79b..ece41d9 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.spvasm
@@ -41,8 +41,8 @@
          %20 = OpConstantNull %v3float
        %void = OpTypeVoid
          %23 = OpTypeFunction %void
-    %float_2 = OpConstant %float 2
-         %28 = OpConstantComposite %v3float %float_2 %float_2 %float_2
+%float_1_54308069 = OpConstant %float 1.54308069
+         %28 = OpConstantComposite %v3float %float_1_54308069 %float_1_54308069 %float_1_54308069
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %34 = OpTypeFunction %v4float
  %tint_acosh = OpFunction %v3float None %9
diff --git a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.wgsl
index 6cdc354..3be489e 100644
--- a/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/e38f5c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_e38f5c() {
-  var arg_0 = vec3<f32>(2.0f);
+  var arg_0 = vec3<f32>(1.54308068752288818359f);
   var res : vec3<f32> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl
index 6672ba8..47c2385 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl
@@ -23,7 +23,7 @@
 
 // fn acosh(f32) -> f32
 fn acosh_ecf2d1() {
-  var arg_0 = 2.f;
+  var arg_0 = 1.5430806348f;
   var res: f32 = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.dxc.hlsl
index 6e804ef..548d620 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_ecf2d1() {
-  float arg_0 = 2.0f;
+  float arg_0 = 1.54308068752288818359f;
   float res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.fxc.hlsl
index 6e804ef..548d620 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_ecf2d1() {
-  float arg_0 = 2.0f;
+  float arg_0 = 1.54308068752288818359f;
   float res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.glsl
index 75536d3..df6d4ca 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.glsl
@@ -5,7 +5,7 @@
 }
 
 void acosh_ecf2d1() {
-  float arg_0 = 2.0f;
+  float arg_0 = 1.54308068752288818359f;
   float res = tint_acosh(arg_0);
 }
 
@@ -30,7 +30,7 @@
 }
 
 void acosh_ecf2d1() {
-  float arg_0 = 2.0f;
+  float arg_0 = 1.54308068752288818359f;
   float res = tint_acosh(arg_0);
 }
 
@@ -49,7 +49,7 @@
 }
 
 void acosh_ecf2d1() {
-  float arg_0 = 2.0f;
+  float arg_0 = 1.54308068752288818359f;
   float res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.msl
index aa7bb3e..356e2e2 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_ecf2d1() {
-  float arg_0 = 2.0f;
+  float arg_0 = 1.54308068752288818359f;
   float res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.spvasm
index a526d71..fc38b3b 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.spvasm
@@ -37,7 +37,7 @@
        %bool = OpTypeBool
        %void = OpTypeVoid
          %19 = OpTypeFunction %void
-    %float_2 = OpConstant %float 2
+%float_1_54308069 = OpConstant %float 1.54308069
 %_ptr_Function_float = OpTypePointer Function %float
          %29 = OpTypeFunction %v4float
  %tint_acosh = OpFunction %float None %9
@@ -52,7 +52,7 @@
          %22 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_float Function %8
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %arg_0 %float_2
+               OpStore %arg_0 %float_1_54308069
          %27 = OpLoad %float %arg_0
          %26 = OpFunctionCall %float %tint_acosh %27
                OpStore %res %26
diff --git a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.wgsl
index ad405a0..422b069 100644
--- a/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/ecf2d1.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn acosh_ecf2d1() {
-  var arg_0 = 2.0f;
+  var arg_0 = 1.54308068752288818359f;
   var res : f32 = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl
index 374b14f..ad936fa 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl
@@ -25,7 +25,7 @@
 
 // fn acosh(vec<3, f16>) -> vec<3, f16>
 fn acosh_f56574() {
-  var arg_0 = vec3<f16>(2.h);
+  var arg_0 = vec3<f16>(1.5430806348h);
   var res: vec3<f16> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.dxc.hlsl
index ab9c629..c7f7ea6 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 }
 
 void acosh_f56574() {
-  vector<float16_t, 3> arg_0 = (float16_t(2.0h)).xxx;
+  vector<float16_t, 3> arg_0 = (float16_t(1.54296875h)).xxx;
   vector<float16_t, 3> res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl
index cf6d5b1..e3b4cec 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 }
 
 void acosh_f56574() {
-  f16vec3 arg_0 = f16vec3(2.0hf);
+  f16vec3 arg_0 = f16vec3(1.54296875hf);
   f16vec3 res = tint_acosh(arg_0);
 }
 
@@ -32,7 +32,7 @@
 }
 
 void acosh_f56574() {
-  f16vec3 arg_0 = f16vec3(2.0hf);
+  f16vec3 arg_0 = f16vec3(1.54296875hf);
   f16vec3 res = tint_acosh(arg_0);
 }
 
@@ -52,7 +52,7 @@
 }
 
 void acosh_f56574() {
-  f16vec3 arg_0 = f16vec3(2.0hf);
+  f16vec3 arg_0 = f16vec3(1.54296875hf);
   f16vec3 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.msl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.msl
index 4882055..67767ed 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.msl
@@ -6,7 +6,7 @@
 }
 
 void acosh_f56574() {
-  half3 arg_0 = half3(2.0h);
+  half3 arg_0 = half3(1.54296875h);
   half3 res = tint_acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.spvasm b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.spvasm
index 28dd4e4..68a5b3e 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.spvasm
@@ -46,8 +46,8 @@
          %21 = OpConstantNull %v3half
        %void = OpTypeVoid
          %24 = OpTypeFunction %void
-%half_0x1p_1 = OpConstant %half 0x1p+1
-         %29 = OpConstantComposite %v3half %half_0x1p_1 %half_0x1p_1 %half_0x1p_1
+%half_0x1_8bp_0 = OpConstant %half 0x1.8bp+0
+         %29 = OpConstantComposite %v3half %half_0x1_8bp_0 %half_0x1_8bp_0 %half_0x1_8bp_0
 %_ptr_Function_v3half = OpTypePointer Function %v3half
          %35 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.wgsl b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.wgsl
index 79fa778..d187d0d 100644
--- a/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/acosh/f56574.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn acosh_f56574() {
-  var arg_0 = vec3<f16>(2.0h);
+  var arg_0 = vec3<f16>(1.54296875h);
   var res : vec3<f16> = acosh(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.dxc.hlsl
index 67d9bd3..a8e7300 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_064953() {
-  float4 arg_0 = (0.47942555f).xxxx;
+  float4 arg_0 = (0.47942554950714111328f).xxxx;
   float4 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.fxc.hlsl
index 67d9bd3..a8e7300 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asin_064953() {
-  float4 arg_0 = (0.47942555f).xxxx;
+  float4 arg_0 = (0.47942554950714111328f).xxxx;
   float4 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.glsl
index 68495fb..13fad50 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asin_064953() {
-  vec4 arg_0 = vec4(0.47942555f);
+  vec4 arg_0 = vec4(0.47942554950714111328f);
   vec4 res = asin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void asin_064953() {
-  vec4 arg_0 = vec4(0.47942555f);
+  vec4 arg_0 = vec4(0.47942554950714111328f);
   vec4 res = asin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void asin_064953() {
-  vec4 arg_0 = vec4(0.47942555f);
+  vec4 arg_0 = vec4(0.47942554950714111328f);
   vec4 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.msl
index 91f3fe3..0d3926d 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_064953() {
-  float4 arg_0 = float4(0.47942555f);
+  float4 arg_0 = float4(0.47942554950714111328f);
   float4 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl
index 61347d7..daa31fc 100644
--- a/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/064953.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_064953() {
-  var arg_0 = vec4<f32>(0.47942555f);
+  var arg_0 = vec4<f32>(0.47942554950714111328f);
   var res : vec4<f32> = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.wgsl
index a90be4a..4afdad3 100644
--- a/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/0bac07.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_0bac07() {
-  const arg_0 = vec3(0.479425538604);
+  const arg_0 = vec3(0.4794255386040000011);
   var res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.dxc.hlsl
index e34b3ab..7910bc3 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_11dfda() {
-  float16_t arg_0 = float16_t(0.479248047h);
+  float16_t arg_0 = float16_t(0.479248046875h);
   float16_t res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.glsl
index 4100486..466612a 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_11dfda() {
-  float16_t arg_0 = 0.479248047hf;
+  float16_t arg_0 = 0.479248046875hf;
   float16_t res = asin(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void asin_11dfda() {
-  float16_t arg_0 = 0.479248047hf;
+  float16_t arg_0 = 0.479248046875hf;
   float16_t res = asin(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_11dfda() {
-  float16_t arg_0 = 0.479248047hf;
+  float16_t arg_0 = 0.479248046875hf;
   float16_t res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.msl
index 785eafe..ec03ff2 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_11dfda() {
-  half arg_0 = 0.479248047h;
+  half arg_0 = 0.479248046875h;
   half res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.wgsl
index 8e37925..4345a07 100644
--- a/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/11dfda.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_11dfda() {
-  var arg_0 = 0.479248047h;
+  var arg_0 = 0.479248046875h;
   var res : f16 = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.dxc.hlsl
index 201463d..d29c74a 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_2d8e29() {
-  vector<float16_t, 3> arg_0 = (float16_t(0.479248047h)).xxx;
+  vector<float16_t, 3> arg_0 = (float16_t(0.479248046875h)).xxx;
   vector<float16_t, 3> res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.glsl
index e554dff..84c406a 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_2d8e29() {
-  f16vec3 arg_0 = f16vec3(0.479248047hf);
+  f16vec3 arg_0 = f16vec3(0.479248046875hf);
   f16vec3 res = asin(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void asin_2d8e29() {
-  f16vec3 arg_0 = f16vec3(0.479248047hf);
+  f16vec3 arg_0 = f16vec3(0.479248046875hf);
   f16vec3 res = asin(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_2d8e29() {
-  f16vec3 arg_0 = f16vec3(0.479248047hf);
+  f16vec3 arg_0 = f16vec3(0.479248046875hf);
   f16vec3 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.msl
index d4e5c78..cebd4dc1 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_2d8e29() {
-  half3 arg_0 = half3(0.479248047h);
+  half3 arg_0 = half3(0.479248046875h);
   half3 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.wgsl
index fb3320d..a97b110 100644
--- a/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/2d8e29.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_2d8e29() {
-  var arg_0 = vec3<f16>(0.479248047h);
+  var arg_0 = vec3<f16>(0.479248046875h);
   var res : vec3<f16> = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.dxc.hlsl
index 0d3e91c..344fe0f 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_3cfbd4() {
-  vector<float16_t, 4> arg_0 = (float16_t(0.479248047h)).xxxx;
+  vector<float16_t, 4> arg_0 = (float16_t(0.479248046875h)).xxxx;
   vector<float16_t, 4> res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.glsl
index d479eb7..6d7ce9f 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_3cfbd4() {
-  f16vec4 arg_0 = f16vec4(0.479248047hf);
+  f16vec4 arg_0 = f16vec4(0.479248046875hf);
   f16vec4 res = asin(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void asin_3cfbd4() {
-  f16vec4 arg_0 = f16vec4(0.479248047hf);
+  f16vec4 arg_0 = f16vec4(0.479248046875hf);
   f16vec4 res = asin(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_3cfbd4() {
-  f16vec4 arg_0 = f16vec4(0.479248047hf);
+  f16vec4 arg_0 = f16vec4(0.479248046875hf);
   f16vec4 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.msl
index c26ade5..2b0e213 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_3cfbd4() {
-  half4 arg_0 = half4(0.479248047h);
+  half4 arg_0 = half4(0.479248046875h);
   half4 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.wgsl
index 0366545..19fc5a4 100644
--- a/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/3cfbd4.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_3cfbd4() {
-  var arg_0 = vec4<f16>(0.479248047h);
+  var arg_0 = vec4<f16>(0.479248046875h);
   var res : vec4<f16> = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.wgsl
index 1a14db8..dd77591a 100644
--- a/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/64bb1f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_64bb1f() {
-  const arg_0 = vec4(0.479425538604);
+  const arg_0 = vec4(0.4794255386040000011);
   var res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.dxc.hlsl
index ec5dc28..4324a5e 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_7b6a44() {
-  float2 arg_0 = (0.47942555f).xx;
+  float2 arg_0 = (0.47942554950714111328f).xx;
   float2 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.fxc.hlsl
index ec5dc28..4324a5e 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asin_7b6a44() {
-  float2 arg_0 = (0.47942555f).xx;
+  float2 arg_0 = (0.47942554950714111328f).xx;
   float2 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.glsl
index e98152a..fe7bcd3 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asin_7b6a44() {
-  vec2 arg_0 = vec2(0.47942555f);
+  vec2 arg_0 = vec2(0.47942554950714111328f);
   vec2 res = asin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void asin_7b6a44() {
-  vec2 arg_0 = vec2(0.47942555f);
+  vec2 arg_0 = vec2(0.47942554950714111328f);
   vec2 res = asin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void asin_7b6a44() {
-  vec2 arg_0 = vec2(0.47942555f);
+  vec2 arg_0 = vec2(0.47942554950714111328f);
   vec2 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.msl
index 8562a86..ff9eb5e 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_7b6a44() {
-  float2 arg_0 = float2(0.47942555f);
+  float2 arg_0 = float2(0.47942554950714111328f);
   float2 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl
index 8adbc85..aea6a8b 100644
--- a/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/7b6a44.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_7b6a44() {
-  var arg_0 = vec2<f32>(0.47942555f);
+  var arg_0 = vec2<f32>(0.47942554950714111328f);
   var res : vec2<f32> = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.dxc.hlsl
index 6f5cc30..5224b56 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_8cd9c9() {
-  float3 arg_0 = (0.47942555f).xxx;
+  float3 arg_0 = (0.47942554950714111328f).xxx;
   float3 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.fxc.hlsl
index 6f5cc30..5224b56 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asin_8cd9c9() {
-  float3 arg_0 = (0.47942555f).xxx;
+  float3 arg_0 = (0.47942554950714111328f).xxx;
   float3 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.glsl
index 5c76d6d..30d9571 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asin_8cd9c9() {
-  vec3 arg_0 = vec3(0.47942555f);
+  vec3 arg_0 = vec3(0.47942554950714111328f);
   vec3 res = asin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void asin_8cd9c9() {
-  vec3 arg_0 = vec3(0.47942555f);
+  vec3 arg_0 = vec3(0.47942554950714111328f);
   vec3 res = asin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void asin_8cd9c9() {
-  vec3 arg_0 = vec3(0.47942555f);
+  vec3 arg_0 = vec3(0.47942554950714111328f);
   vec3 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.msl
index 33a3914..4c4ee11 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_8cd9c9() {
-  float3 arg_0 = float3(0.47942555f);
+  float3 arg_0 = float3(0.47942554950714111328f);
   float3 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl
index a63fc5c..7616b9a 100644
--- a/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/8cd9c9.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_8cd9c9() {
-  var arg_0 = vec3<f32>(0.47942555f);
+  var arg_0 = vec3<f32>(0.47942554950714111328f);
   var res : vec3<f32> = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.wgsl
index c6040e9..d266636 100644
--- a/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/a5dd88.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_a5dd88() {
-  const arg_0 = vec2(0.479425538604);
+  const arg_0 = vec2(0.4794255386040000011);
   var res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.wgsl
index c26749c..60bc71c 100644
--- a/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/a6d73a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_a6d73a() {
-  const arg_0 = 0.479425538604;
+  const arg_0 = 0.4794255386040000011;
   var res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.dxc.hlsl
index 0613a31..e15455e 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_b4aced() {
-  vector<float16_t, 2> arg_0 = (float16_t(0.479248047h)).xx;
+  vector<float16_t, 2> arg_0 = (float16_t(0.479248046875h)).xx;
   vector<float16_t, 2> res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.glsl
index bb6ffad..3886825 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_b4aced() {
-  f16vec2 arg_0 = f16vec2(0.479248047hf);
+  f16vec2 arg_0 = f16vec2(0.479248046875hf);
   f16vec2 res = asin(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void asin_b4aced() {
-  f16vec2 arg_0 = f16vec2(0.479248047hf);
+  f16vec2 arg_0 = f16vec2(0.479248046875hf);
   f16vec2 res = asin(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void asin_b4aced() {
-  f16vec2 arg_0 = f16vec2(0.479248047hf);
+  f16vec2 arg_0 = f16vec2(0.479248046875hf);
   f16vec2 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.msl
index cdb23f6..9557b78 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_b4aced() {
-  half2 arg_0 = half2(0.479248047h);
+  half2 arg_0 = half2(0.479248046875h);
   half2 res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.wgsl
index f493af6..437847a 100644
--- a/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/b4aced.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn asin_b4aced() {
-  var arg_0 = vec2<f16>(0.479248047h);
+  var arg_0 = vec2<f16>(0.479248046875h);
   var res : vec2<f16> = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.dxc.hlsl
index ce1128b..e89c04c 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asin_c0c272() {
-  float arg_0 = 0.47942555f;
+  float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.fxc.hlsl
index ce1128b..e89c04c 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asin_c0c272() {
-  float arg_0 = 0.47942555f;
+  float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.glsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.glsl
index 8b7c97e..c1a3702 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asin_c0c272() {
-  float arg_0 = 0.47942555f;
+  float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void asin_c0c272() {
-  float arg_0 = 0.47942555f;
+  float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void asin_c0c272() {
-  float arg_0 = 0.47942555f;
+  float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.msl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.msl
index c907ded..2c7a891 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asin_c0c272() {
-  float arg_0 = 0.47942555f;
+  float arg_0 = 0.47942554950714111328f;
   float res = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl
index e31ccd9..1cb253d 100644
--- a/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/asin/c0c272.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn asin_c0c272() {
-  var arg_0 = 0.47942555f;
+  var arg_0 = 0.47942554950714111328f;
   var res : f32 = asin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.dxc.hlsl
index aa8bcb9..01a4bd5 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_16b543() {
-  float2 res = (0.881373584f).xx;
+  float2 res = (0.88137358427047729492f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.fxc.hlsl
index aa8bcb9..01a4bd5 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_16b543() {
-  float2 res = (0.881373584f).xx;
+  float2 res = (0.88137358427047729492f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.glsl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.glsl
index bccd4b5..f714432 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_16b543() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_16b543() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_16b543() {
-  vec2 res = vec2(0.881373584f);
+  vec2 res = vec2(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.msl b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.msl
index f4b3d6a..4a5e1a7 100644
--- a/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asinh/16b543.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_16b543() {
-  float2 res = float2(0.881373584f);
+  float2 res = float2(0.88137358427047729492f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.dxc.hlsl
index 8b08b8c..10d6034 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.fxc.hlsl
index 8b08b8c..10d6034 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.glsl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.glsl
index dd4be60..e2e9a76 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.msl b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.msl
index a391e66..f2634fd 100644
--- a/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asinh/180015.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_180015() {
-  float res = 0.881373584f;
+  float res = 0.88137358427047729492f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.dxc.hlsl
index 7352b92..1a8827f 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_51079e() {
-  float3 res = (0.881373584f).xxx;
+  float3 res = (0.88137358427047729492f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.fxc.hlsl
index 7352b92..1a8827f 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_51079e() {
-  float3 res = (0.881373584f).xxx;
+  float3 res = (0.88137358427047729492f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.glsl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.glsl
index 00b7fd0..7af712f 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_51079e() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_51079e() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_51079e() {
-  vec3 res = vec3(0.881373584f);
+  vec3 res = vec3(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.msl b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.msl
index 94fd3a3..3df4a6b 100644
--- a/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asinh/51079e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_51079e() {
-  float3 res = float3(0.881373584f);
+  float3 res = float3(0.88137358427047729492f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.dxc.hlsl
index b15efcd..dbf7249 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_cf8603() {
-  float4 res = (0.881373584f).xxxx;
+  float4 res = (0.88137358427047729492f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.fxc.hlsl
index b15efcd..dbf7249 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void asinh_cf8603() {
-  float4 res = (0.881373584f).xxxx;
+  float4 res = (0.88137358427047729492f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.glsl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.glsl
index 11087b2..e60d6d8 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void asinh_cf8603() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void asinh_cf8603() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void asinh_cf8603() {
-  vec4 res = vec4(0.881373584f);
+  vec4 res = vec4(0.88137358427047729492f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.msl b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.msl
index 61a56b9..e1a1d53 100644
--- a/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/asinh/cf8603.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void asinh_cf8603() {
-  float4 res = float4(0.881373584f);
+  float4 res = float4(0.88137358427047729492f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.dxc.hlsl
index bea5d88..a7298c6 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_5ca7b8() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.fxc.hlsl
index bea5d88..a7298c6 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_5ca7b8() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.glsl
index e816df0..c79c72f 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_5ca7b8() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_5ca7b8() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_5ca7b8() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.msl b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.msl
index d2a1cc8..8629789 100644
--- a/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan/5ca7b8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_5ca7b8() {
-  float2 res = float2(0.785398185f);
+  float2 res = float2(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.dxc.hlsl
index f7c75ea..2db8ef0 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_749e1b() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.fxc.hlsl
index f7c75ea..2db8ef0 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_749e1b() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.glsl
index e596e37..049397c 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_749e1b() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_749e1b() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_749e1b() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.msl b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.msl
index 4ee66a7..0a495f1 100644
--- a/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan/749e1b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_749e1b() {
-  float3 res = float3(0.785398185f);
+  float3 res = float3(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.dxc.hlsl
index 173246a..e193179 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.fxc.hlsl
index 173246a..e193179 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.glsl
index 952e56b..3cc4ed2 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.msl b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.msl
index 12934a2..f007b24 100644
--- a/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan/7a2a75.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_7a2a75() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.dxc.hlsl
index 96e0256..e6dfad9 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan_d17fb2() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.fxc.hlsl
index 96e0256..e6dfad9 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan_d17fb2() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.glsl
index 93ead11..3ea638e 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan_d17fb2() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan_d17fb2() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan_d17fb2() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl
index d74bfda..b0029f9 100644
--- a/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan/d17fb2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan_d17fb2() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl
index dce0209..5af1f00 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl
index dce0209..5af1f00 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl
index 4919787..b4afab7 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl
index fb91e8d..5d601c5 100644
--- a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_034ace() {
-  float res = 0.785398185f;
+  float res = 0.78539818525314331055f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl
index 71f64a4..6251bb1 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_3c2865() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl
index 71f64a4..6251bb1 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_3c2865() {
-  float3 res = (0.785398185f).xxx;
+  float3 res = (0.78539818525314331055f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl
index b2ebe38..40e2aaa 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_3c2865() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_3c2865() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_3c2865() {
-  vec3 res = vec3(0.785398185f);
+  vec3 res = vec3(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl
index 867108a..c6528f6 100644
--- a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_3c2865() {
-  float3 res = float3(0.785398185f);
+  float3 res = float3(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl
index 93f2273..2401e58 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c19683() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl
index 93f2273..2401e58 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c19683() {
-  float2 res = (0.785398185f).xx;
+  float2 res = (0.78539818525314331055f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl
index d823d61..dc495d7 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_c19683() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_c19683() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_c19683() {
-  vec2 res = vec2(0.785398185f);
+  vec2 res = vec2(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl
index 3af76c7..82ea445 100644
--- a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_c19683() {
-  float2 res = float2(0.785398185f);
+  float2 res = float2(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl
index c666d69..63f0862 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c4be45() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl
index c666d69..63f0862 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atan2_c4be45() {
-  float4 res = (0.785398185f).xxxx;
+  float4 res = (0.78539818525314331055f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl
index 2d65f82..427f0a0 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atan2_c4be45() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atan2_c4be45() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atan2_c4be45() {
-  vec4 res = vec4(0.785398185f);
+  vec4 res = vec4(0.78539818525314331055f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl
index 89fe4fa..8f638ca 100644
--- a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atan2_c4be45() {
-  float4 res = float4(0.785398185f);
+  float4 res = float4(0.78539818525314331055f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.dxc.hlsl
index c309e30..bf921e0 100644
--- a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_70d5bd() {
-  float2 res = (0.549306154f).xx;
+  float2 res = (0.54930615425109863281f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.fxc.hlsl
index c309e30..bf921e0 100644
--- a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_70d5bd() {
-  float2 res = (0.549306154f).xx;
+  float2 res = (0.54930615425109863281f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.glsl
index 4810f62..2fce2e4 100644
--- a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_70d5bd() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_70d5bd() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_70d5bd() {
-  vec2 res = vec2(0.549306154f);
+  vec2 res = vec2(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.msl b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.msl
index 57452f4..811ff35 100644
--- a/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atanh/70d5bd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_70d5bd() {
-  float2 res = float2(0.549306154f);
+  float2 res = float2(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.dxc.hlsl
index 001e7db..9493ebf 100644
--- a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_7f2874() {
-  float3 res = (0.549306154f).xxx;
+  float3 res = (0.54930615425109863281f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.fxc.hlsl
index 001e7db..9493ebf 100644
--- a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_7f2874() {
-  float3 res = (0.549306154f).xxx;
+  float3 res = (0.54930615425109863281f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.glsl
index 1de983e..a28b2e9 100644
--- a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_7f2874() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_7f2874() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_7f2874() {
-  vec3 res = vec3(0.549306154f);
+  vec3 res = vec3(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.msl b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.msl
index e93df5b..f4dcc17 100644
--- a/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atanh/7f2874.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_7f2874() {
-  float3 res = float3(0.549306154f);
+  float3 res = float3(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.dxc.hlsl
index 8f168ec..39101cd 100644
--- a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.fxc.hlsl
index 8f168ec..39101cd 100644
--- a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.glsl
index 0ce5962..86ca443 100644
--- a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.msl b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.msl
index 966c056..5d78f52 100644
--- a/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atanh/c5dc32.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_c5dc32() {
-  float res = 0.549306154f;
+  float res = 0.54930615425109863281f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.dxc.hlsl
index a1d65a3..dbd3c2d 100644
--- a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_e431bb() {
-  float4 res = (0.549306154f).xxxx;
+  float4 res = (0.54930615425109863281f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.fxc.hlsl
index a1d65a3..dbd3c2d 100644
--- a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void atanh_e431bb() {
-  float4 res = (0.549306154f).xxxx;
+  float4 res = (0.54930615425109863281f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.glsl b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.glsl
index 240bd01..28ea06f 100644
--- a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void atanh_e431bb() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void atanh_e431bb() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void atanh_e431bb() {
-  vec4 res = vec4(0.549306154f);
+  vec4 res = vec4(0.54930615425109863281f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.msl b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.msl
index caa1898..f13663a 100644
--- a/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/atanh/e431bb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void atanh_e431bb() {
-  float4 res = float4(0.549306154f);
+  float4 res = float4(0.54930615425109863281f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.dxc.hlsl
index a434094..83247a1 100644
--- a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float4 tint_degrees(float4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_0d170c() {
diff --git a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.fxc.hlsl
index a434094..83247a1 100644
--- a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float4 tint_degrees(float4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_0d170c() {
diff --git a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.glsl
index eaf2c76..157c71b 100644
--- a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec4 tint_degrees(vec4 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 vec4 tint_degrees(vec4 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 vec4 tint_degrees(vec4 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.msl
index a43d3dd..7b84a39 100644
--- a/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/0d170c.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float4 tint_degrees(float4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_0d170c() {
diff --git a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.dxc.hlsl
index d4345b0..efc3f4b 100644
--- a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float2 tint_degrees(float2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_1ad5df() {
diff --git a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.fxc.hlsl
index d4345b0..efc3f4b 100644
--- a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float2 tint_degrees(float2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_1ad5df() {
diff --git a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.glsl
index d4a56ed..223d36b 100644
--- a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec2 tint_degrees(vec2 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 vec2 tint_degrees(vec2 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 vec2 tint_degrees(vec2 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.msl
index 22bdbb2..3aed1e1 100644
--- a/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/1ad5df.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float2 tint_degrees(float2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_1ad5df() {
diff --git a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.dxc.hlsl
index c32b82b..44e1d00 100644
--- a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float3 tint_degrees(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_2af623() {
diff --git a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.fxc.hlsl
index c32b82b..44e1d00 100644
--- a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float3 tint_degrees(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_2af623() {
diff --git a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.glsl
index 41f8cc4..f8f8766 100644
--- a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec3 tint_degrees(vec3 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 vec3 tint_degrees(vec3 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 vec3 tint_degrees(vec3 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.msl
index befd29a..1b34ae4 100644
--- a/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/2af623.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float3 tint_degrees(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_2af623() {
diff --git a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.dxc.hlsl
index 5fddbd7..d11272f 100644
--- a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 vector<float16_t, 4> tint_degrees(vector<float16_t, 4> param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_3055d3() {
diff --git a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.glsl
index 9268aac..c510a02 100644
--- a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec4 tint_degrees(f16vec4 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 f16vec4 tint_degrees(f16vec4 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec4 tint_degrees(f16vec4 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.msl
index c1f4067..8fdf025 100644
--- a/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/3055d3.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half4 tint_degrees(half4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_3055d3() {
diff --git a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.dxc.hlsl
index 7482ab6..dc451cc 100644
--- a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_51f705() {
diff --git a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.fxc.hlsl
index 7482ab6..dc451cc 100644
--- a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_51f705() {
diff --git a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.glsl
index 26c1436..accb07d 100644
--- a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.msl
index c46fd92..ede7730 100644
--- a/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/51f705.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float tint_degrees(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_51f705() {
diff --git a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.dxc.hlsl
index 650bf8d..36c3263 100644
--- a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float16_t tint_degrees(float16_t param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_5e9805() {
diff --git a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.glsl
index 1eded00..fd062d1 100644
--- a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 float16_t tint_degrees(float16_t param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 float16_t tint_degrees(float16_t param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 float16_t tint_degrees(float16_t param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.msl
index ddee167..266913a 100644
--- a/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/5e9805.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half tint_degrees(half param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_5e9805() {
diff --git a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.dxc.hlsl
index eb0415d..7092c04 100644
--- a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_810467() {
-  float2 res = (57.295780182f).xx;
+  float2 res = (57.295780181884765625f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.fxc.hlsl
index eb0415d..7092c04 100644
--- a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_810467() {
-  float2 res = (57.295780182f).xx;
+  float2 res = (57.295780181884765625f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.glsl
index cee6770..9d96588 100644
--- a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_810467() {
-  vec2 res = vec2(57.295780182f);
+  vec2 res = vec2(57.295780181884765625f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_810467() {
-  vec2 res = vec2(57.295780182f);
+  vec2 res = vec2(57.295780181884765625f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_810467() {
-  vec2 res = vec2(57.295780182f);
+  vec2 res = vec2(57.295780181884765625f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.msl
index 26fdf6d..60430771 100644
--- a/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/810467.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_810467() {
-  float2 res = float2(57.295780182f);
+  float2 res = float2(57.295780181884765625f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.dxc.hlsl
index 78013a9..1b755ad 100644
--- a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_c0880c() {
-  float3 res = (57.295780182f).xxx;
+  float3 res = (57.295780181884765625f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.fxc.hlsl
index 78013a9..1b755ad 100644
--- a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_c0880c() {
-  float3 res = (57.295780182f).xxx;
+  float3 res = (57.295780181884765625f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.glsl
index ad03188..d5946bf 100644
--- a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_c0880c() {
-  vec3 res = vec3(57.295780182f);
+  vec3 res = vec3(57.295780181884765625f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_c0880c() {
-  vec3 res = vec3(57.295780182f);
+  vec3 res = vec3(57.295780181884765625f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_c0880c() {
-  vec3 res = vec3(57.295780182f);
+  vec3 res = vec3(57.295780181884765625f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.msl
index 4b019e9..9047e09 100644
--- a/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/c0880c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_c0880c() {
-  float3 res = float3(57.295780182f);
+  float3 res = float3(57.295780181884765625f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.dxc.hlsl
index 0ea5685..5d5f6b3 100644
--- a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_d43a49() {
-  float4 res = (57.295780182f).xxxx;
+  float4 res = (57.295780181884765625f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.fxc.hlsl
index 0ea5685..5d5f6b3 100644
--- a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_d43a49() {
-  float4 res = (57.295780182f).xxxx;
+  float4 res = (57.295780181884765625f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.glsl
index 893f790..b599bb7 100644
--- a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_d43a49() {
-  vec4 res = vec4(57.295780182f);
+  vec4 res = vec4(57.295780181884765625f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_d43a49() {
-  vec4 res = vec4(57.295780182f);
+  vec4 res = vec4(57.295780181884765625f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_d43a49() {
-  vec4 res = vec4(57.295780182f);
+  vec4 res = vec4(57.295780181884765625f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.msl
index adddeb0..623900a 100644
--- a/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/d43a49.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_d43a49() {
-  float4 res = float4(57.295780182f);
+  float4 res = float4(57.295780181884765625f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.dxc.hlsl
index 3d9d88c..179583d 100644
--- a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 vector<float16_t, 3> tint_degrees(vector<float16_t, 3> param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_dfe8f4() {
diff --git a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.glsl
index b4de681..8b1e365 100644
--- a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec3 tint_degrees(f16vec3 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 f16vec3 tint_degrees(f16vec3 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec3 tint_degrees(f16vec3 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.msl
index d226ae3..6bffc90 100644
--- a/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/dfe8f4.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half3 tint_degrees(half3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_dfe8f4() {
diff --git a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.dxc.hlsl
index 5107ffa..2a22fda 100644
--- a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 vector<float16_t, 2> tint_degrees(vector<float16_t, 2> param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_f59715() {
diff --git a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.glsl
index 9af36b8..b481d7f 100644
--- a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec2 tint_degrees(f16vec2 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 f16vec2 tint_degrees(f16vec2 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec2 tint_degrees(f16vec2 param_0) {
-  return param_0 * 57.295779513082323hf;
+  return param_0 * 57.29577951308232286465hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.msl
index 02992fc..b9ad03f 100644
--- a/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/f59715.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half2 tint_degrees(half2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 void degrees_f59715() {
diff --git a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.dxc.hlsl
index a11be10..574781e6 100644
--- a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.fxc.hlsl
index a11be10..574781e6 100644
--- a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.glsl b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.glsl
index 4572eb3..3017003 100644
--- a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.msl b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.msl
index 770b0ab..ff426d2 100644
--- a/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/degrees/fafa7e.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void degrees_fafa7e() {
-  float res = 57.295780182f;
+  float res = 57.295780181884765625f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.dxc.hlsl
index a370f26..28dfe2e 100644
--- a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.fxc.hlsl
index a370f26..28dfe2e 100644
--- a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.glsl b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.glsl
index 304cb4d..2b7644c 100644
--- a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.msl b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.msl
index 94c050b..8a3790c 100644
--- a/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/exp/49e4c5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_49e4c5() {
-  float res = 2.718281746f;
+  float res = 2.71828174591064453125f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.dxc.hlsl
index f19809c..03894d3 100644
--- a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_699629() {
-  float2 res = (2.718281746f).xx;
+  float2 res = (2.71828174591064453125f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.fxc.hlsl
index f19809c..03894d3 100644
--- a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_699629() {
-  float2 res = (2.718281746f).xx;
+  float2 res = (2.71828174591064453125f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.glsl b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.glsl
index 93856b5..6a619c6 100644
--- a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_699629() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_699629() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_699629() {
-  vec2 res = vec2(2.718281746f);
+  vec2 res = vec2(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.msl b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.msl
index e68e3dd..0520bd3 100644
--- a/test/tint/builtins/gen/var/exp/699629.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/exp/699629.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_699629() {
-  float2 res = float2(2.718281746f);
+  float2 res = float2(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.dxc.hlsl
index ea132ce..439cbe2 100644
--- a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_bda5bb() {
-  float3 res = (2.718281746f).xxx;
+  float3 res = (2.71828174591064453125f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.fxc.hlsl
index ea132ce..439cbe2 100644
--- a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_bda5bb() {
-  float3 res = (2.718281746f).xxx;
+  float3 res = (2.71828174591064453125f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.glsl b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.glsl
index 65cb0f6..71a9995 100644
--- a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_bda5bb() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_bda5bb() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_bda5bb() {
-  vec3 res = vec3(2.718281746f);
+  vec3 res = vec3(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.msl b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.msl
index 46be400..e43a8a9 100644
--- a/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/exp/bda5bb.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_bda5bb() {
-  float3 res = float3(2.718281746f);
+  float3 res = float3(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.dxc.hlsl
index b4228d0..7d907a4 100644
--- a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void exp_dad791() {
-  float4 res = (2.718281746f).xxxx;
+  float4 res = (2.71828174591064453125f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.fxc.hlsl
index b4228d0..7d907a4 100644
--- a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void exp_dad791() {
-  float4 res = (2.718281746f).xxxx;
+  float4 res = (2.71828174591064453125f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.glsl b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.glsl
index 1adc457..756089e 100644
--- a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void exp_dad791() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void exp_dad791() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void exp_dad791() {
-  vec4 res = vec4(2.718281746f);
+  vec4 res = vec4(2.71828174591064453125f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.msl b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.msl
index c445389..76c438c 100644
--- a/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/exp/dad791.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void exp_dad791() {
-  float4 res = float4(2.718281746f);
+  float4 res = float4(2.71828174591064453125f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.dxc.hlsl
index 7ecf609..19d529f 100644
--- a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_584e47() {
-  float2 res = (0.707106769f).xx;
+  float2 res = (0.70710676908493041992f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.fxc.hlsl
index 7ecf609..19d529f 100644
--- a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_584e47() {
-  float2 res = (0.707106769f).xx;
+  float2 res = (0.70710676908493041992f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.glsl b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.glsl
index bc0e2ee..8d56c8c 100644
--- a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void normalize_584e47() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void normalize_584e47() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void normalize_584e47() {
-  vec2 res = vec2(0.707106769f);
+  vec2 res = vec2(0.70710676908493041992f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.msl b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.msl
index 37095b8..53b3295 100644
--- a/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/normalize/584e47.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_584e47() {
-  float2 res = float2(0.707106769f);
+  float2 res = float2(0.70710676908493041992f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.dxc.hlsl
index 257e626..0112f14 100644
--- a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_e7def8() {
-  float3 res = (0.577350259f).xxx;
+  float3 res = (0.57735025882720947266f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.fxc.hlsl
index 257e626..0112f14 100644
--- a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void normalize_e7def8() {
-  float3 res = (0.577350259f).xxx;
+  float3 res = (0.57735025882720947266f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.glsl b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.glsl
index b29cf51..053a255 100644
--- a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void normalize_e7def8() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void normalize_e7def8() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void normalize_e7def8() {
-  vec3 res = vec3(0.577350259f);
+  vec3 res = vec3(0.57735025882720947266f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.msl b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.msl
index b07b880..a931001 100644
--- a/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/normalize/e7def8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void normalize_e7def8() {
-  float3 res = float3(0.577350259f);
+  float3 res = float3(0.57735025882720947266f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.dxc.hlsl
index b369725..ff0a882 100644
--- a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float4 tint_radians(float4 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_09b7fc() {
diff --git a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.fxc.hlsl
index b369725..ff0a882 100644
--- a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float4 tint_radians(float4 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_09b7fc() {
diff --git a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.glsl
index e5a3c60..7ffb9aa 100644
--- a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec4 tint_radians(vec4 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 vec4 tint_radians(vec4 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 vec4 tint_radians(vec4 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.msl
index b841867..9ac1d95 100644
--- a/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/09b7fc.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float4 tint_radians(float4 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_09b7fc() {
diff --git a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.dxc.hlsl
index c4c934c..a593ba0 100644
--- a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float16_t tint_radians(float16_t param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_208fd9() {
diff --git a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.glsl
index 35dfd17..4dacc28 100644
--- a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 float16_t tint_radians(float16_t param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 float16_t tint_radians(float16_t param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 float16_t tint_radians(float16_t param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.msl
index ede8949..b217676 100644
--- a/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/208fd9.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half tint_radians(half param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_208fd9() {
diff --git a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.dxc.hlsl
index 247db1d..9250050 100644
--- a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_379214() {
-  float3 res = (0.017453292f).xxx;
+  float3 res = (0.01745329238474369049f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.fxc.hlsl
index 247db1d..9250050 100644
--- a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_379214() {
-  float3 res = (0.017453292f).xxx;
+  float3 res = (0.01745329238474369049f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.glsl
index 5593c1d..750b043 100644
--- a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_379214() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_379214() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_379214() {
-  vec3 res = vec3(0.017453292f);
+  vec3 res = vec3(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.msl
index 638763a..a5472a1 100644
--- a/test/tint/builtins/gen/var/radians/379214.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/379214.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_379214() {
-  float3 res = float3(0.017453292f);
+  float3 res = float3(0.01745329238474369049f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.dxc.hlsl
index cb67c5d9..495afb9 100644
--- a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_44a9f8() {
-  float2 res = (0.017453292f).xx;
+  float2 res = (0.01745329238474369049f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.fxc.hlsl
index cb67c5d9..495afb9 100644
--- a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_44a9f8() {
-  float2 res = (0.017453292f).xx;
+  float2 res = (0.01745329238474369049f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.glsl
index 6caa601..201150e 100644
--- a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_44a9f8() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_44a9f8() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_44a9f8() {
-  vec2 res = vec2(0.017453292f);
+  vec2 res = vec2(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.msl
index fea0149..c6b2951 100644
--- a/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/44a9f8.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_44a9f8() {
-  float2 res = float2(0.017453292f);
+  float2 res = float2(0.01745329238474369049f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.dxc.hlsl
index e3dff23..ee81bfa 100644
--- a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 vector<float16_t, 4> tint_radians(vector<float16_t, 4> param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_44f20b() {
diff --git a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.glsl
index a9de4a8..1918fac 100644
--- a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec4 tint_radians(f16vec4 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 f16vec4 tint_radians(f16vec4 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec4 tint_radians(f16vec4 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.msl
index 565d93c..77b4d1f 100644
--- a/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/44f20b.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half4 tint_radians(half4 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_44f20b() {
diff --git a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.dxc.hlsl
index b3e2192..a633d34 100644
--- a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_524a91() {
-  float4 res = (0.017453292f).xxxx;
+  float4 res = (0.01745329238474369049f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.fxc.hlsl
index b3e2192..a633d34 100644
--- a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_524a91() {
-  float4 res = (0.017453292f).xxxx;
+  float4 res = (0.01745329238474369049f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.glsl
index fd1508e..1f61586 100644
--- a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_524a91() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_524a91() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_524a91() {
-  vec4 res = vec4(0.017453292f);
+  vec4 res = vec4(0.01745329238474369049f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.msl
index fa539e0..dd19a42 100644
--- a/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/524a91.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_524a91() {
-  float4 res = float4(0.017453292f);
+  float4 res = float4(0.01745329238474369049f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.dxc.hlsl
index b76179f..af6889b 100644
--- a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float2 tint_radians(float2 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_61687a() {
diff --git a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.fxc.hlsl
index b76179f..af6889b 100644
--- a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float2 tint_radians(float2 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_61687a() {
diff --git a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.glsl
index c1bef7a..b768136 100644
--- a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec2 tint_radians(vec2 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 vec2 tint_radians(vec2 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 vec2 tint_radians(vec2 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.msl
index e9de7f1..36afee9 100644
--- a/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/61687a.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float2 tint_radians(float2 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_61687a() {
diff --git a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.dxc.hlsl
index 8385da9..6d6b9c4 100644
--- a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_6b0ff2() {
diff --git a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.fxc.hlsl
index 8385da9..6d6b9c4 100644
--- a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_6b0ff2() {
diff --git a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.glsl
index d51bdf3..23092e3 100644
--- a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.msl
index 43391ed..4a87200 100644
--- a/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/6b0ff2.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_6b0ff2() {
diff --git a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.dxc.hlsl
index 84a7b19..4380e09 100644
--- a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 vector<float16_t, 3> tint_radians(vector<float16_t, 3> param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_7ea4c7() {
diff --git a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.glsl
index 5524a7d..9115110 100644
--- a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec3 tint_radians(f16vec3 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 f16vec3 tint_radians(f16vec3 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec3 tint_radians(f16vec3 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.msl
index e6ebb854..6ff5c2d 100644
--- a/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/7ea4c7.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half3 tint_radians(half3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_7ea4c7() {
diff --git a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.dxc.hlsl
index cde7b14..a8182f5 100644
--- a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.fxc.hlsl
index cde7b14..a8182f5 100644
--- a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.glsl
index a445da1..c25f8c4 100644
--- a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.msl
index ddd3b6e..82e4244 100644
--- a/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/bff231.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void radians_bff231() {
-  float res = 0.017453292f;
+  float res = 0.01745329238474369049f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.dxc.hlsl
index 386bc10..b91cd1f 100644
--- a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float3 tint_radians(float3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_f96258() {
diff --git a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.fxc.hlsl
index 386bc10..b91cd1f 100644
--- a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float3 tint_radians(float3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_f96258() {
diff --git a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.glsl
index 02c349a..ed858c2 100644
--- a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 vec3 tint_radians(vec3 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -27,7 +27,7 @@
 precision mediump float;
 
 vec3 tint_radians(vec3 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
@@ -47,7 +47,7 @@
 #version 310 es
 
 vec3 tint_radians(vec3 param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.msl
index 3b7652a..3bb960b 100644
--- a/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/f96258.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float3 tint_radians(float3 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_f96258() {
diff --git a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.dxc.hlsl
index f0c7eeb..398353d 100644
--- a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 vector<float16_t, 2> tint_radians(vector<float16_t, 2> param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_fbacf0() {
diff --git a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.glsl b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.glsl
index fe5da30..ec4e4ca 100644
--- a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec2 tint_radians(f16vec2 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -29,7 +29,7 @@
 precision mediump float;
 
 f16vec2 tint_radians(f16vec2 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
@@ -50,7 +50,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 f16vec2 tint_radians(f16vec2 param_0) {
-  return param_0 * 0.017453292519943295hf;
+  return param_0 * 0.01745329251994329547hf;
 }
 
 
diff --git a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.msl b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.msl
index 533774b..ebf5567 100644
--- a/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/radians/fbacf0.wgsl.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 half2 tint_radians(half2 param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void radians_fbacf0() {
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl b/test/tint/builtins/gen/var/round/106c0b.wgsl
index 961d709..7c77f82 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<4, f32>) -> vec<4, f32>
 fn round_106c0b() {
-  var arg_0 = vec4<f32>(3.4f);
+  var arg_0 = vec4<f32>(3.5f);
   var res: vec4<f32> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.dxc.hlsl
index 943dbcc..c0d5f98 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_106c0b() {
-  float4 arg_0 = (3.400000095f).xxxx;
+  float4 arg_0 = (3.5f).xxxx;
   float4 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.fxc.hlsl
index 943dbcc..c0d5f98 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_106c0b() {
-  float4 arg_0 = (3.400000095f).xxxx;
+  float4 arg_0 = (3.5f).xxxx;
   float4 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.glsl
index 8d05096..84edebf 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_106c0b() {
-  vec4 arg_0 = vec4(3.400000095f);
+  vec4 arg_0 = vec4(3.5f);
   vec4 res = round(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void round_106c0b() {
-  vec4 arg_0 = vec4(3.400000095f);
+  vec4 arg_0 = vec4(3.5f);
   vec4 res = round(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void round_106c0b() {
-  vec4 arg_0 = vec4(3.400000095f);
+  vec4 arg_0 = vec4(3.5f);
   vec4 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.msl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.msl
index d08ef75..e35922e 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_106c0b() {
-  float4 arg_0 = float4(3.400000095f);
+  float4 arg_0 = float4(3.5f);
   float4 res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.spvasm
index d10298f..ce01c78 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.spvasm
@@ -32,8 +32,8 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_3_4000001 = OpConstant %float 3.4000001
-         %14 = OpConstantComposite %v4float %float_3_4000001 %float_3_4000001 %float_3_4000001 %float_3_4000001
+  %float_3_5 = OpConstant %float 3.5
+         %14 = OpConstantComposite %v4float %float_3_5 %float_3_5 %float_3_5 %float_3_5
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %21 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl
index b6ef0fa..129028b 100644
--- a/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/106c0b.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_106c0b() {
-  var arg_0 = vec4<f32>(3.400000095f);
+  var arg_0 = vec4<f32>(3.5f);
   var res : vec4<f32> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl b/test/tint/builtins/gen/var/round/184d5a.wgsl
index a99e108..175eca3 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<4, fa>) -> vec<4, fa>
 fn round_184d5a() {
-  const arg_0 = vec4(3.4);
+  const arg_0 = vec4(3.5);
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.dxc.hlsl
index 278152a..f7bdfca 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_184d5a() {
-  float4 res = (3.0f).xxxx;
+  float4 res = (4.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.fxc.hlsl
index 278152a..f7bdfca 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_184d5a() {
-  float4 res = (3.0f).xxxx;
+  float4 res = (4.0f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.glsl
index d27ab94..a18114c 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_184d5a() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_184d5a() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_184d5a() {
-  vec4 res = vec4(3.0f);
+  vec4 res = vec4(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.msl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.msl
index e592f73..318e048 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_184d5a() {
-  float4 res = float4(3.0f);
+  float4 res = float4(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.spvasm
index 67a91d3..dedbfa1c 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.spvasm
@@ -30,8 +30,8 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %float_3 = OpConstant %float 3
-         %14 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %14 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
 %_ptr_Function_v4float = OpTypePointer Function %v4float
          %17 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
diff --git a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.wgsl
index d4ffb6d..eac62bb 100644
--- a/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/184d5a.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_184d5a() {
-  const arg_0 = vec4(3.4);
+  const arg_0 = vec4(3.5);
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl b/test/tint/builtins/gen/var/round/1c7897.wgsl
index 2a023b4..9eac08e 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<3, f32>) -> vec<3, f32>
 fn round_1c7897() {
-  var arg_0 = vec3<f32>(3.4f);
+  var arg_0 = vec3<f32>(3.5f);
   var res: vec3<f32> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.dxc.hlsl
index f11ae75..b41ad5d 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_1c7897() {
-  float3 arg_0 = (3.400000095f).xxx;
+  float3 arg_0 = (3.5f).xxx;
   float3 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.fxc.hlsl
index f11ae75..b41ad5d 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_1c7897() {
-  float3 arg_0 = (3.400000095f).xxx;
+  float3 arg_0 = (3.5f).xxx;
   float3 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.glsl
index ed195d6..1a4453d 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_1c7897() {
-  vec3 arg_0 = vec3(3.400000095f);
+  vec3 arg_0 = vec3(3.5f);
   vec3 res = round(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void round_1c7897() {
-  vec3 arg_0 = vec3(3.400000095f);
+  vec3 arg_0 = vec3(3.5f);
   vec3 res = round(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void round_1c7897() {
-  vec3 arg_0 = vec3(3.400000095f);
+  vec3 arg_0 = vec3(3.5f);
   vec3 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.msl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.msl
index bd44954..f7efbda 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_1c7897() {
-  float3 arg_0 = float3(3.400000095f);
+  float3 arg_0 = float3(3.5f);
   float3 res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.spvasm
index 6f0e5d3..02c1b23 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.spvasm
@@ -33,8 +33,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-%float_3_4000001 = OpConstant %float 3.4000001
-         %15 = OpConstantComposite %v3float %float_3_4000001 %float_3_4000001 %float_3_4000001
+  %float_3_5 = OpConstant %float 3.5
+         %15 = OpConstantComposite %v3float %float_3_5 %float_3_5 %float_3_5
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %23 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl
index 1a23c8b..e644d19 100644
--- a/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/1c7897.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_1c7897() {
-  var arg_0 = vec3<f32>(3.400000095f);
+  var arg_0 = vec3<f32>(3.5f);
   var res : vec3<f32> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl b/test/tint/builtins/gen/var/round/52c84d.wgsl
index 9578c82..1bef0ea 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<2, f32>) -> vec<2, f32>
 fn round_52c84d() {
-  var arg_0 = vec2<f32>(3.4f);
+  var arg_0 = vec2<f32>(3.5f);
   var res: vec2<f32> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.dxc.hlsl
index 0190de3..45e93bb 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_52c84d() {
-  float2 arg_0 = (3.400000095f).xx;
+  float2 arg_0 = (3.5f).xx;
   float2 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.fxc.hlsl
index 0190de3..45e93bb 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_52c84d() {
-  float2 arg_0 = (3.400000095f).xx;
+  float2 arg_0 = (3.5f).xx;
   float2 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.glsl
index 922bbfc..0d66f20 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_52c84d() {
-  vec2 arg_0 = vec2(3.400000095f);
+  vec2 arg_0 = vec2(3.5f);
   vec2 res = round(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void round_52c84d() {
-  vec2 arg_0 = vec2(3.400000095f);
+  vec2 arg_0 = vec2(3.5f);
   vec2 res = round(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void round_52c84d() {
-  vec2 arg_0 = vec2(3.400000095f);
+  vec2 arg_0 = vec2(3.5f);
   vec2 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.msl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.msl
index 2efb971..3b5b707 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_52c84d() {
-  float2 arg_0 = float2(3.400000095f);
+  float2 arg_0 = float2(3.5f);
   float2 res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.spvasm
index 30c39e5..9abdd19 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.spvasm
@@ -33,8 +33,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-%float_3_4000001 = OpConstant %float 3.4000001
-         %15 = OpConstantComposite %v2float %float_3_4000001 %float_3_4000001
+  %float_3_5 = OpConstant %float 3.5
+         %15 = OpConstantComposite %v2float %float_3_5 %float_3_5
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %23 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl
index 989c7e9..c017b09 100644
--- a/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/52c84d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_52c84d() {
-  var arg_0 = vec2<f32>(3.400000095f);
+  var arg_0 = vec2<f32>(3.5f);
   var res : vec2<f32> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl b/test/tint/builtins/gen/var/round/773a8f.wgsl
index 556dd8f..e5c9393 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(fa) -> fa
 fn round_773a8f() {
-  const arg_0 = 3.4;
+  const arg_0 = 3.5;
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.dxc.hlsl
index dc329d8..f8e0f12 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.fxc.hlsl
index dc329d8..f8e0f12 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.glsl
index f7e71c8..0d7b0a4 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.msl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.msl
index 4b27365..c9f83f8 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_773a8f() {
-  float res = 3.0f;
+  float res = 4.0f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.spvasm
index b97daa9..d784d9a 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.spvasm
@@ -30,14 +30,14 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
 %_ptr_Function_float = OpTypePointer Function %float
          %16 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
 %round_773a8f = OpFunction %void None %9
          %12 = OpLabel
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %res %float_3
+               OpStore %res %float_4
                OpReturn
                OpFunctionEnd
 %vertex_main_inner = OpFunction %v4float None %16
diff --git a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.wgsl
index 3cd1f31..d00bb0a 100644
--- a/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/773a8f.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_773a8f() {
-  const arg_0 = 3.4;
+  const arg_0 = 3.5;
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl b/test/tint/builtins/gen/var/round/8fdca3.wgsl
index 9a56641..07c3c24 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<2, fa>) -> vec<2, fa>
 fn round_8fdca3() {
-  const arg_0 = vec2(3.4);
+  const arg_0 = vec2(3.5);
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.dxc.hlsl
index 5e441a3..3f822c5 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_8fdca3() {
-  float2 res = (3.0f).xx;
+  float2 res = (4.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.fxc.hlsl
index 5e441a3..3f822c5 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_8fdca3() {
-  float2 res = (3.0f).xx;
+  float2 res = (4.0f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.glsl
index ef15129..14cbb3b 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_8fdca3() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_8fdca3() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_8fdca3() {
-  vec2 res = vec2(3.0f);
+  vec2 res = vec2(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.msl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.msl
index dbffaee..0ff475e 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_8fdca3() {
-  float2 res = float2(3.0f);
+  float2 res = float2(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.spvasm
index 40ce4a2..f24efe9 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.spvasm
@@ -31,8 +31,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v2float = OpTypeVector %float 2
-    %float_3 = OpConstant %float 3
-         %15 = OpConstantComposite %v2float %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %15 = OpConstantComposite %v2float %float_4 %float_4
 %_ptr_Function_v2float = OpTypePointer Function %v2float
          %18 = OpConstantNull %v2float
          %19 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.wgsl
index fbf69dc..b8c324c 100644
--- a/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/8fdca3.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_8fdca3() {
-  const arg_0 = vec2(3.4);
+  const arg_0 = vec2(3.5);
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl b/test/tint/builtins/gen/var/round/9078ef.wgsl
index 2b11845..ec8ec54 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(f16) -> f16
 fn round_9078ef() {
-  var arg_0 = 3.4h;
+  var arg_0 = 3.5h;
   var res: f16 = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.dxc.hlsl
index b6e47ac..3f465c9 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_9078ef() {
-  float16_t arg_0 = float16_t(3.3984375h);
+  float16_t arg_0 = float16_t(3.5h);
   float16_t res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.glsl
index cfcc156..5fe11aa 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_9078ef() {
-  float16_t arg_0 = 3.3984375hf;
+  float16_t arg_0 = 3.5hf;
   float16_t res = round(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void round_9078ef() {
-  float16_t arg_0 = 3.3984375hf;
+  float16_t arg_0 = 3.5hf;
   float16_t res = round(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_9078ef() {
-  float16_t arg_0 = 3.3984375hf;
+  float16_t arg_0 = 3.5hf;
   float16_t res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.msl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.msl
index 83a58d2..14da505 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_9078ef() {
-  half arg_0 = 3.3984375h;
+  half arg_0 = 3.5h;
   half res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.spvasm
index a27be47..1b3b587 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.spvasm
@@ -37,7 +37,7 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
-%half_0x1_b3p_1 = OpConstant %half 0x1.b3p+1
+%half_0x1_cp_1 = OpConstant %half 0x1.cp+1
 %_ptr_Function_half = OpTypePointer Function %half
          %17 = OpConstantNull %half
          %22 = OpTypeFunction %v4float
@@ -46,7 +46,7 @@
          %12 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_half Function %17
         %res = OpVariable %_ptr_Function_half Function %17
-               OpStore %arg_0 %half_0x1_b3p_1
+               OpStore %arg_0 %half_0x1_cp_1
          %20 = OpLoad %half %arg_0
          %18 = OpExtInst %half %19 RoundEven %20
                OpStore %res %18
diff --git a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.wgsl
index 56559c6..4ba193e 100644
--- a/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/9078ef.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_9078ef() {
-  var arg_0 = 3.3984375h;
+  var arg_0 = 3.5h;
   var res : f16 = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl b/test/tint/builtins/gen/var/round/9edc38.wgsl
index f47bea9..39ea9fd 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(f32) -> f32
 fn round_9edc38() {
-  var arg_0 = 3.4f;
+  var arg_0 = 3.5f;
   var res: f32 = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.dxc.hlsl
index b496960..6c6d0e5 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_9edc38() {
-  float arg_0 = 3.400000095f;
+  float arg_0 = 3.5f;
   float res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.fxc.hlsl
index b496960..6c6d0e5 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_9edc38() {
-  float arg_0 = 3.400000095f;
+  float arg_0 = 3.5f;
   float res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.glsl
index a149ca8..84da2d8 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_9edc38() {
-  float arg_0 = 3.400000095f;
+  float arg_0 = 3.5f;
   float res = round(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void round_9edc38() {
-  float arg_0 = 3.400000095f;
+  float arg_0 = 3.5f;
   float res = round(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void round_9edc38() {
-  float arg_0 = 3.400000095f;
+  float arg_0 = 3.5f;
   float res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.msl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.msl
index 4d1f271..d64a376 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_9edc38() {
-  float arg_0 = 3.400000095f;
+  float arg_0 = 3.5f;
   float res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.spvasm
index ae3f38d..d817cdb 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.spvasm
@@ -32,7 +32,7 @@
 %vertex_point_size = OpVariable %_ptr_Output_float Output %8
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
-%float_3_4000001 = OpConstant %float 3.4000001
+  %float_3_5 = OpConstant %float 3.5
 %_ptr_Function_float = OpTypePointer Function %float
          %20 = OpTypeFunction %v4float
     %float_1 = OpConstant %float 1
@@ -40,7 +40,7 @@
          %12 = OpLabel
       %arg_0 = OpVariable %_ptr_Function_float Function %8
         %res = OpVariable %_ptr_Function_float Function %8
-               OpStore %arg_0 %float_3_4000001
+               OpStore %arg_0 %float_3_5
          %18 = OpLoad %float %arg_0
          %16 = OpExtInst %float %17 RoundEven %18
                OpStore %res %16
diff --git a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl
index 3141c24..a2f0a1f 100644
--- a/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/9edc38.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_9edc38() {
-  var arg_0 = 3.400000095f;
+  var arg_0 = 3.5f;
   var res : f32 = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl b/test/tint/builtins/gen/var/round/a1673d.wgsl
index 03a7407..09b3094 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl
@@ -23,7 +23,7 @@
 
 // fn round(vec<3, fa>) -> vec<3, fa>
 fn round_a1673d() {
-  const arg_0 = vec3(3.4);
+  const arg_0 = vec3(3.5);
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.dxc.hlsl
index 4032312..df8181f 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_a1673d() {
-  float3 res = (3.0f).xxx;
+  float3 res = (4.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.fxc.hlsl
index 4032312..df8181f 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void round_a1673d() {
-  float3 res = (3.0f).xxx;
+  float3 res = (4.0f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.glsl
index 0a8db5f..dd390a7 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void round_a1673d() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void round_a1673d() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void round_a1673d() {
-  vec3 res = vec3(3.0f);
+  vec3 res = vec3(4.0f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.msl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.msl
index e9b35bb..7303f72 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_a1673d() {
-  float3 res = float3(3.0f);
+  float3 res = float3(4.0f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.spvasm
index e9bbf2e..f0a7e42 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.spvasm
@@ -31,8 +31,8 @@
        %void = OpTypeVoid
           %9 = OpTypeFunction %void
     %v3float = OpTypeVector %float 3
-    %float_3 = OpConstant %float 3
-         %15 = OpConstantComposite %v3float %float_3 %float_3 %float_3
+    %float_4 = OpConstant %float 4
+         %15 = OpConstantComposite %v3float %float_4 %float_4 %float_4
 %_ptr_Function_v3float = OpTypePointer Function %v3float
          %18 = OpConstantNull %v3float
          %19 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.wgsl
index 4adb295..0a45d86 100644
--- a/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/a1673d.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn round_a1673d() {
-  const arg_0 = vec3(3.4);
+  const arg_0 = vec3(3.5);
   var res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl b/test/tint/builtins/gen/var/round/d87e84.wgsl
index b7459b8..8b11473 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(vec<2, f16>) -> vec<2, f16>
 fn round_d87e84() {
-  var arg_0 = vec2<f16>(3.4h);
+  var arg_0 = vec2<f16>(3.5h);
   var res: vec2<f16> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.dxc.hlsl
index 38e6732..9895f74b 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_d87e84() {
-  vector<float16_t, 2> arg_0 = (float16_t(3.3984375h)).xx;
+  vector<float16_t, 2> arg_0 = (float16_t(3.5h)).xx;
   vector<float16_t, 2> res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.glsl
index 7b7d705..2d6d5a8 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_d87e84() {
-  f16vec2 arg_0 = f16vec2(3.3984375hf);
+  f16vec2 arg_0 = f16vec2(3.5hf);
   f16vec2 res = round(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void round_d87e84() {
-  f16vec2 arg_0 = f16vec2(3.3984375hf);
+  f16vec2 arg_0 = f16vec2(3.5hf);
   f16vec2 res = round(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_d87e84() {
-  f16vec2 arg_0 = f16vec2(3.3984375hf);
+  f16vec2 arg_0 = f16vec2(3.5hf);
   f16vec2 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.msl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.msl
index 45fbfa2..2a9ee39 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_d87e84() {
-  half2 arg_0 = half2(3.3984375h);
+  half2 arg_0 = half2(3.5h);
   half2 res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.spvasm
index 691319f..1696b37 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.spvasm
@@ -38,8 +38,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v2half = OpTypeVector %half 2
-%half_0x1_b3p_1 = OpConstant %half 0x1.b3p+1
-         %16 = OpConstantComposite %v2half %half_0x1_b3p_1 %half_0x1_b3p_1
+%half_0x1_cp_1 = OpConstant %half 0x1.cp+1
+         %16 = OpConstantComposite %v2half %half_0x1_cp_1 %half_0x1_cp_1
 %_ptr_Function_v2half = OpTypePointer Function %v2half
          %19 = OpConstantNull %v2half
          %24 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.wgsl
index 3732bd7..f91e883 100644
--- a/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/d87e84.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_d87e84() {
-  var arg_0 = vec2<f16>(3.3984375h);
+  var arg_0 = vec2<f16>(3.5h);
   var res : vec2<f16> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl
index 5c666ae..a4fbeab 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(vec<3, f16>) -> vec<3, f16>
 fn round_e1bba2() {
-  var arg_0 = vec3<f16>(3.4h);
+  var arg_0 = vec3<f16>(3.5h);
   var res: vec3<f16> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.dxc.hlsl
index 2c1a7e7..a92457e 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_e1bba2() {
-  vector<float16_t, 3> arg_0 = (float16_t(3.3984375h)).xxx;
+  vector<float16_t, 3> arg_0 = (float16_t(3.5h)).xxx;
   vector<float16_t, 3> res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.glsl
index 79a642b..8d58b62 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_e1bba2() {
-  f16vec3 arg_0 = f16vec3(3.3984375hf);
+  f16vec3 arg_0 = f16vec3(3.5hf);
   f16vec3 res = round(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void round_e1bba2() {
-  f16vec3 arg_0 = f16vec3(3.3984375hf);
+  f16vec3 arg_0 = f16vec3(3.5hf);
   f16vec3 res = round(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_e1bba2() {
-  f16vec3 arg_0 = f16vec3(3.3984375hf);
+  f16vec3 arg_0 = f16vec3(3.5hf);
   f16vec3 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.msl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.msl
index d67c97b..cc62ca3 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_e1bba2() {
-  half3 arg_0 = half3(3.3984375h);
+  half3 arg_0 = half3(3.5h);
   half3 res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.spvasm
index ecba2f9..e23c3a1 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.spvasm
@@ -38,8 +38,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v3half = OpTypeVector %half 3
-%half_0x1_b3p_1 = OpConstant %half 0x1.b3p+1
-         %16 = OpConstantComposite %v3half %half_0x1_b3p_1 %half_0x1_b3p_1 %half_0x1_b3p_1
+%half_0x1_cp_1 = OpConstant %half 0x1.cp+1
+         %16 = OpConstantComposite %v3half %half_0x1_cp_1 %half_0x1_cp_1 %half_0x1_cp_1
 %_ptr_Function_v3half = OpTypePointer Function %v3half
          %19 = OpConstantNull %v3half
          %24 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.wgsl
index a4bc2f2..7cce6c4 100644
--- a/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/e1bba2.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_e1bba2() {
-  var arg_0 = vec3<f16>(3.3984375h);
+  var arg_0 = vec3<f16>(3.5h);
   var res : vec3<f16> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl b/test/tint/builtins/gen/var/round/f665b5.wgsl
index 34ce7cc..3b7fd3a 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl
@@ -25,7 +25,7 @@
 
 // fn round(vec<4, f16>) -> vec<4, f16>
 fn round_f665b5() {
-  var arg_0 = vec4<f16>(3.4h);
+  var arg_0 = vec4<f16>(3.5h);
   var res: vec4<f16> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.dxc.hlsl
index 1bcedeb..f789e47 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void round_f665b5() {
-  vector<float16_t, 4> arg_0 = (float16_t(3.3984375h)).xxxx;
+  vector<float16_t, 4> arg_0 = (float16_t(3.5h)).xxxx;
   vector<float16_t, 4> res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.glsl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.glsl
index 853570f..344164d 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.glsl
@@ -2,7 +2,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_f665b5() {
-  f16vec4 arg_0 = f16vec4(3.3984375hf);
+  f16vec4 arg_0 = f16vec4(3.5hf);
   f16vec4 res = round(arg_0);
 }
 
@@ -24,7 +24,7 @@
 precision mediump float;
 
 void round_f665b5() {
-  f16vec4 arg_0 = f16vec4(3.3984375hf);
+  f16vec4 arg_0 = f16vec4(3.5hf);
   f16vec4 res = round(arg_0);
 }
 
@@ -40,7 +40,7 @@
 #extension GL_AMD_gpu_shader_half_float : require
 
 void round_f665b5() {
-  f16vec4 arg_0 = f16vec4(3.3984375hf);
+  f16vec4 arg_0 = f16vec4(3.5hf);
   f16vec4 res = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.msl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.msl
index dafb10b..1e6e527 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void round_f665b5() {
-  half4 arg_0 = half4(3.3984375h);
+  half4 arg_0 = half4(3.5h);
   half4 res = rint(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.spvasm b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.spvasm
index 4e352ff..aee30a5 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.spvasm
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.spvasm
@@ -38,8 +38,8 @@
           %9 = OpTypeFunction %void
        %half = OpTypeFloat 16
      %v4half = OpTypeVector %half 4
-%half_0x1_b3p_1 = OpConstant %half 0x1.b3p+1
-         %16 = OpConstantComposite %v4half %half_0x1_b3p_1 %half_0x1_b3p_1 %half_0x1_b3p_1 %half_0x1_b3p_1
+%half_0x1_cp_1 = OpConstant %half 0x1.cp+1
+         %16 = OpConstantComposite %v4half %half_0x1_cp_1 %half_0x1_cp_1 %half_0x1_cp_1 %half_0x1_cp_1
 %_ptr_Function_v4half = OpTypePointer Function %v4half
          %19 = OpConstantNull %v4half
          %24 = OpTypeFunction %v4float
diff --git a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.wgsl b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.wgsl
index 89020d0..4773a82 100644
--- a/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/round/f665b5.wgsl.expected.wgsl
@@ -1,7 +1,7 @@
 enable f16;
 
 fn round_f665b5() {
-  var arg_0 = vec4<f16>(3.3984375h);
+  var arg_0 = vec4<f16>(3.5h);
   var res : vec4<f16> = round(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.dxc.hlsl
index 17f3c9b..4051809 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_01f241() {
-  float3 arg_0 = (1.570796371f).xxx;
+  float3 arg_0 = (1.57079637050628662109f).xxx;
   float3 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.fxc.hlsl
index 17f3c9b..4051809 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sin_01f241() {
-  float3 arg_0 = (1.570796371f).xxx;
+  float3 arg_0 = (1.57079637050628662109f).xxx;
   float3 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.glsl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.glsl
index 8ef7f1c..29acf4c 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sin_01f241() {
-  vec3 arg_0 = vec3(1.570796371f);
+  vec3 arg_0 = vec3(1.57079637050628662109f);
   vec3 res = sin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void sin_01f241() {
-  vec3 arg_0 = vec3(1.570796371f);
+  vec3 arg_0 = vec3(1.57079637050628662109f);
   vec3 res = sin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void sin_01f241() {
-  vec3 arg_0 = vec3(1.570796371f);
+  vec3 arg_0 = vec3(1.57079637050628662109f);
   vec3 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.msl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.msl
index f5b43ae..da49e30 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_01f241() {
-  float3 arg_0 = float3(1.570796371f);
+  float3 arg_0 = float3(1.57079637050628662109f);
   float3 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl
index edf3cbe..b51abc7 100644
--- a/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/01f241.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_01f241() {
-  var arg_0 = vec3<f32>(1.570796371f);
+  var arg_0 = vec3<f32>(1.57079637050628662109f);
   var res : vec3<f32> = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.wgsl
index e4e6453..4c788f2 100644
--- a/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/15b2c6.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_15b2c6() {
-  const arg_0 = vec4(1.57079632679);
+  const arg_0 = vec4(1.57079632679000003037);
   var res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.dxc.hlsl
index 035f41d..1f709f1 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_4e3979() {
-  float4 arg_0 = (1.570796371f).xxxx;
+  float4 arg_0 = (1.57079637050628662109f).xxxx;
   float4 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.fxc.hlsl
index 035f41d..1f709f1 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sin_4e3979() {
-  float4 arg_0 = (1.570796371f).xxxx;
+  float4 arg_0 = (1.57079637050628662109f).xxxx;
   float4 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.glsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.glsl
index 788ed7e..ea55bca 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sin_4e3979() {
-  vec4 arg_0 = vec4(1.570796371f);
+  vec4 arg_0 = vec4(1.57079637050628662109f);
   vec4 res = sin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void sin_4e3979() {
-  vec4 arg_0 = vec4(1.570796371f);
+  vec4 arg_0 = vec4(1.57079637050628662109f);
   vec4 res = sin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void sin_4e3979() {
-  vec4 arg_0 = vec4(1.570796371f);
+  vec4 arg_0 = vec4(1.57079637050628662109f);
   vec4 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.msl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.msl
index 90fe227..aa887b4 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_4e3979() {
-  float4 arg_0 = float4(1.570796371f);
+  float4 arg_0 = float4(1.57079637050628662109f);
   float4 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl
index ce0867c..f8b7622 100644
--- a/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/4e3979.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_4e3979() {
-  var arg_0 = vec4<f32>(1.570796371f);
+  var arg_0 = vec4<f32>(1.57079637050628662109f);
   var res : vec4<f32> = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.wgsl
index 90a5999..c996290 100644
--- a/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/67b03c.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_67b03c() {
-  const arg_0 = vec3(1.57079632679);
+  const arg_0 = vec3(1.57079632679000003037);
   var res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.wgsl
index 3c50c9c..4dcc0ec 100644
--- a/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/68d3ab.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_68d3ab() {
-  const arg_0 = vec2(1.57079632679);
+  const arg_0 = vec2(1.57079632679000003037);
   var res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.wgsl
index 7082312..fea5b8f 100644
--- a/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/a9ab19.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_a9ab19() {
-  const arg_0 = 1.57079632679;
+  const arg_0 = 1.57079632679000003037;
   var res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.dxc.hlsl
index 3e57eae..7071862 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_b78c91() {
-  float arg_0 = 1.570796371f;
+  float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.fxc.hlsl
index 3e57eae..7071862 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sin_b78c91() {
-  float arg_0 = 1.570796371f;
+  float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.glsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.glsl
index 6ee0d9d..5f36b7a 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sin_b78c91() {
-  float arg_0 = 1.570796371f;
+  float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void sin_b78c91() {
-  float arg_0 = 1.570796371f;
+  float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void sin_b78c91() {
-  float arg_0 = 1.570796371f;
+  float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.msl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.msl
index 7080b14..7480724 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_b78c91() {
-  float arg_0 = 1.570796371f;
+  float arg_0 = 1.57079637050628662109f;
   float res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl
index 10619d1..adea4dd 100644
--- a/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/b78c91.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_b78c91() {
-  var arg_0 = 1.570796371f;
+  var arg_0 = 1.57079637050628662109f;
   var res : f32 = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.dxc.hlsl
index 1bb1b57..1bc8dd5 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sin_fc8bc4() {
-  float2 arg_0 = (1.570796371f).xx;
+  float2 arg_0 = (1.57079637050628662109f).xx;
   float2 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.fxc.hlsl
index 1bb1b57..1bc8dd5 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sin_fc8bc4() {
-  float2 arg_0 = (1.570796371f).xx;
+  float2 arg_0 = (1.57079637050628662109f).xx;
   float2 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.glsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.glsl
index e7c0817..042f423 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sin_fc8bc4() {
-  vec2 arg_0 = vec2(1.570796371f);
+  vec2 arg_0 = vec2(1.57079637050628662109f);
   vec2 res = sin(arg_0);
 }
 
@@ -22,7 +22,7 @@
 precision mediump float;
 
 void sin_fc8bc4() {
-  vec2 arg_0 = vec2(1.570796371f);
+  vec2 arg_0 = vec2(1.57079637050628662109f);
   vec2 res = sin(arg_0);
 }
 
@@ -37,7 +37,7 @@
 #version 310 es
 
 void sin_fc8bc4() {
-  vec2 arg_0 = vec2(1.570796371f);
+  vec2 arg_0 = vec2(1.57079637050628662109f);
   vec2 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.msl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.msl
index 4371a51..588e37c 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sin_fc8bc4() {
-  float2 arg_0 = float2(1.570796371f);
+  float2 arg_0 = float2(1.57079637050628662109f);
   float2 res = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl
index 8cfef1d..b14487d 100644
--- a/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl
+++ b/test/tint/builtins/gen/var/sin/fc8bc4.wgsl.expected.wgsl
@@ -1,5 +1,5 @@
 fn sin_fc8bc4() {
-  var arg_0 = vec2<f32>(1.570796371f);
+  var arg_0 = vec2<f32>(1.57079637050628662109f);
   var res : vec2<f32> = sin(arg_0);
 }
 
diff --git a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.dxc.hlsl
index cc0e402..e630d7f 100644
--- a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_77a2a3() {
-  float3 res = (1.175201178f).xxx;
+  float3 res = (1.17520117759704589844f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.fxc.hlsl
index cc0e402..e630d7f 100644
--- a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_77a2a3() {
-  float3 res = (1.175201178f).xxx;
+  float3 res = (1.17520117759704589844f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.glsl b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.glsl
index 4853046..da0114b 100644
--- a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_77a2a3() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_77a2a3() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_77a2a3() {
-  vec3 res = vec3(1.175201178f);
+  vec3 res = vec3(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.msl b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.msl
index 2370cd2..c9d3493 100644
--- a/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sinh/77a2a3.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_77a2a3() {
-  float3 res = float3(1.175201178f);
+  float3 res = float3(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.dxc.hlsl
index 9aef2e9..f87b31d 100644
--- a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_9c1092() {
-  float2 res = (1.175201178f).xx;
+  float2 res = (1.17520117759704589844f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.fxc.hlsl
index 9aef2e9..f87b31d 100644
--- a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_9c1092() {
-  float2 res = (1.175201178f).xx;
+  float2 res = (1.17520117759704589844f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.glsl b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.glsl
index f6a45bd..725e252 100644
--- a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_9c1092() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_9c1092() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_9c1092() {
-  vec2 res = vec2(1.175201178f);
+  vec2 res = vec2(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.msl b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.msl
index 04d9187..c5abd6e4 100644
--- a/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sinh/9c1092.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_9c1092() {
-  float2 res = float2(1.175201178f);
+  float2 res = float2(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.dxc.hlsl
index 32eaad5..432b95d 100644
--- a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_a3da7c() {
-  float4 res = (1.175201178f).xxxx;
+  float4 res = (1.17520117759704589844f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.fxc.hlsl
index 32eaad5..432b95d 100644
--- a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_a3da7c() {
-  float4 res = (1.175201178f).xxxx;
+  float4 res = (1.17520117759704589844f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.glsl b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.glsl
index d0068d8..1a25c28 100644
--- a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_a3da7c() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_a3da7c() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_a3da7c() {
-  vec4 res = vec4(1.175201178f);
+  vec4 res = vec4(1.17520117759704589844f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.msl b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.msl
index 2e9d194..468ea9c 100644
--- a/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sinh/a3da7c.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_a3da7c() {
-  float4 res = float4(1.175201178f);
+  float4 res = float4(1.17520117759704589844f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.dxc.hlsl
index 05a1561..493f629 100644
--- a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.fxc.hlsl
index 05a1561..493f629 100644
--- a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.glsl b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.glsl
index 49d4879..bfe94eae 100644
--- a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.msl b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.msl
index 9cfbeae..cbe42f1 100644
--- a/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/sinh/c4df74.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void sinh_c4df74() {
-  float res = 1.175201178f;
+  float res = 1.17520117759704589844f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.dxc.hlsl
index 0473e41..3401d98 100644
--- a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.fxc.hlsl
index 0473e41..3401d98 100644
--- a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.glsl b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.glsl
index a3a2a8f..fb990ea 100644
--- a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.msl b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.msl
index 91762c3..c8f7db6 100644
--- a/test/tint/builtins/gen/var/tan/311400.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tan/311400.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_311400() {
-  float res = 1.557407737f;
+  float res = 1.55740773677825927734f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.dxc.hlsl
index 8e47663..853f844 100644
--- a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_7be368() {
-  float2 res = (1.557407737f).xx;
+  float2 res = (1.55740773677825927734f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.fxc.hlsl
index 8e47663..853f844 100644
--- a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_7be368() {
-  float2 res = (1.557407737f).xx;
+  float2 res = (1.55740773677825927734f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.glsl b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.glsl
index 32f4892..1ac28bd 100644
--- a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_7be368() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_7be368() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_7be368() {
-  vec2 res = vec2(1.557407737f);
+  vec2 res = vec2(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.msl b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.msl
index 106ec06..38be7fd 100644
--- a/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tan/7be368.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_7be368() {
-  float2 res = float2(1.557407737f);
+  float2 res = float2(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.dxc.hlsl
index fcb1fb7..476c35f 100644
--- a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_a0966f() {
-  float4 res = (1.557407737f).xxxx;
+  float4 res = (1.55740773677825927734f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.fxc.hlsl
index fcb1fb7..476c35f 100644
--- a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_a0966f() {
-  float4 res = (1.557407737f).xxxx;
+  float4 res = (1.55740773677825927734f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.glsl b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.glsl
index ffdb301..5803b3a 100644
--- a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_a0966f() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_a0966f() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_a0966f() {
-  vec4 res = vec4(1.557407737f);
+  vec4 res = vec4(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.msl b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.msl
index 958b44b..35d33ed 100644
--- a/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tan/a0966f.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_a0966f() {
-  float4 res = float4(1.557407737f);
+  float4 res = float4(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.dxc.hlsl
index 3b0cc00..281ae97 100644
--- a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tan_ae26ae() {
-  float3 res = (1.557407737f).xxx;
+  float3 res = (1.55740773677825927734f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.fxc.hlsl
index 3b0cc00..281ae97 100644
--- a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tan_ae26ae() {
-  float3 res = (1.557407737f).xxx;
+  float3 res = (1.55740773677825927734f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.glsl b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.glsl
index bebd277..b920c44 100644
--- a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tan_ae26ae() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tan_ae26ae() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tan_ae26ae() {
-  vec3 res = vec3(1.557407737f);
+  vec3 res = vec3(1.55740773677825927734f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.msl b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.msl
index 6f23097..7bb17f6 100644
--- a/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tan/ae26ae.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tan_ae26ae() {
-  float3 res = float3(1.557407737f);
+  float3 res = float3(1.55740773677825927734f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.dxc.hlsl
index 531d037..c10b04f 100644
--- a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.fxc.hlsl
index 531d037..c10b04f 100644
--- a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.glsl b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.glsl
index 9a6f7ec..74033cd 100644
--- a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.msl b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.msl
index 36f2eb8..bc8a976 100644
--- a/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tanh/313aa1.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_313aa1() {
-  float res = 0.761594176f;
+  float res = 0.76159417629241943359f;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.dxc.hlsl
index b804dc3..7269f3f 100644
--- a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_6289fd() {
-  float3 res = (0.761594176f).xxx;
+  float3 res = (0.76159417629241943359f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.fxc.hlsl
index b804dc3..7269f3f 100644
--- a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_6289fd() {
-  float3 res = (0.761594176f).xxx;
+  float3 res = (0.76159417629241943359f).xxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.glsl b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.glsl
index b883e60..de224d7 100644
--- a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_6289fd() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_6289fd() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_6289fd() {
-  vec3 res = vec3(0.761594176f);
+  vec3 res = vec3(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.msl b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.msl
index 491a4da..d324e64 100644
--- a/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tanh/6289fd.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_6289fd() {
-  float3 res = float3(0.761594176f);
+  float3 res = float3(0.76159417629241943359f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.dxc.hlsl
index 1b0ad28..8f514b0 100644
--- a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_ac5d33() {
-  float4 res = (0.761594176f).xxxx;
+  float4 res = (0.76159417629241943359f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.fxc.hlsl
index 1b0ad28..8f514b0 100644
--- a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_ac5d33() {
-  float4 res = (0.761594176f).xxxx;
+  float4 res = (0.76159417629241943359f).xxxx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.glsl b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.glsl
index 698681d..9687133 100644
--- a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_ac5d33() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_ac5d33() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_ac5d33() {
-  vec4 res = vec4(0.761594176f);
+  vec4 res = vec4(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.msl b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.msl
index a6e681d..385d435 100644
--- a/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tanh/ac5d33.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_ac5d33() {
-  float4 res = float4(0.761594176f);
+  float4 res = float4(0.76159417629241943359f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.dxc.hlsl
index 39bb4df..e8c8480 100644
--- a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_c48aa6() {
-  float2 res = (0.761594176f).xx;
+  float2 res = (0.76159417629241943359f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.fxc.hlsl
index 39bb4df..e8c8480 100644
--- a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 void tanh_c48aa6() {
-  float2 res = (0.761594176f).xx;
+  float2 res = (0.76159417629241943359f).xx;
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.glsl b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.glsl
index fe899fa..767b82c 100644
--- a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 void tanh_c48aa6() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 vec4 vertex_main() {
@@ -21,7 +21,7 @@
 precision mediump float;
 
 void tanh_c48aa6() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 void fragment_main() {
@@ -35,7 +35,7 @@
 #version 310 es
 
 void tanh_c48aa6() {
-  vec2 res = vec2(0.761594176f);
+  vec2 res = vec2(0.76159417629241943359f);
 }
 
 void compute_main() {
diff --git a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.msl b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.msl
index 49ccdba..2826d37 100644
--- a/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.msl
+++ b/test/tint/builtins/gen/var/tanh/c48aa6.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 void tanh_c48aa6() {
-  float2 res = float2(0.761594176f);
+  float2 res = float2(0.76159417629241943359f);
 }
 
 struct tint_symbol {
diff --git a/test/tint/builtins/radians.spvasm.expected.dxc.hlsl b/test/tint/builtins/radians.spvasm.expected.dxc.hlsl
index 2303412..8bd11bf 100644
--- a/test/tint/builtins/radians.spvasm.expected.dxc.hlsl
+++ b/test/tint/builtins/radians.spvasm.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void main_1() {
diff --git a/test/tint/builtins/radians.spvasm.expected.fxc.hlsl b/test/tint/builtins/radians.spvasm.expected.fxc.hlsl
index 2303412..8bd11bf 100644
--- a/test/tint/builtins/radians.spvasm.expected.fxc.hlsl
+++ b/test/tint/builtins/radians.spvasm.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void main_1() {
diff --git a/test/tint/builtins/radians.spvasm.expected.glsl b/test/tint/builtins/radians.spvasm.expected.glsl
index 9081931..9db3554 100644
--- a/test/tint/builtins/radians.spvasm.expected.glsl
+++ b/test/tint/builtins/radians.spvasm.expected.glsl
@@ -1,7 +1,7 @@
 #version 310 es
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295f;
+  return param_0 * 0.01745329251994329547f;
 }
 
 
diff --git a/test/tint/builtins/radians.spvasm.expected.msl b/test/tint/builtins/radians.spvasm.expected.msl
index fa65e53..5aafdd3 100644
--- a/test/tint/builtins/radians.spvasm.expected.msl
+++ b/test/tint/builtins/radians.spvasm.expected.msl
@@ -3,7 +3,7 @@
 using namespace metal;
 
 float tint_radians(float param_0) {
-  return param_0 * 0.017453292519943295;
+  return param_0 * 0.01745329251994329547;
 }
 
 void main_1() {
diff --git a/test/tint/builtins/repeated_use.wgsl.expected.dxc.hlsl b/test/tint/builtins/repeated_use.wgsl.expected.dxc.hlsl
index f17d098..241b7e1 100644
--- a/test/tint/builtins/repeated_use.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/repeated_use.wgsl.expected.dxc.hlsl
@@ -1,17 +1,17 @@
 float4 tint_degrees(float4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float3 tint_degrees_1(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float2 tint_degrees_2(float2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float tint_degrees_3(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/builtins/repeated_use.wgsl.expected.fxc.hlsl b/test/tint/builtins/repeated_use.wgsl.expected.fxc.hlsl
index f17d098..241b7e1 100644
--- a/test/tint/builtins/repeated_use.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/repeated_use.wgsl.expected.fxc.hlsl
@@ -1,17 +1,17 @@
 float4 tint_degrees(float4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float3 tint_degrees_1(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float2 tint_degrees_2(float2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float tint_degrees_3(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 [numthreads(1, 1, 1)]
diff --git a/test/tint/builtins/repeated_use.wgsl.expected.glsl b/test/tint/builtins/repeated_use.wgsl.expected.glsl
index bcb62f2..65dc980 100644
--- a/test/tint/builtins/repeated_use.wgsl.expected.glsl
+++ b/test/tint/builtins/repeated_use.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
 vec4 tint_degrees(vec4 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 vec3 tint_degrees_1(vec3 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 vec2 tint_degrees_2(vec2 param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 float tint_degrees_3(float param_0) {
-  return param_0 * 57.295779513082323f;
+  return param_0 * 57.29577951308232286465f;
 }
 
 
diff --git a/test/tint/builtins/repeated_use.wgsl.expected.msl b/test/tint/builtins/repeated_use.wgsl.expected.msl
index 34f83f3..d1375b7 100644
--- a/test/tint/builtins/repeated_use.wgsl.expected.msl
+++ b/test/tint/builtins/repeated_use.wgsl.expected.msl
@@ -3,19 +3,19 @@
 using namespace metal;
 
 float4 tint_degrees(float4 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float3 tint_degrees_1(float3 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float2 tint_degrees_2(float2 param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 float tint_degrees_3(float param_0) {
-  return param_0 * 57.295779513082323;
+  return param_0 * 57.29577951308232286465;
 }
 
 kernel void tint_symbol() {
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.dxc.hlsl b/test/tint/extensions/parsing/basic.wgsl.expected.dxc.hlsl
index 1af441a..02332f3 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 };
 
 float4 main_inner() {
-  return float4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return float4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 tint_symbol main() {
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.fxc.hlsl b/test/tint/extensions/parsing/basic.wgsl.expected.fxc.hlsl
index 1af441a..02332f3 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 };
 
 float4 main_inner() {
-  return float4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return float4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 tint_symbol main() {
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.glsl b/test/tint/extensions/parsing/basic.wgsl.expected.glsl
index c4ffd0e..c1a28e1 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.glsl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(location = 0) out vec4 value;
 vec4 tint_symbol() {
-  return vec4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return vec4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 void main() {
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.msl b/test/tint/extensions/parsing/basic.wgsl.expected.msl
index dc91926..8eb15e9 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.msl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 float4 tint_symbol_inner() {
-  return float4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return float4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 fragment tint_symbol_1 tint_symbol() {
diff --git a/test/tint/extensions/parsing/basic.wgsl.expected.wgsl b/test/tint/extensions/parsing/basic.wgsl.expected.wgsl
index 0cbd662..5e60abe 100644
--- a/test/tint/extensions/parsing/basic.wgsl.expected.wgsl
+++ b/test/tint/extensions/parsing/basic.wgsl.expected.wgsl
@@ -2,5 +2,5 @@
 
 @fragment
 fn main() -> @location(0) vec4<f32> {
-  return vec4<f32>(0.1, 0.2, 0.3, 0.4);
+  return vec4<f32>(0.10000000000000000555, 0.2000000000000000111, 0.2999999999999999889, 0.4000000000000000222);
 }
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.dxc.hlsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.dxc.hlsl
index 1af441a..02332f3 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.dxc.hlsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.dxc.hlsl
@@ -3,7 +3,7 @@
 };
 
 float4 main_inner() {
-  return float4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return float4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 tint_symbol main() {
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.fxc.hlsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.fxc.hlsl
index 1af441a..02332f3 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.fxc.hlsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.fxc.hlsl
@@ -3,7 +3,7 @@
 };
 
 float4 main_inner() {
-  return float4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return float4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 tint_symbol main() {
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.glsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.glsl
index c4ffd0e..c1a28e1 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.glsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.glsl
@@ -4,7 +4,7 @@
 
 layout(location = 0) out vec4 value;
 vec4 tint_symbol() {
-  return vec4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return vec4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 void main() {
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.msl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.msl
index dc91926..8eb15e9 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.msl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.msl
@@ -6,7 +6,7 @@
 };
 
 float4 tint_symbol_inner() {
-  return float4(0.100000001f, 0.200000003f, 0.300000012f, 0.400000006f);
+  return float4(0.10000000149011611938f, 0.20000000298023223877f, 0.30000001192092895508f, 0.40000000596046447754f);
 }
 
 fragment tint_symbol_1 tint_symbol() {
diff --git a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl
index c0c6259..751775e 100644
--- a/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl
+++ b/test/tint/extensions/parsing/duplicated_extensions.wgsl.expected.wgsl
@@ -4,5 +4,5 @@
 
 @fragment
 fn main() -> @location(0) vec4<f32> {
-  return vec4<f32>(0.1, 0.2, 0.3, 0.4);
+  return vec4<f32>(0.10000000000000000555, 0.2000000000000000111, 0.2999999999999999889, 0.4000000000000000222);
 }
diff --git a/test/tint/samples/compute_boids.wgsl.expected.dxc.hlsl b/test/tint/samples/compute_boids.wgsl.expected.dxc.hlsl
index e4d736d..5c07332 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.dxc.hlsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.dxc.hlsl
@@ -86,7 +86,7 @@
     cVel = (cVel / float2(float(cVelCount), float(cVelCount)));
   }
   vVel = (((vVel + (cMass * asfloat(params[1].x))) + (colVel * asfloat(params[1].y))) + (cVel * asfloat(params[1].z)));
-  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
+  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
   vPos = (vPos + (vVel * asfloat(params[0].x)));
   if ((vPos.x < -1.0f)) {
     vPos.x = 1.0f;
diff --git a/test/tint/samples/compute_boids.wgsl.expected.fxc.hlsl b/test/tint/samples/compute_boids.wgsl.expected.fxc.hlsl
index e4d736d..5c07332 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.fxc.hlsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.fxc.hlsl
@@ -86,7 +86,7 @@
     cVel = (cVel / float2(float(cVelCount), float(cVelCount)));
   }
   vVel = (((vVel + (cMass * asfloat(params[1].x))) + (colVel * asfloat(params[1].y))) + (cVel * asfloat(params[1].z)));
-  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
+  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
   vPos = (vPos + (vVel * asfloat(params[0].x)));
   if ((vPos.x < -1.0f)) {
     vPos.x = 1.0f;
diff --git a/test/tint/samples/compute_boids.wgsl.expected.glsl b/test/tint/samples/compute_boids.wgsl.expected.glsl
index 9cc783d..5ce44e5 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.glsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.glsl
@@ -143,7 +143,7 @@
     cVel = (cVel / vec2(float(cVelCount), float(cVelCount)));
   }
   vVel = (((vVel + (cMass * params.inner.rule1Scale)) + (colVel * params.inner.rule2Scale)) + (cVel * params.inner.rule3Scale));
-  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
+  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
   vPos = (vPos + (vVel * params.inner.deltaT));
   if ((vPos.x < -1.0f)) {
     vPos.x = 1.0f;
diff --git a/test/tint/samples/compute_boids.wgsl.expected.msl b/test/tint/samples/compute_boids.wgsl.expected.msl
index 3a8d9cc..dd67382 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.msl
+++ b/test/tint/samples/compute_boids.wgsl.expected.msl
@@ -110,7 +110,7 @@
     cVel = (cVel / float2(float(cVelCount), float(cVelCount)));
   }
   vVel = (((vVel + (cMass * (*(tint_symbol_5)).rule1Scale)) + (colVel * (*(tint_symbol_5)).rule2Scale)) + (cVel * (*(tint_symbol_5)).rule3Scale));
-  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
+  vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.10000000149011611938f));
   vPos = (vPos + (vVel * (*(tint_symbol_5)).deltaT));
   if ((vPos[0] < -1.0f)) {
     vPos[0] = 1.0f;
diff --git a/test/tint/samples/compute_boids.wgsl.expected.wgsl b/test/tint/samples/compute_boids.wgsl.expected.wgsl
index fd43650..e7e3d62 100644
--- a/test/tint/samples/compute_boids.wgsl.expected.wgsl
+++ b/test/tint/samples/compute_boids.wgsl.expected.wgsl
@@ -75,7 +75,7 @@
     cVel = (cVel / vec2<f32>(f32(cVelCount), f32(cVelCount)));
   }
   vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
-  vVel = (normalize(vVel) * clamp(length(vVel), 0.0, 0.1));
+  vVel = (normalize(vVel) * clamp(length(vVel), 0.0, 0.10000000000000000555));
   vPos = (vPos + (vVel * params.deltaT));
   if ((vPos.x < -(1.0))) {
     vPos.x = 1.0;
diff --git a/test/tint/samples/function.wgsl.expected.dxc.hlsl b/test/tint/samples/function.wgsl.expected.dxc.hlsl
index 8073117..f8dc23c 100644
--- a/test/tint/samples/function.wgsl.expected.dxc.hlsl
+++ b/test/tint/samples/function.wgsl.expected.dxc.hlsl
@@ -1,5 +1,5 @@
 float main() {
-  return 0.400000006f;
+  return 0.40000000596046447754f;
 }
 
 [numthreads(2, 1, 1)]
diff --git a/test/tint/samples/function.wgsl.expected.fxc.hlsl b/test/tint/samples/function.wgsl.expected.fxc.hlsl
index 8073117..f8dc23c 100644
--- a/test/tint/samples/function.wgsl.expected.fxc.hlsl
+++ b/test/tint/samples/function.wgsl.expected.fxc.hlsl
@@ -1,5 +1,5 @@
 float main() {
-  return 0.400000006f;
+  return 0.40000000596046447754f;
 }
 
 [numthreads(2, 1, 1)]
diff --git a/test/tint/samples/function.wgsl.expected.msl b/test/tint/samples/function.wgsl.expected.msl
index 6c3ffad..43d2a28 100644
--- a/test/tint/samples/function.wgsl.expected.msl
+++ b/test/tint/samples/function.wgsl.expected.msl
@@ -2,7 +2,7 @@
 
 using namespace metal;
 float tint_symbol() {
-  return 0.400000006f;
+  return 0.40000000596046447754f;
 }
 
 kernel void ep() {
diff --git a/test/tint/samples/simple.wgsl.expected.dxc.hlsl b/test/tint/samples/simple.wgsl.expected.dxc.hlsl
index f47bf23..5259446 100644
--- a/test/tint/samples/simple.wgsl.expected.dxc.hlsl
+++ b/test/tint/samples/simple.wgsl.expected.dxc.hlsl
@@ -8,7 +8,7 @@
 float4 main_inner() {
   float2 a = (0.0f).xx;
   bar();
-  return float4(0.400000006f, 0.400000006f, 0.800000012f, 1.0f);
+  return float4(0.40000000596046447754f, 0.40000000596046447754f, 0.80000001192092895508f, 1.0f);
 }
 
 tint_symbol main() {
diff --git a/test/tint/samples/simple.wgsl.expected.fxc.hlsl b/test/tint/samples/simple.wgsl.expected.fxc.hlsl
index f47bf23..5259446 100644
--- a/test/tint/samples/simple.wgsl.expected.fxc.hlsl
+++ b/test/tint/samples/simple.wgsl.expected.fxc.hlsl
@@ -8,7 +8,7 @@
 float4 main_inner() {
   float2 a = (0.0f).xx;
   bar();
-  return float4(0.400000006f, 0.400000006f, 0.800000012f, 1.0f);
+  return float4(0.40000000596046447754f, 0.40000000596046447754f, 0.80000001192092895508f, 1.0f);
 }
 
 tint_symbol main() {
diff --git a/test/tint/samples/simple.wgsl.expected.glsl b/test/tint/samples/simple.wgsl.expected.glsl
index 3e4dabe..744aeba 100644
--- a/test/tint/samples/simple.wgsl.expected.glsl
+++ b/test/tint/samples/simple.wgsl.expected.glsl
@@ -8,7 +8,7 @@
 vec4 tint_symbol() {
   vec2 a = vec2(0.0f);
   bar();
-  return vec4(0.400000006f, 0.400000006f, 0.800000012f, 1.0f);
+  return vec4(0.40000000596046447754f, 0.40000000596046447754f, 0.80000001192092895508f, 1.0f);
 }
 
 void main() {
diff --git a/test/tint/samples/simple.wgsl.expected.msl b/test/tint/samples/simple.wgsl.expected.msl
index d84f872..5527033 100644
--- a/test/tint/samples/simple.wgsl.expected.msl
+++ b/test/tint/samples/simple.wgsl.expected.msl
@@ -11,7 +11,7 @@
 float4 tint_symbol_inner() {
   float2 a = float2(0.0f);
   bar();
-  return float4(0.400000006f, 0.400000006f, 0.800000012f, 1.0f);
+  return float4(0.40000000596046447754f, 0.40000000596046447754f, 0.80000001192092895508f, 1.0f);
 }
 
 fragment tint_symbol_1 tint_symbol() {
diff --git a/test/tint/samples/simple.wgsl.expected.wgsl b/test/tint/samples/simple.wgsl.expected.wgsl
index cf8998d..b5993e6 100644
--- a/test/tint/samples/simple.wgsl.expected.wgsl
+++ b/test/tint/samples/simple.wgsl.expected.wgsl
@@ -5,5 +5,5 @@
 fn main() -> @location(0) vec4<f32> {
   var a : vec2<f32> = vec2<f32>();
   bar();
-  return vec4<f32>(0.4, 0.4, 0.8, 1.0);
+  return vec4<f32>(0.4000000000000000222, 0.4000000000000000222, 0.80000000000000004441, 1.0);
 }
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.dxc.hlsl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.dxc.hlsl
index da8ae77..d3fa32c 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.dxc.hlsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.dxc.hlsl
@@ -10,7 +10,7 @@
 };
 
 Interface vert_main_inner() {
-  const Interface tint_symbol_3 = {0.400000006f, 0.600000024f, (0.0f).xxxx};
+  const Interface tint_symbol_3 = {0.40000000596046447754f, 0.60000002384185791016f, (0.0f).xxxx};
   return tint_symbol_3;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.fxc.hlsl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.fxc.hlsl
index da8ae77..d3fa32c 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.fxc.hlsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.fxc.hlsl
@@ -10,7 +10,7 @@
 };
 
 Interface vert_main_inner() {
-  const Interface tint_symbol_3 = {0.400000006f, 0.600000024f, (0.0f).xxxx};
+  const Interface tint_symbol_3 = {0.40000000596046447754f, 0.60000002384185791016f, (0.0f).xxxx};
   return tint_symbol_3;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.glsl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.glsl
index 5e359e2..07f9a1a 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.glsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.glsl
@@ -9,7 +9,7 @@
 };
 
 Interface vert_main() {
-  Interface tint_symbol = Interface(0.400000006f, 0.600000024f, vec4(0.0f));
+  Interface tint_symbol = Interface(0.40000000596046447754f, 0.60000002384185791016f, vec4(0.0f));
   return tint_symbol;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.msl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.msl
index 123f2d1..60742fa 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.msl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.msl
@@ -14,7 +14,7 @@
 };
 
 Interface vert_main_inner() {
-  Interface const tint_symbol_3 = Interface{.col1=0.400000006f, .col2=0.600000024f, .pos=float4(0.0f)};
+  Interface const tint_symbol_3 = Interface{.col1=0.40000000596046447754f, .col2=0.60000002384185791016f, .pos=float4(0.0f)};
   return tint_symbol_3;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
index ddd459f..ee3a870 100644
--- a/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
@@ -9,7 +9,7 @@
 
 @vertex
 fn vert_main() -> Interface {
-  return Interface(0.4, 0.6, vec4<f32>());
+  return Interface(0.4000000000000000222, 0.5999999999999999778, vec4<f32>());
 }
 
 @fragment
diff --git a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.dxc.hlsl b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.dxc.hlsl
index d33f3d2..a05bfee 100644
--- a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.dxc.hlsl
+++ b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.dxc.hlsl
@@ -10,7 +10,7 @@
 };
 
 Interface vert_main_inner() {
-  const Interface tint_symbol_3 = {0.400000006f, float16_t(0.599609375h), (0.0f).xxxx};
+  const Interface tint_symbol_3 = {0.40000000596046447754f, float16_t(0.599609375h), (0.0f).xxxx};
   return tint_symbol_3;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.glsl b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.glsl
index 2386543..d9987d0 100644
--- a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.glsl
+++ b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.glsl
@@ -10,7 +10,7 @@
 };
 
 Interface vert_main() {
-  Interface tint_symbol = Interface(0.400000006f, 0.599609375hf, vec4(0.0f));
+  Interface tint_symbol = Interface(0.40000000596046447754f, 0.599609375hf, vec4(0.0f));
   return tint_symbol;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.msl b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.msl
index 5bccb63..b68cc0b 100644
--- a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.msl
+++ b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.msl
@@ -14,7 +14,7 @@
 };
 
 Interface vert_main_inner() {
-  Interface const tint_symbol_3 = Interface{.col1=0.400000006f, .col2=0.599609375h, .pos=float4(0.0f)};
+  Interface const tint_symbol_3 = Interface{.col1=0.40000000596046447754f, .col2=0.599609375h, .pos=float4(0.0f)};
   return tint_symbol_3;
 }
 
diff --git a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.wgsl b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.wgsl
index 44c3dc6..9292969 100644
--- a/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.wgsl
+++ b/test/tint/shader_io/shared_struct_different_stages_f16.wgsl.expected.wgsl
@@ -11,7 +11,7 @@
 
 @vertex
 fn vert_main() -> Interface {
-  return Interface(0.4, 0.599609375h, vec4<f32>());
+  return Interface(0.4000000000000000222, 0.599609375h, vec4<f32>());
 }
 
 @fragment