diff options
Diffstat (limited to 'deps/v8/test/cctest/wasm/test-run-wasm-64.cc')
-rw-r--r-- | deps/v8/test/cctest/wasm/test-run-wasm-64.cc | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-64.cc b/deps/v8/test/cctest/wasm/test-run-wasm-64.cc index be45f5bc17..cca0c1b061 100644 --- a/deps/v8/test/cctest/wasm/test-run-wasm-64.cc +++ b/deps/v8/test/cctest/wasm/test-run-wasm-64.cc @@ -8,6 +8,7 @@ #include "src/assembler-inl.h" #include "src/base/bits.h" +#include "src/base/overflowing-math.h" #include "src/objects-inl.h" #include "test/cctest/cctest.h" @@ -53,7 +54,9 @@ WASM_EXEC_TEST(I64Add) { WasmRunner<int64_t, int64_t, int64_t> r(execution_tier); BUILD(r, WASM_I64_ADD(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); FOR_INT64_INPUTS(i) { - FOR_INT64_INPUTS(j) { CHECK_EQ(*i + *j, r.Call(*i, *j)); } + FOR_INT64_INPUTS(j) { + CHECK_EQ(base::AddWithWraparound(*i, *j), r.Call(*i, *j)); + } } } @@ -75,7 +78,9 @@ WASM_EXEC_TEST(I64Sub) { WasmRunner<int64_t, int64_t, int64_t> r(execution_tier); BUILD(r, WASM_I64_SUB(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); FOR_INT64_INPUTS(i) { - FOR_INT64_INPUTS(j) { CHECK_EQ(*i - *j, r.Call(*i, *j)); } + FOR_INT64_INPUTS(j) { + CHECK_EQ(base::SubWithWraparound(*i, *j), r.Call(*i, *j)); + } } } @@ -94,7 +99,8 @@ WASM_EXEC_TEST(I64AddUseOnlyLowWord) { WASM_I64_ADD(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)))); FOR_INT64_INPUTS(i) { FOR_INT64_INPUTS(j) { - CHECK_EQ(static_cast<int32_t>(*i + *j), r.Call(*i, *j)); + CHECK_EQ(static_cast<int32_t>(base::AddWithWraparound(*i, *j)), + r.Call(*i, *j)); } } } @@ -105,7 +111,8 @@ WASM_EXEC_TEST(I64SubUseOnlyLowWord) { WASM_I64_SUB(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)))); FOR_INT64_INPUTS(i) { FOR_INT64_INPUTS(j) { - CHECK_EQ(static_cast<int32_t>(*i - *j), r.Call(*i, *j)); + CHECK_EQ(static_cast<int32_t>(base::SubWithWraparound(*i, *j)), + r.Call(*i, *j)); } } } @@ -116,7 +123,8 @@ WASM_EXEC_TEST(I64MulUseOnlyLowWord) { WASM_I64_MUL(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)))); FOR_INT64_INPUTS(i) { FOR_INT64_INPUTS(j) { - CHECK_EQ(static_cast<int32_t>(*i * *j), r.Call(*i, *j)); + CHECK_EQ(static_cast<int32_t>(base::MulWithWraparound(*i, *j)), + r.Call(*i, *j)); } } } @@ -127,7 +135,7 @@ WASM_EXEC_TEST(I64ShlUseOnlyLowWord) { WASM_I64_SHL(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)))); FOR_INT64_INPUTS(i) { FOR_INT64_INPUTS(j) { - int32_t expected = static_cast<int32_t>((*i) << (*j & 0x3F)); + int32_t expected = static_cast<int32_t>(base::ShlWithWraparound(*i, *j)); CHECK_EQ(expected, r.Call(*i, *j)); } } @@ -1230,7 +1238,8 @@ WASM_EXEC_TEST(I64ReinterpretF64) { WASM_LOAD_MEM(MachineType::Float64(), WASM_ZERO))); FOR_INT32_INPUTS(i) { - int64_t expected = static_cast<int64_t>(*i) * 0x300010001; + int64_t expected = base::MulWithWraparound(static_cast<int64_t>(*i), + int64_t{0x300010001L}); r.builder().WriteMemory(&memory[0], expected); CHECK_EQ(expected, r.Call()); } @@ -1255,7 +1264,8 @@ WASM_EXEC_TEST(F64ReinterpretI64) { WASM_GET_LOCAL(0)); FOR_INT32_INPUTS(i) { - int64_t expected = static_cast<int64_t>(*i) * 0x300010001; + int64_t expected = base::MulWithWraparound(static_cast<int64_t>(*i), + int64_t{0x300010001L}); CHECK_EQ(expected, r.Call(expected)); CHECK_EQ(expected, r.builder().ReadMemory<int64_t>(&memory[0])); } |