tint/reader/wgsl: Use C++17 hex floats for tests

C++17 supports hex float literals. Use these to simplifty the test expectations.

Bug: tint:1504
Change-Id: Id47b0963da93f3b5da261c72fe863e791c16af1f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/91427
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
diff --git a/src/tint/reader/wgsl/parser_impl_const_literal_test.cc b/src/tint/reader/wgsl/parser_impl_const_literal_test.cc
index cc0f22a..5d882ca 100644
--- a/src/tint/reader/wgsl/parser_impl_const_literal_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_const_literal_test.cc
@@ -14,7 +14,6 @@
 
 #include "src/tint/reader/wgsl/parser_impl_test_helper.h"
 
-#include <cmath>
 #include <cstring>
 
 #include "gmock/gmock.h"
@@ -22,25 +21,6 @@
 namespace tint::reader::wgsl {
 namespace {
 
-// Makes an IEEE 754 binary32 floating point number with
-// - 0 sign if sign is 0, 1 otherwise
-// - 'exponent_bits' is placed in the exponent space.
-//   So, the exponent bias must already be included.
-float MakeFloat(uint32_t sign, uint32_t biased_exponent, uint32_t mantissa) {
-    const uint32_t sign_bit = sign ? 0x80000000u : 0u;
-    // The binary32 exponent is 8 bits, just below the sign.
-    const uint32_t exponent_bits = (biased_exponent & 0xffu) << 23;
-    // The mantissa is the bottom 23 bits.
-    const uint32_t mantissa_bits = (mantissa & 0x7fffffu);
-
-    uint32_t bits = sign_bit | exponent_bits | mantissa_bits;
-    float result = 0.0f;
-    static_assert(sizeof(result) == sizeof(bits),
-                  "expected float and uint32_t to be the same size");
-    std::memcpy(&result, &bits, sizeof(bits));
-    return result;
-}
-
 // Makes an IEEE 754 binary64 floating point number with
 // - 0 sign if sign is 0, 1 otherwise
 // - 'exponent_bits' is placed in the exponent space.
@@ -263,106 +243,106 @@
 FloatLiteralTestCaseList HexFloatCases() {
     return FloatLiteralTestCaseList{
         // Regular numbers
-        {"0x0p+0", 0.0},
-        {"0x1p+0", 1.0},
-        {"0x1p+1", 2.0},
-        {"0x1.8p+1", 3.0},
-        {"0x1.99999ap-4", 0.10000000149011612},
-        {"0x1p-1", 0.5},
-        {"0x1p-2", 0.25},
-        {"0x1.8p-1", 0.75},
-        {"-0x0p+0", -0.0},
-        {"-0x1p+0", -1.0},
-        {"-0x1p-1", -0.5},
-        {"-0x1p-2", -0.25},
-        {"-0x1.8p-1", -0.75},
+        {"0x0p+0", 0x0p+0},
+        {"0x1p+0", 0x1p+0},
+        {"0x1p+1", 0x1p+1},
+        {"0x1.8p+1", 0x1.8p+1},
+        {"0x1.99999ap-4", 0x1.99999ap-4},
+        {"0x1p-1", 0x1p-1},
+        {"0x1p-2", 0x1p-2},
+        {"0x1.8p-1", 0x1.8p-1},
+        {"-0x0p+0", -0x0p+0},
+        {"-0x1p+0", -0x1p+0},
+        {"-0x1p-1", -0x1p-1},
+        {"-0x1p-2", -0x1p-2},
+        {"-0x1.8p-1", -0x1.8p-1},
 
         // Large numbers
-        {"0x1p+9", 512.0},
-        {"0x1p+10", 1024.0},
-        {"0x1.02p+10", 1024.0 + 8.0},
-        {"-0x1p+9", -512.0},
-        {"-0x1p+10", -1024.0},
-        {"-0x1.02p+10", -1024.0 - 8.0},
+        {"0x1p+9", 0x1p+9},
+        {"0x1p+10", 0x1p+10},
+        {"0x1.02p+10", 0x1.02p+10},
+        {"-0x1p+9", -0x1p+9},
+        {"-0x1p+10", -0x1p+10},
+        {"-0x1.02p+10", -0x1.02p+10},
 
         // Small numbers
-        {"0x1p-9", 1.0 / 512.0},
-        {"0x1p-10", 1.0 / 1024.0},
-        {"0x1.02p-3", 1.0 / 1024.0 + 1.0 / 8.0},
-        {"-0x1p-9", 1.0 / -512.0},
-        {"-0x1p-10", 1.0 / -1024.0},
-        {"-0x1.02p-3", 1.0 / -1024.0 - 1.0 / 8.0},
+        {"0x1p-9", 0x1p-9},
+        {"0x1p-10", 0x1p-10},
+        {"0x1.02p-3", 0x1.02p-3},
+        {"-0x1p-9", -0x1p-9},
+        {"-0x1p-10", -0x1p-10},
+        {"-0x1.02p-3", -0x1.02p-3},
 
         // Near lowest non-denorm
-        {"0x1p-1020", std::ldexp(1.0 * 8.0, -1023)},
-        {"0x1p-1021", std::ldexp(1.0 * 4.0, -1023)},
-        {"-0x1p-1020", -std::ldexp(1.0 * 8.0, -1023)},
-        {"-0x1p-1021", -std::ldexp(1.0 * 4.0, -1023)},
+        {"0x1p-1020", 0x1p-1020},
+        {"0x1p-1021", 0x1p-1021},
+        {"-0x1p-1020", -0x1p-1020},
+        {"-0x1p-1021", -0x1p-1021},
 
-        {"0x1p-124f", std::ldexp(1.0 * 8.0, -127)},
-        {"0x1p-125f", std::ldexp(1.0 * 4.0, -127)},
-        {"-0x1p-124f", -std::ldexp(1.0 * 8.0, -127)},
-        {"-0x1p-125f", -std::ldexp(1.0 * 4.0, -127)},
+        {"0x1p-124f", 0x1p-124},
+        {"0x1p-125f", 0x1p-125},
+        {"-0x1p-124f", -0x1p-124},
+        {"-0x1p-125f", -0x1p-125},
 
         // Lowest non-denorm
-        {"0x1p-1022", std::ldexp(1.0 * 2.0, -1023)},
-        {"-0x1p-1022", -std::ldexp(1.0 * 2.0, -1023)},
+        {"0x1p-1022", 0x1p-1022},
+        {"-0x1p-1022", -0x1p-1022},
 
-        {"0x1p-126f", std::ldexp(1.0 * 2.0, -127)},
-        {"-0x1p-126f", -std::ldexp(1.0 * 2.0, -127)},
+        {"0x1p-126f", 0x1p-126},
+        {"-0x1p-126f", -0x1p-126},
 
         // Denormalized values
-        {"0x1p-1023", std::ldexp(1.0, -1023)},
-        {"0x1p-1024", std::ldexp(1.0 / 2.0, -1023)},
-        {"0x1p-1025", std::ldexp(1.0 / 4.0, -1023)},
-        {"0x1p-1026", std::ldexp(1.0 / 8.0, -1023)},
-        {"-0x1p-1023", -std::ldexp(1.0, -1023)},
-        {"-0x1p-1024", -std::ldexp(1.0 / 2.0, -1023)},
-        {"-0x1p-1025", -std::ldexp(1.0 / 4.0, -1023)},
-        {"-0x1p-1026", -std::ldexp(1.0 / 8.0, -1023)},
-        {"0x1.8p-1023", std::ldexp(1.0, -1023) + (std::ldexp(1.0, -1023) / 2.0)},
-        {"0x1.8p-1024", std::ldexp(1.0, -1023) / 2.0 + (std::ldexp(1.0, -1023) / 4.0)},
+        {"0x1p-1023", 0x1p-1023},
+        {"0x1p-1024", 0x1p-1024},
+        {"0x1p-1025", 0x1p-1025},
+        {"0x1p-1026", 0x1p-1026},
+        {"-0x1p-1023", -0x1p-1023},
+        {"-0x1p-1024", -0x1p-1024},
+        {"-0x1p-1025", -0x1p-1025},
+        {"-0x1p-1026", -0x1p-1026},
+        {"0x1.8p-1023", 0x1.8p-1023},
+        {"0x1.8p-1024", 0x1.8p-1024},
 
-        {"0x1p-127f", std::ldexp(1.0, -127)},
-        {"0x1p-128f", std::ldexp(1.0 / 2.0, -127)},
-        {"0x1p-129f", std::ldexp(1.0 / 4.0, -127)},
-        {"0x1p-130f", std::ldexp(1.0 / 8.0, -127)},
-        {"-0x1p-127f", -std::ldexp(1.0, -127)},
-        {"-0x1p-128f", -std::ldexp(1.0 / 2.0, -127)},
-        {"-0x1p-129f", -std::ldexp(1.0 / 4.0, -127)},
-        {"-0x1p-130f", -std::ldexp(1.0 / 8.0, -127)},
-        {"0x1.8p-127f", std::ldexp(1.0, -127) + (std::ldexp(1.0, -127) / 2.0)},
-        {"0x1.8p-128f", std::ldexp(1.0, -127) / 2.0 + (std::ldexp(1.0, -127) / 4.0)},
+        {"0x1p-127f", 0x1p-127},
+        {"0x1p-128f", 0x1p-128},
+        {"0x1p-129f", 0x1p-129},
+        {"0x1p-130f", 0x1p-130},
+        {"-0x1p-127f", -0x1p-127},
+        {"-0x1p-128f", -0x1p-128},
+        {"-0x1p-129f", -0x1p-129},
+        {"-0x1p-130f", -0x1p-130},
+        {"0x1.8p-127f", 0x1.8p-127},
+        {"0x1.8p-128f", 0x1.8p-128},
 
         // F64 extremities
-        {"0x1p-1074", MakeDouble(0, 0, 1)},                             // +SmallestDenormal
-        {"0x1p-1073", MakeDouble(0, 0, 2)},                             // +BiggerDenormal
-        {"0x1.ffffffffffffp-1027", MakeDouble(0, 0, 0xffffffffffff)},   // +LargestDenormal
-        {"-0x1p-1074", MakeDouble(1, 0, 1)},                            // -SmallestDenormal
-        {"-0x1p-1073", MakeDouble(1, 0, 2)},                            // -BiggerDenormal
-        {"-0x1.ffffffffffffp-1027", MakeDouble(1, 0, 0xffffffffffff)},  // -LargestDenormal
+        {"0x1p-1074", 0x1p-1074},                              // +SmallestDenormal
+        {"0x1p-1073", 0x1p-1073},                              // +BiggerDenormal
+        {"0x1.ffffffffffffp-1027", 0x1.ffffffffffffp-1027},    // +LargestDenormal
+        {"-0x1p-1074", -0x1p-1074},                            // -SmallestDenormal
+        {"-0x1p-1073", -0x1p-1073},                            // -BiggerDenormal
+        {"-0x1.ffffffffffffp-1027", -0x1.ffffffffffffp-1027},  // -LargestDenormal
 
-        {"0x0.cafebeeff000dp-1022", MakeDouble(0, 0, 0xcafebeeff000d)},   // +Subnormal
-        {"-0x0.cafebeeff000dp-1022", MakeDouble(1, 0, 0xcafebeeff000d)},  // -Subnormal
-        {"0x1.2bfaf8p-1052", MakeDouble(0, 0, 0x4afebe)},                 // +Subnormal
-        {"-0x1.2bfaf8p-1052", MakeDouble(1, 0, 0x4afebe)},                // +Subnormal
-        {"0x1.55554p-1055", MakeDouble(0, 0, 0xaaaaa)},                   // +Subnormal
-        {"-0x1.55554p-1055", MakeDouble(1, 0, 0xaaaaa)},                  // -Subnormal
+        {"0x0.cafebeeff000dp-1022", 0x0.cafebeeff000dp-1022},    // +Subnormal
+        {"-0x0.cafebeeff000dp-1022", -0x0.cafebeeff000dp-1022},  // -Subnormal
+        {"0x1.2bfaf8p-1052", 0x1.2bfaf8p-1052},                  // +Subnormal
+        {"-0x1.2bfaf8p-1052", -0x1.2bfaf8p-1052},                // +Subnormal
+        {"0x1.55554p-1055", 0x1.55554p-1055},                    // +Subnormal
+        {"-0x1.55554p-1055", -0x1.55554p-1055},                  // -Subnormal
 
         // F32 extremities
-        {"0x1p-149", static_cast<double>(MakeFloat(0, 0, 1))},                 // +SmallestDenormal
-        {"0x1p-148", static_cast<double>(MakeFloat(0, 0, 2))},                 // +BiggerDenormal
-        {"0x1.fffffcp-127", static_cast<double>(MakeFloat(0, 0, 0x7fffff))},   // +LargestDenormal
-        {"-0x1p-149", static_cast<double>(MakeFloat(1, 0, 1))},                // -SmallestDenormal
-        {"-0x1p-148", static_cast<double>(MakeFloat(1, 0, 2))},                // -BiggerDenormal
-        {"-0x1.fffffcp-127", static_cast<double>(MakeFloat(1, 0, 0x7fffff))},  // -LargestDenormal
+        {"0x1p-149", 0x1p-149},                  // +SmallestDenormal
+        {"0x1p-148", 0x1p-148},                  // +BiggerDenormal
+        {"0x1.fffffcp-127", 0x1.fffffcp-127},    // +LargestDenormal
+        {"-0x1p-149", -0x1p-149},                // -SmallestDenormal
+        {"-0x1p-148", -0x1p-148},                // -BiggerDenormal
+        {"-0x1.fffffcp-127", -0x1.fffffcp-127},  // -LargestDenormal
 
-        {"0x0.cafebp-129", static_cast<double>(MakeFloat(0, 0, 0xcafeb))},     // +Subnormal
-        {"-0x0.cafebp-129", static_cast<double>(MakeFloat(1, 0, 0xcafeb))},    // -Subnormal
-        {"0x1.2bfaf8p-127", static_cast<double>(MakeFloat(0, 0, 0x4afebe))},   // +Subnormal
-        {"-0x1.2bfaf8p-127", static_cast<double>(MakeFloat(1, 0, 0x4afebe))},  // -Subnormal
-        {"0x1.55554p-130", static_cast<double>(MakeFloat(0, 0, 0xaaaaa))},     // +Subnormal
-        {"-0x1.55554p-130", static_cast<double>(MakeFloat(1, 0, 0xaaaaa))},    // -Subnormal
+        {"0x0.cafebp-129", 0x0.cafebp-129},      // +Subnormal
+        {"-0x0.cafebp-129", -0x0.cafebp-129},    // -Subnormal
+        {"0x1.2bfaf8p-127", 0x1.2bfaf8p-127},    // +Subnormal
+        {"-0x1.2bfaf8p-127", -0x1.2bfaf8p-127},  // -Subnormal
+        {"0x1.55554p-130", 0x1.55554p-130},      // +Subnormal
+        {"-0x1.55554p-130", -0x1.55554p-130},    // -Subnormal
 
         // Underflow -> Zero
         {"0x1p-1074", 0.0},  // Exponent underflows