| Index: test/unittests/compiler/common-operator-unittest.cc | 
| diff --git a/test/unittests/compiler/common-operator-unittest.cc b/test/unittests/compiler/common-operator-unittest.cc | 
| index 2cb4d19fe259f5eb26a551dcb07769c8099f838d..9fe3948c0b6820ec1d3c8a1667ec8d13b765dc52 100644 | 
| --- a/test/unittests/compiler/common-operator-unittest.cc | 
| +++ b/test/unittests/compiler/common-operator-unittest.cc | 
| @@ -133,23 +133,93 @@ class CommonOperatorTest : public TestWithZone { | 
|  | 
| const int kArguments[] = {1, 5, 6, 42, 100, 10000, kMaxInt}; | 
|  | 
| -const float kFloat32Values[] = { | 
| -    std::numeric_limits<float>::min(), -1.0f, -0.0f, 0.0f, 1.0f, | 
| -    std::numeric_limits<float>::max()}; | 
| + | 
| +const float kFloatValues[] = {-std::numeric_limits<float>::infinity(), | 
| +                              std::numeric_limits<float>::min(), | 
| +                              -1.0f, | 
| +                              -0.0f, | 
| +                              0.0f, | 
| +                              1.0f, | 
| +                              std::numeric_limits<float>::max(), | 
| +                              std::numeric_limits<float>::infinity(), | 
| +                              std::numeric_limits<float>::quiet_NaN(), | 
| +                              std::numeric_limits<float>::signaling_NaN()}; | 
| + | 
| + | 
| +const double kDoubleValues[] = {-std::numeric_limits<double>::infinity(), | 
| +                                std::numeric_limits<double>::min(), | 
| +                                -1.0, | 
| +                                -0.0, | 
| +                                0.0, | 
| +                                1.0, | 
| +                                std::numeric_limits<double>::max(), | 
| +                                std::numeric_limits<double>::infinity(), | 
| +                                std::numeric_limits<double>::quiet_NaN(), | 
| +                                std::numeric_limits<double>::signaling_NaN()}; | 
|  | 
| }  // namespace | 
|  | 
|  | 
| TEST_F(CommonOperatorTest, Float32Constant) { | 
| -  TRACED_FOREACH(float, value, kFloat32Values) { | 
| +  TRACED_FOREACH(float, value, kFloatValues) { | 
| const Operator* op = common()->Float32Constant(value); | 
| -    EXPECT_FLOAT_EQ(value, OpParameter<float>(op)); | 
| +    EXPECT_PRED2(base::bit_equal_to<float>(), value, OpParameter<float>(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetValueInputCount(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetTotalInputCount(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetControlOutputCount(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetEffectOutputCount(op)); | 
| +    EXPECT_EQ(1, OperatorProperties::GetValueOutputCount(op)); | 
| +  } | 
| +  TRACED_FOREACH(float, v1, kFloatValues) { | 
| +    TRACED_FOREACH(float, v2, kFloatValues) { | 
| +      const Operator* op1 = common()->Float32Constant(v1); | 
| +      const Operator* op2 = common()->Float32Constant(v2); | 
| +      EXPECT_EQ(bit_cast<uint32_t>(v1) == bit_cast<uint32_t>(v2), | 
| +                op1->Equals(op2)); | 
| +    } | 
| +  } | 
| +} | 
| + | 
| + | 
| +TEST_F(CommonOperatorTest, Float64Constant) { | 
| +  TRACED_FOREACH(double, value, kFloatValues) { | 
| +    const Operator* op = common()->Float64Constant(value); | 
| +    EXPECT_PRED2(base::bit_equal_to<double>(), value, OpParameter<double>(op)); | 
| EXPECT_EQ(0, OperatorProperties::GetValueInputCount(op)); | 
| EXPECT_EQ(0, OperatorProperties::GetTotalInputCount(op)); | 
| EXPECT_EQ(0, OperatorProperties::GetControlOutputCount(op)); | 
| EXPECT_EQ(0, OperatorProperties::GetEffectOutputCount(op)); | 
| EXPECT_EQ(1, OperatorProperties::GetValueOutputCount(op)); | 
| } | 
| +  TRACED_FOREACH(double, v1, kFloatValues) { | 
| +    TRACED_FOREACH(double, v2, kFloatValues) { | 
| +      const Operator* op1 = common()->Float64Constant(v1); | 
| +      const Operator* op2 = common()->Float64Constant(v2); | 
| +      EXPECT_EQ(bit_cast<uint64_t>(v1) == bit_cast<uint64_t>(v2), | 
| +                op1->Equals(op2)); | 
| +    } | 
| +  } | 
| +} | 
| + | 
| + | 
| +TEST_F(CommonOperatorTest, NumberConstant) { | 
| +  TRACED_FOREACH(double, value, kFloatValues) { | 
| +    const Operator* op = common()->NumberConstant(value); | 
| +    EXPECT_PRED2(base::bit_equal_to<double>(), value, OpParameter<double>(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetValueInputCount(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetTotalInputCount(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetControlOutputCount(op)); | 
| +    EXPECT_EQ(0, OperatorProperties::GetEffectOutputCount(op)); | 
| +    EXPECT_EQ(1, OperatorProperties::GetValueOutputCount(op)); | 
| +  } | 
| +  TRACED_FOREACH(double, v1, kFloatValues) { | 
| +    TRACED_FOREACH(double, v2, kFloatValues) { | 
| +      const Operator* op1 = common()->NumberConstant(v1); | 
| +      const Operator* op2 = common()->NumberConstant(v2); | 
| +      EXPECT_EQ(bit_cast<uint64_t>(v1) == bit_cast<uint64_t>(v2), | 
| +                op1->Equals(op2)); | 
| +    } | 
| +  } | 
| } | 
|  | 
|  | 
|  |