| Index: test/cctest/wasm/test-run-wasm.cc
|
| diff --git a/test/cctest/wasm/test-run-wasm.cc b/test/cctest/wasm/test-run-wasm.cc
|
| index 55eb008ad01e490fc47b6de299767ee6b7f441ce..7f81cfef544c5e745a007fea529ea70b82561746 100644
|
| --- a/test/cctest/wasm/test-run-wasm.cc
|
| +++ b/test/cctest/wasm/test-run-wasm.cc
|
| @@ -609,15 +609,40 @@ WASM_EXEC_TEST(Float32SubMinusZero) {
|
| WasmRunner<float> r(execution_mode, MachineType::Float32());
|
| BUILD(r, WASM_F32_SUB(WASM_F32(-0.0), WASM_GET_LOCAL(0)));
|
|
|
| - CHECK_EQ(0x7fe00000, bit_cast<uint32_t>(r.Call(bit_cast<float>(0x7fa00000))));
|
| + uint32_t sNanValue =
|
| + bit_cast<uint32_t>(std::numeric_limits<float>::signaling_NaN());
|
| + uint32_t qNanValue =
|
| + bit_cast<uint32_t>(std::numeric_limits<float>::quiet_NaN());
|
| + uint32_t payload = 0x00200000;
|
| +
|
| + uint32_t expected = (qNanValue & 0xffc00000) | payload;
|
| + uint32_t operand = (sNanValue & 0xffc00000) | payload;
|
| + CHECK_EQ(expected, bit_cast<uint32_t>(r.Call(bit_cast<float>(operand))));
|
| +
|
| + // Change the sign of the NaN.
|
| + expected |= 0x80000000;
|
| + operand |= 0x80000000;
|
| + CHECK_EQ(expected, bit_cast<uint32_t>(r.Call(bit_cast<float>(operand))));
|
| }
|
|
|
| WASM_EXEC_TEST(Float64SubMinusZero) {
|
| WasmRunner<double> r(execution_mode, MachineType::Float64());
|
| BUILD(r, WASM_F64_SUB(WASM_F64(-0.0), WASM_GET_LOCAL(0)));
|
|
|
| - CHECK_EQ(0x7ff8123456789abc,
|
| - bit_cast<uint64_t>(r.Call(bit_cast<double>(0x7ff0123456789abc))));
|
| + uint64_t sNanValue =
|
| + bit_cast<uint64_t>(std::numeric_limits<double>::signaling_NaN());
|
| + uint64_t qNanValue =
|
| + bit_cast<uint64_t>(std::numeric_limits<double>::quiet_NaN());
|
| + uint64_t payload = 0x0000123456789abc;
|
| +
|
| + uint64_t expected = (qNanValue & 0xfff8000000000000) | payload;
|
| + uint64_t operand = (sNanValue & 0xfff8000000000000) | payload;
|
| + CHECK_EQ(expected, bit_cast<uint64_t>(r.Call(bit_cast<double>(operand))));
|
| +
|
| + // Change the sign of the NaN.
|
| + expected |= 0x8000000000000000;
|
| + operand |= 0x8000000000000000;
|
| + CHECK_EQ(expected, bit_cast<uint64_t>(r.Call(bit_cast<double>(operand))));
|
| }
|
|
|
| WASM_EXEC_TEST(Float64Neg) {
|
|
|