diff options
Diffstat (limited to 'deps/v8/test/cctest/compiler/test-run-machops.cc')
-rw-r--r-- | deps/v8/test/cctest/compiler/test-run-machops.cc | 335 |
1 files changed, 220 insertions, 115 deletions
diff --git a/deps/v8/test/cctest/compiler/test-run-machops.cc b/deps/v8/test/cctest/compiler/test-run-machops.cc index 974d4cef54..5a55ce6e23 100644 --- a/deps/v8/test/cctest/compiler/test-run-machops.cc +++ b/deps/v8/test/cctest/compiler/test-run-machops.cc @@ -15,10 +15,6 @@ #if V8_TURBOFAN_TARGET using namespace v8::base; - -#define CHECK_UINT32_EQ(x, y) \ - CHECK_EQ(static_cast<int32_t>(x), static_cast<int32_t>(y)) - using namespace v8::internal; using namespace v8::internal::compiler; @@ -451,6 +447,115 @@ TEST(RunLoopIncrementFloat64) { } +TEST(RunSwitch1) { + RawMachineAssemblerTester<int32_t> m; + + int constant = 11223344; + + MLabel block0, block1, def, end; + MLabel* case_labels[] = {&block0, &block1}; + int32_t case_values[] = {0, 1}; + m.Switch(m.Int32Constant(0), &def, case_values, case_labels, + arraysize(case_labels)); + m.Bind(&block0); + m.Goto(&end); + m.Bind(&block1); + m.Goto(&end); + m.Bind(&def); + m.Goto(&end); + m.Bind(&end); + m.Return(m.Int32Constant(constant)); + + CHECK_EQ(constant, m.Call()); +} + + +TEST(RunSwitch2) { + RawMachineAssemblerTester<int32_t> m(kMachInt32); + + MLabel blocka, blockb, blockc; + MLabel* case_labels[] = {&blocka, &blockb}; + int32_t case_values[] = {std::numeric_limits<int32_t>::min(), + std::numeric_limits<int32_t>::max()}; + m.Switch(m.Parameter(0), &blockc, case_values, case_labels, + arraysize(case_labels)); + m.Bind(&blocka); + m.Return(m.Int32Constant(-1)); + m.Bind(&blockb); + m.Return(m.Int32Constant(1)); + m.Bind(&blockc); + m.Return(m.Int32Constant(0)); + + CHECK_EQ(1, m.Call(std::numeric_limits<int32_t>::max())); + CHECK_EQ(-1, m.Call(std::numeric_limits<int32_t>::min())); + for (int i = -100; i < 100; i += 25) { + CHECK_EQ(0, m.Call(i)); + } +} + + +TEST(RunSwitch3) { + RawMachineAssemblerTester<int32_t> m(kMachInt32); + + MLabel blocka, blockb, blockc; + MLabel* case_labels[] = {&blocka, &blockb}; + int32_t case_values[] = {std::numeric_limits<int32_t>::min() + 0, + std::numeric_limits<int32_t>::min() + 1}; + m.Switch(m.Parameter(0), &blockc, case_values, case_labels, + arraysize(case_labels)); + m.Bind(&blocka); + m.Return(m.Int32Constant(0)); + m.Bind(&blockb); + m.Return(m.Int32Constant(1)); + m.Bind(&blockc); + m.Return(m.Int32Constant(2)); + + CHECK_EQ(0, m.Call(std::numeric_limits<int32_t>::min() + 0)); + CHECK_EQ(1, m.Call(std::numeric_limits<int32_t>::min() + 1)); + for (int i = -100; i < 100; i += 25) { + CHECK_EQ(2, m.Call(i)); + } +} + + +TEST(RunSwitch4) { + RawMachineAssemblerTester<int32_t> m(kMachInt32); + + const size_t kNumCases = 512; + const size_t kNumValues = kNumCases + 1; + int32_t values[kNumValues]; + m.main_isolate()->random_number_generator()->NextBytes(values, + sizeof(values)); + MLabel end, def; + int32_t case_values[kNumCases]; + MLabel* case_labels[kNumCases]; + Node* results[kNumValues]; + for (size_t i = 0; i < kNumCases; ++i) { + case_values[i] = static_cast<int32_t>(i); + case_labels[i] = new (m.main_zone()->New(sizeof(MLabel))) MLabel; + } + m.Switch(m.Parameter(0), &def, case_values, case_labels, + arraysize(case_labels)); + for (size_t i = 0; i < kNumCases; ++i) { + m.Bind(case_labels[i]); + results[i] = m.Int32Constant(values[i]); + m.Goto(&end); + } + m.Bind(&def); + results[kNumCases] = m.Int32Constant(values[kNumCases]); + m.Goto(&end); + m.Bind(&end); + const int num_results = static_cast<int>(arraysize(results)); + Node* phi = + m.NewNode(m.common()->Phi(kMachInt32, num_results), num_results, results); + m.Return(phi); + + for (size_t i = 0; i < kNumValues; ++i) { + CHECK_EQ(values[i], m.Call(static_cast<int>(i))); + } +} + + TEST(RunLoadInt32) { RawMachineAssemblerTester<int32_t> m; @@ -505,7 +610,7 @@ TEST(RunLoadStoreFloat64Offset) { p1 = *j; p2 = *j - 5; CHECK_EQ(magic, m.Call()); - CHECK_EQ(p1, p2); + CheckDoubleEq(p1, p2); } } } @@ -763,7 +868,7 @@ TEST(RunInt32AddInBranch) { static const int32_t constant = 987654321; { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); MLabel blocka, blockb; m.Branch( m.Word32Equal(m.Int32Add(bt.param0, bt.param1), m.Int32Constant(0)), @@ -781,7 +886,7 @@ TEST(RunInt32AddInBranch) { } { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); MLabel blocka, blockb; m.Branch( m.Word32NotEqual(m.Int32Add(bt.param0, bt.param1), m.Int32Constant(0)), @@ -810,7 +915,7 @@ TEST(RunInt32AddInBranch) { m.Return(m.Int32Constant(0 - constant)); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i + *j) == 0 ? constant : 0 - constant; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -827,7 +932,7 @@ TEST(RunInt32AddInBranch) { m.Return(m.Int32Constant(0 - constant)); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i + *j) != 0 ? constant : 0 - constant; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -885,7 +990,7 @@ TEST(RunInt32AddInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i + *j) == 0; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -897,7 +1002,7 @@ TEST(RunInt32AddInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i + *j) == 0; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -908,7 +1013,7 @@ TEST(RunInt32AddInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i + *j) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -919,7 +1024,7 @@ TEST(RunInt32AddInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*j + *i) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -971,7 +1076,7 @@ TEST(RunInt32SubP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = static_cast<int32_t>(*i - *j); - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -984,7 +1089,7 @@ TEST(RunInt32SubImm) { m.Return(m.Int32Sub(m.Int32Constant(*i), m.Parameter(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i - *j; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -994,7 +1099,7 @@ TEST(RunInt32SubImm) { m.Return(m.Int32Sub(m.Parameter(0), m.Int32Constant(*i))); FOR_UINT32_INPUTS(j) { uint32_t expected = *j - *i; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1072,8 +1177,8 @@ TEST(RunInt32SubAndWord32ShrP) { FOR_UINT32_INPUTS(j) { FOR_UINT32_SHIFTS(shift) { // Use uint32_t because signed overflow is UB in C. - int32_t expected = *i - (*j >> shift); - CHECK_UINT32_EQ(expected, m.Call(*i, *j, shift)); + uint32_t expected = *i - (*j >> shift); + CHECK_EQ(expected, m.Call(*i, *j, shift)); } } } @@ -1087,7 +1192,7 @@ TEST(RunInt32SubAndWord32ShrP) { FOR_UINT32_SHIFTS(shift) { FOR_UINT32_INPUTS(k) { // Use uint32_t because signed overflow is UB in C. - int32_t expected = (*i >> shift) - *k; + uint32_t expected = (*i >> shift) - *k; CHECK_EQ(expected, m.Call(*i, shift, *k)); } } @@ -1100,7 +1205,7 @@ TEST(RunInt32SubInBranch) { static const int constant = 987654321; { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); MLabel blocka, blockb; m.Branch( m.Word32Equal(m.Int32Sub(bt.param0, bt.param1), m.Int32Constant(0)), @@ -1118,7 +1223,7 @@ TEST(RunInt32SubInBranch) { } { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); MLabel blocka, blockb; m.Branch( m.Word32NotEqual(m.Int32Sub(bt.param0, bt.param1), m.Int32Constant(0)), @@ -1146,7 +1251,7 @@ TEST(RunInt32SubInBranch) { m.Bind(&blockb); m.Return(m.Int32Constant(0 - constant)); FOR_UINT32_INPUTS(j) { - int32_t expected = (*i - *j) == 0 ? constant : 0 - constant; + uint32_t expected = (*i - *j) == 0 ? constant : 0 - constant; CHECK_EQ(expected, m.Call(*j)); } } @@ -1222,7 +1327,7 @@ TEST(RunInt32SubInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i - *j) == 0; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1234,7 +1339,7 @@ TEST(RunInt32SubInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i - *j) == 0; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1245,7 +1350,7 @@ TEST(RunInt32SubInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i - *j) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1256,7 +1361,7 @@ TEST(RunInt32SubInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*j - *i) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1318,7 +1423,7 @@ TEST(RunInt32MulP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i * *j; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1346,7 +1451,7 @@ TEST(RunInt32MulImm) { m.Return(m.Int32Mul(m.Int32Constant(*i), m.Parameter(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i * *j; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1356,7 +1461,7 @@ TEST(RunInt32MulImm) { m.Return(m.Int32Mul(m.Parameter(0), m.Int32Constant(*i))); FOR_UINT32_INPUTS(j) { uint32_t expected = *j * *i; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1527,7 +1632,7 @@ TEST(RunUint32DivP) { uint32_t p0 = *i; uint32_t p1 = *j; if (p1 != 0) { - uint32_t expected = static_cast<uint32_t>(p0 / p1); + int32_t expected = bit_cast<int32_t>(p0 / p1); CHECK_EQ(expected, bt.call(p0, p1)); } } @@ -1542,7 +1647,7 @@ TEST(RunUint32DivP) { uint32_t p0 = *i; uint32_t p1 = *j; if (p1 != 0) { - uint32_t expected = static_cast<uint32_t>(p0 + (p0 / p1)); + int32_t expected = bit_cast<int32_t>(p0 + (p0 / p1)); CHECK_EQ(expected, bt.call(p0, p1)); } } @@ -1588,7 +1693,7 @@ TEST(RunInt32ModP) { TEST(RunUint32ModP) { { RawMachineAssemblerTester<int32_t> m; - Int32BinopTester bt(&m); + Uint32BinopTester bt(&m); bt.AddReturn(m.Uint32Mod(bt.param0, bt.param1)); FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { @@ -1603,7 +1708,7 @@ TEST(RunUint32ModP) { } { RawMachineAssemblerTester<int32_t> m; - Int32BinopTester bt(&m); + Uint32BinopTester bt(&m); bt.AddReturn(m.Int32Add(bt.param0, m.Uint32Mod(bt.param0, bt.param1))); FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { @@ -1626,7 +1731,7 @@ TEST(RunWord32AndP) { bt.AddReturn(m.Word32And(bt.param0, bt.param1)); FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { - uint32_t expected = *i & *j; + int32_t expected = *i & *j; CHECK_EQ(expected, bt.call(*i, *j)); } } @@ -1637,7 +1742,7 @@ TEST(RunWord32AndP) { bt.AddReturn(m.Word32And(bt.param0, m.Word32Not(bt.param1))); FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { - uint32_t expected = *i & ~(*j); + int32_t expected = *i & ~(*j); CHECK_EQ(expected, bt.call(*i, *j)); } } @@ -1648,7 +1753,7 @@ TEST(RunWord32AndP) { bt.AddReturn(m.Word32And(m.Word32Not(bt.param0), bt.param1)); FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { - uint32_t expected = ~(*i) & *j; + int32_t expected = ~(*i) & *j; CHECK_EQ(expected, bt.call(*i, *j)); } } @@ -1665,7 +1770,7 @@ TEST(RunWord32AndAndWord32ShlP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i << (*j & 0x1f); - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1677,7 +1782,7 @@ TEST(RunWord32AndAndWord32ShlP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i << (0x1f & *j); - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1693,7 +1798,7 @@ TEST(RunWord32AndAndWord32ShrP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i >> (*j & 0x1f); - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1705,7 +1810,7 @@ TEST(RunWord32AndAndWord32ShrP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i >> (0x1f & *j); - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1732,7 +1837,7 @@ TEST(RunWord32AndAndWord32SarP) { m.Word32Sar(bt.param0, m.Word32And(m.Int32Constant(0x1f), bt.param1))); FOR_INT32_INPUTS(i) { FOR_INT32_INPUTS(j) { - uint32_t expected = *i >> (0x1f & *j); + int32_t expected = *i >> (0x1f & *j); CHECK_EQ(expected, bt.call(*i, *j)); } } @@ -1747,7 +1852,7 @@ TEST(RunWord32AndImm) { m.Return(m.Word32And(m.Int32Constant(*i), m.Parameter(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i & *j; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1757,7 +1862,7 @@ TEST(RunWord32AndImm) { m.Return(m.Word32And(m.Int32Constant(*i), m.Word32Not(m.Parameter(0)))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i & ~(*j); - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1768,7 +1873,7 @@ TEST(RunWord32AndInBranch) { static const int constant = 987654321; { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); MLabel blocka, blockb; m.Branch( m.Word32Equal(m.Word32And(bt.param0, bt.param1), m.Int32Constant(0)), @@ -1786,7 +1891,7 @@ TEST(RunWord32AndInBranch) { } { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); MLabel blocka, blockb; m.Branch( m.Word32NotEqual(m.Word32And(bt.param0, bt.param1), m.Int32Constant(0)), @@ -1891,7 +1996,7 @@ TEST(RunWord32AndInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i & *j) == 0; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1903,7 +2008,7 @@ TEST(RunWord32AndInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i & *j) == 0; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1914,7 +2019,7 @@ TEST(RunWord32AndInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i & *j) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1925,7 +2030,7 @@ TEST(RunWord32AndInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*j & *i) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1940,7 +2045,7 @@ TEST(RunWord32OrP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i | *j; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1951,7 +2056,7 @@ TEST(RunWord32OrP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = *i | ~(*j); - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1962,7 +2067,7 @@ TEST(RunWord32OrP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = ~(*i) | *j; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -1976,7 +2081,7 @@ TEST(RunWord32OrImm) { m.Return(m.Word32Or(m.Int32Constant(*i), m.Parameter(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i | *j; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -1986,7 +2091,7 @@ TEST(RunWord32OrImm) { m.Return(m.Word32Or(m.Int32Constant(*i), m.Word32Not(m.Parameter(0)))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i | ~(*j); - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2113,7 +2218,7 @@ TEST(RunWord32OrInBranch) { TEST(RunWord32OrInComparison) { { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); bt.AddReturn( m.Word32Equal(m.Word32Or(bt.param0, bt.param1), m.Int32Constant(0))); FOR_UINT32_INPUTS(i) { @@ -2125,7 +2230,7 @@ TEST(RunWord32OrInComparison) { } { RawMachineAssemblerTester<int32_t> m; - Uint32BinopTester bt(&m); + Int32BinopTester bt(&m); bt.AddReturn( m.Word32Equal(m.Int32Constant(0), m.Word32Or(bt.param0, bt.param1))); FOR_UINT32_INPUTS(i) { @@ -2142,7 +2247,7 @@ TEST(RunWord32OrInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i | *j) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2153,7 +2258,7 @@ TEST(RunWord32OrInComparison) { m.Int32Constant(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = (*j | *i) == 0; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2163,11 +2268,11 @@ TEST(RunWord32OrInComparison) { TEST(RunWord32XorP) { { FOR_UINT32_INPUTS(i) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return(m.Word32Xor(m.Int32Constant(*i), m.Parameter(0))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i ^ *j; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2177,8 +2282,8 @@ TEST(RunWord32XorP) { bt.AddReturn(m.Word32Xor(bt.param0, bt.param1)); FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { - int32_t expected = *i ^ *j; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + uint32_t expected = *i ^ *j; + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -2210,7 +2315,7 @@ TEST(RunWord32XorP) { m.Return(m.Word32Xor(m.Int32Constant(*i), m.Word32Not(m.Parameter(0)))); FOR_UINT32_INPUTS(j) { uint32_t expected = *i ^ ~(*j); - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2233,7 +2338,7 @@ TEST(RunWord32XorInBranch) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i ^ *j) == 0 ? constant : 0 - constant; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -2251,7 +2356,7 @@ TEST(RunWord32XorInBranch) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { uint32_t expected = (*i ^ *j) != 0 ? constant : 0 - constant; - CHECK_UINT32_EQ(expected, bt.call(*i, *j)); + CHECK_EQ(expected, bt.call(*i, *j)); } } } @@ -2268,7 +2373,7 @@ TEST(RunWord32XorInBranch) { m.Return(m.Int32Constant(0 - constant)); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i ^ *j) == 0 ? constant : 0 - constant; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2286,7 +2391,7 @@ TEST(RunWord32XorInBranch) { m.Return(m.Int32Constant(0 - constant)); FOR_UINT32_INPUTS(j) { uint32_t expected = (*i ^ *j) != 0 ? constant : 0 - constant; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2342,7 +2447,7 @@ TEST(RunWord32ShlP) { m.Return(m.Word32Shl(m.Parameter(0), m.Int32Constant(shift))); FOR_UINT32_INPUTS(j) { uint32_t expected = *j << shift; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2353,7 +2458,7 @@ TEST(RunWord32ShlP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = *i << shift; - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } @@ -2369,7 +2474,7 @@ TEST(RunWord32ShlInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = 0 == (*i << shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } @@ -2381,31 +2486,31 @@ TEST(RunWord32ShlInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = 0 == (*i << shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } { FOR_UINT32_SHIFTS(shift) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return( m.Word32Equal(m.Int32Constant(0), m.Word32Shl(m.Parameter(0), m.Int32Constant(shift)))); FOR_UINT32_INPUTS(i) { uint32_t expected = 0 == (*i << shift); - CHECK_UINT32_EQ(expected, m.Call(*i)); + CHECK_EQ(expected, m.Call(*i)); } } } { FOR_UINT32_SHIFTS(shift) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return( m.Word32Equal(m.Word32Shl(m.Parameter(0), m.Int32Constant(shift)), m.Int32Constant(0))); FOR_UINT32_INPUTS(i) { uint32_t expected = 0 == (*i << shift); - CHECK_UINT32_EQ(expected, m.Call(*i)); + CHECK_EQ(expected, m.Call(*i)); } } } @@ -2419,7 +2524,7 @@ TEST(RunWord32ShrP) { m.Return(m.Word32Shr(m.Parameter(0), m.Int32Constant(shift))); FOR_UINT32_INPUTS(j) { uint32_t expected = *j >> shift; - CHECK_UINT32_EQ(expected, m.Call(*j)); + CHECK_EQ(expected, m.Call(*j)); } } } @@ -2430,10 +2535,10 @@ TEST(RunWord32ShrP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = *i >> shift; - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } - CHECK_EQ(0x00010000, bt.call(0x80000000, 15)); + CHECK_EQ(0x00010000u, bt.call(0x80000000, 15)); } } @@ -2447,7 +2552,7 @@ TEST(RunWord32ShrInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = 0 == (*i >> shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } @@ -2459,31 +2564,31 @@ TEST(RunWord32ShrInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = 0 == (*i >> shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } { FOR_UINT32_SHIFTS(shift) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return( m.Word32Equal(m.Int32Constant(0), m.Word32Shr(m.Parameter(0), m.Int32Constant(shift)))); FOR_UINT32_INPUTS(i) { uint32_t expected = 0 == (*i >> shift); - CHECK_UINT32_EQ(expected, m.Call(*i)); + CHECK_EQ(expected, m.Call(*i)); } } } { FOR_UINT32_SHIFTS(shift) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return( m.Word32Equal(m.Word32Shr(m.Parameter(0), m.Int32Constant(shift)), m.Int32Constant(0))); FOR_UINT32_INPUTS(i) { uint32_t expected = 0 == (*i >> shift); - CHECK_UINT32_EQ(expected, m.Call(*i)); + CHECK_EQ(expected, m.Call(*i)); } } } @@ -2511,7 +2616,7 @@ TEST(RunWord32SarP) { CHECK_EQ(expected, bt.call(*i, shift)); } } - CHECK_EQ(0xFFFF0000, bt.call(0x80000000, 15)); + CHECK_EQ(bit_cast<int32_t>(0xFFFF0000), bt.call(0x80000000, 15)); } } @@ -2560,7 +2665,7 @@ TEST(RunWord32SarInComparison) { m.Word32Equal(m.Word32Sar(m.Parameter(0), m.Int32Constant(shift)), m.Int32Constant(0))); FOR_INT32_INPUTS(i) { - uint32_t expected = 0 == (*i >> shift); + int32_t expected = 0 == (*i >> shift); CHECK_EQ(expected, m.Call(*i)); } } @@ -2586,7 +2691,7 @@ TEST(RunWord32RorP) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = bits::RotateRight32(*i, shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } @@ -2602,7 +2707,7 @@ TEST(RunWord32RorInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = 0 == bits::RotateRight32(*i, shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } @@ -2614,31 +2719,31 @@ TEST(RunWord32RorInComparison) { FOR_UINT32_INPUTS(i) { FOR_UINT32_SHIFTS(shift) { uint32_t expected = 0 == bits::RotateRight32(*i, shift); - CHECK_UINT32_EQ(expected, bt.call(*i, shift)); + CHECK_EQ(expected, bt.call(*i, shift)); } } } { FOR_UINT32_SHIFTS(shift) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return( m.Word32Equal(m.Int32Constant(0), m.Word32Ror(m.Parameter(0), m.Int32Constant(shift)))); FOR_UINT32_INPUTS(i) { uint32_t expected = 0 == bits::RotateRight32(*i, shift); - CHECK_UINT32_EQ(expected, m.Call(*i)); + CHECK_EQ(expected, m.Call(*i)); } } } { FOR_UINT32_SHIFTS(shift) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); m.Return( m.Word32Equal(m.Word32Ror(m.Parameter(0), m.Int32Constant(shift)), m.Int32Constant(0))); FOR_UINT32_INPUTS(i) { uint32_t expected = 0 == bits::RotateRight32(*i, shift); - CHECK_UINT32_EQ(expected, m.Call(*i)); + CHECK_EQ(expected, m.Call(*i)); } } } @@ -2964,7 +3069,7 @@ TEST(RunFloat64AddP) { FOR_FLOAT64_INPUTS(pl) { FOR_FLOAT64_INPUTS(pr) { double expected = *pl + *pr; - CHECK_EQ(expected, bt.call(*pl, *pr)); + CheckDoubleEq(expected, bt.call(*pl, *pr)); } } } @@ -2979,7 +3084,7 @@ TEST(RunFloat64SubP) { FOR_FLOAT64_INPUTS(pl) { FOR_FLOAT64_INPUTS(pr) { double expected = *pl - *pr; - CHECK_EQ(expected, bt.call(*pl, *pr)); + CheckDoubleEq(expected, bt.call(*pl, *pr)); } } } @@ -2999,7 +3104,7 @@ TEST(RunFloat64SubImm1) { input = *j; double expected = *i - input; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3019,7 +3124,7 @@ TEST(RunFloat64SubImm2) { input = *j; double expected = input - *i; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3034,7 +3139,7 @@ TEST(RunFloat64MulP) { FOR_FLOAT64_INPUTS(pl) { FOR_FLOAT64_INPUTS(pr) { double expected = *pl * *pr; - CHECK_EQ(expected, bt.call(*pl, *pr)); + CheckDoubleEq(expected, bt.call(*pl, *pr)); } } } @@ -3063,7 +3168,7 @@ TEST(RunFloat64MulAndFloat64AddP) { volatile double temp = input_a * input_b; volatile double expected = temp + input_c; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3085,7 +3190,7 @@ TEST(RunFloat64MulAndFloat64AddP) { volatile double temp = input_b * input_c; volatile double expected = input_a + temp; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3115,7 +3220,7 @@ TEST(RunFloat64MulAndFloat64SubP) { volatile double temp = input_b * input_c; volatile double expected = input_a - temp; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3137,7 +3242,7 @@ TEST(RunFloat64MulImm) { input = *j; double expected = *i * input; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3152,7 +3257,7 @@ TEST(RunFloat64MulImm) { input = *j; double expected = input * *i; CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, output); + CheckDoubleEq(expected, output); } } } @@ -3168,7 +3273,7 @@ TEST(RunFloat64DivP) { FOR_FLOAT64_INPUTS(pl) { FOR_FLOAT64_INPUTS(pr) { double expected = *pl / *pr; - CHECK_EQ(expected, bt.call(*pl, *pr)); + CheckDoubleEq(expected, bt.call(*pl, *pr)); } } } @@ -3184,7 +3289,7 @@ TEST(RunFloat64ModP) { FOR_FLOAT64_INPUTS(j) { double expected = modulo(*i, *j); double found = bt.call(*i, *j); - CHECK_EQ(expected, found); + CheckDoubleEq(expected, found); } } } @@ -3223,7 +3328,7 @@ TEST(RunChangeInt32ToFloat64_B) { TEST(RunChangeUint32ToFloat64_B) { - RawMachineAssemblerTester<int32_t> m(kMachUint32); + RawMachineAssemblerTester<uint32_t> m(kMachUint32); double output = 0; Node* convert = m.ChangeUint32ToFloat64(m.Parameter(0)); @@ -3404,7 +3509,7 @@ TEST(RunChangeFloat64ToInt32_spilled) { TEST(RunChangeFloat64ToUint32_spilled) { RawMachineAssemblerTester<uint32_t> m; const int kNumInputs = 32; - int32_t magic = 0x786234; + uint32_t magic = 0x786234; double input[kNumInputs]; uint32_t result[kNumInputs]; Node* input_node[kNumInputs]; @@ -3433,9 +3538,9 @@ TEST(RunChangeFloat64ToUint32_spilled) { for (int i = 0; i < kNumInputs; i++) { if (i % 2) { - CHECK_UINT32_EQ(result[i], static_cast<uint32_t>(100 + i + 2147483648u)); + CHECK_EQ(result[i], static_cast<uint32_t>(100 + i + 2147483648u)); } else { - CHECK_UINT32_EQ(result[i], static_cast<uint32_t>(100 + i)); + CHECK_EQ(result[i], static_cast<uint32_t>(100 + i)); } } } @@ -3444,7 +3549,7 @@ TEST(RunChangeFloat64ToUint32_spilled) { TEST(RunTruncateFloat64ToFloat32_spilled) { RawMachineAssemblerTester<uint32_t> m; const int kNumInputs = 32; - int32_t magic = 0x786234; + uint32_t magic = 0x786234; double input[kNumInputs]; float result[kNumInputs]; Node* input_node[kNumInputs]; @@ -3890,7 +3995,7 @@ TEST(RunFloat64UnorderedCompare) { m.machine()->Float64LessThan(), m.machine()->Float64LessThanOrEqual()}; - double nan = v8::base::OS::nan_value(); + double nan = std::numeric_limits<double>::quiet_NaN(); FOR_FLOAT64_INPUTS(i) { for (size_t o = 0; o < arraysize(operators); ++o) { @@ -4368,7 +4473,7 @@ TEST(RunTruncateInt64ToInt32P) { FOR_UINT32_INPUTS(i) { FOR_UINT32_INPUTS(j) { expected = (static_cast<uint64_t>(*j) << 32) | *i; - CHECK_UINT32_EQ(expected, m.Call()); + CHECK_EQ(static_cast<int32_t>(expected), m.Call()); } } } @@ -4385,9 +4490,9 @@ TEST(RunTruncateFloat64ToInt32P) { {-1.5, -1}, {5.5, 5}, {-5.0, -5}, - {v8::base::OS::nan_value(), 0}, + {std::numeric_limits<double>::quiet_NaN(), 0}, {std::numeric_limits<double>::infinity(), 0}, - {-v8::base::OS::nan_value(), 0}, + {-std::numeric_limits<double>::quiet_NaN(), 0}, {-std::numeric_limits<double>::infinity(), 0}, {4.94065645841e-324, 0}, {-4.94065645841e-324, 0}, @@ -4504,7 +4609,7 @@ TEST(RunTruncateFloat64ToFloat32) { input = *i; volatile double expected = DoubleToFloat32(input); CHECK_EQ(0, m.Call()); - CHECK_EQ(expected, actual); + CheckDoubleEq(expected, actual); } } |