Re-enable float emission tests

Test a value that should stably convert to decimal exponent
representation.  This might be working around a bug in the MSVC runtime
library.

Bug: tint:201
Change-Id: I37200cef815cafc35284c8c873dfbb8a5312360e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27160
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/writer/hlsl/generator_impl_constructor_test.cc b/src/writer/hlsl/generator_impl_constructor_test.cc
index 0fed10e..823fa21 100644
--- a/src/writer/hlsl/generator_impl_constructor_test.cc
+++ b/src/writer/hlsl/generator_impl_constructor_test.cc
@@ -69,15 +69,16 @@
   EXPECT_EQ(g.result(), "56779u");
 }
 
-TEST_F(HlslGeneratorImplTest, DISABLED_EmitConstructor_Float) {
+TEST_F(HlslGeneratorImplTest, EmitConstructor_Float) {
   ast::type::F32Type f32;
-  auto lit = std::make_unique<ast::FloatLiteral>(&f32, 1.5e27);
+  // Use a number close to 1<<30 but whose decimal representation ends in 0.
+  auto lit = std::make_unique<ast::FloatLiteral>(&f32, float((1 << 30) - 4));
   ast::ScalarConstructorExpression expr(std::move(lit));
 
   ast::Module m;
   GeneratorImpl g(&m);
   ASSERT_TRUE(g.EmitConstructor(&expr)) << g.error();
-  EXPECT_EQ(g.result(), "1.49999995e+27f");
+  EXPECT_EQ(g.result(), "1.07374182e+09f");
 }
 
 TEST_F(HlslGeneratorImplTest, EmitConstructor_Type_Float) {
diff --git a/src/writer/msl/generator_impl_constructor_test.cc b/src/writer/msl/generator_impl_constructor_test.cc
index bbcd830..13fc4eb 100644
--- a/src/writer/msl/generator_impl_constructor_test.cc
+++ b/src/writer/msl/generator_impl_constructor_test.cc
@@ -69,15 +69,16 @@
   EXPECT_EQ(g.result(), "56779u");
 }
 
-TEST_F(MslGeneratorImplTest, DISABLED_EmitConstructor_Float) {
+TEST_F(MslGeneratorImplTest, EmitConstructor_Float) {
   ast::type::F32Type f32;
-  auto lit = std::make_unique<ast::FloatLiteral>(&f32, 1.5e27);
+  // Use a number close to 1<<30 but whose decimal representation ends in 0.
+  auto lit = std::make_unique<ast::FloatLiteral>(&f32, float((1 << 30) - 4));
   ast::ScalarConstructorExpression expr(std::move(lit));
 
   ast::Module m;
   GeneratorImpl g(&m);
   ASSERT_TRUE(g.EmitConstructor(&expr)) << g.error();
-  EXPECT_EQ(g.result(), "1.49999995e+27f");
+  EXPECT_EQ(g.result(), "1.07374182e+09f");
 }
 
 TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Float) {
diff --git a/src/writer/wgsl/generator_impl_constructor_test.cc b/src/writer/wgsl/generator_impl_constructor_test.cc
index c97546b..9ce40ec 100644
--- a/src/writer/wgsl/generator_impl_constructor_test.cc
+++ b/src/writer/wgsl/generator_impl_constructor_test.cc
@@ -64,14 +64,15 @@
   EXPECT_EQ(g.result(), "56779u");
 }
 
-TEST_F(WgslGeneratorImplTest, DISABLED_EmitConstructor_Float) {
+TEST_F(WgslGeneratorImplTest, EmitConstructor_Float) {
   ast::type::F32Type f32;
-  auto lit = std::make_unique<ast::FloatLiteral>(&f32, 1.5e27);
+  // Use a number close to 1<<30 but whose decimal representation ends in 0.
+  auto lit = std::make_unique<ast::FloatLiteral>(&f32, float((1 << 30) - 4));
   ast::ScalarConstructorExpression expr(std::move(lit));
 
   GeneratorImpl g;
   ASSERT_TRUE(g.EmitConstructor(&expr)) << g.error();
-  EXPECT_EQ(g.result(), "1.49999995e+27");
+  EXPECT_EQ(g.result(), "1.07374182e+09");
 }
 
 TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Float) {