| Index: test/unittests/compiler/machine-operator-reducer-unittest.cc
|
| diff --git a/test/unittests/compiler/machine-operator-reducer-unittest.cc b/test/unittests/compiler/machine-operator-reducer-unittest.cc
|
| index be22bfdb3c841560c2d679411979dee4c2ee2ed6..51697163ae6f17fda9213e0adf7b98f34c9cbb7c 100644
|
| --- a/test/unittests/compiler/machine-operator-reducer-unittest.cc
|
| +++ b/test/unittests/compiler/machine-operator-reducer-unittest.cc
|
| @@ -680,26 +680,26 @@ TEST_F(MachineOperatorReducerTest, Word32ShlWithWord32Shr) {
|
| TEST_F(MachineOperatorReducerTest, Int32DivWithConstant) {
|
| Node* const p0 = Parameter(0);
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(0)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(0), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(1)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(1), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_EQ(r.replacement(), p0);
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(-1)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(-1), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Sub(IsInt32Constant(0), p0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(2)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(2), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(
|
| r.replacement(),
|
| @@ -707,8 +707,8 @@ TEST_F(MachineOperatorReducerTest, Int32DivWithConstant) {
|
| IsInt32Constant(1)));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(-2)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(-2), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(
|
| r.replacement(),
|
| @@ -718,8 +718,9 @@ TEST_F(MachineOperatorReducerTest, Int32DivWithConstant) {
|
| IsInt32Constant(1))));
|
| }
|
| TRACED_FORRANGE(int32_t, shift, 2, 30) {
|
| - Reduction const r = Reduce(
|
| - graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(1 << shift)));
|
| + Reduction const r =
|
| + Reduce(graph()->NewNode(machine()->Int32Div(), p0,
|
| + Int32Constant(1 << shift), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(
|
| r.replacement(),
|
| @@ -731,7 +732,8 @@ TEST_F(MachineOperatorReducerTest, Int32DivWithConstant) {
|
| TRACED_FORRANGE(int32_t, shift, 2, 31) {
|
| Reduction const r = Reduce(graph()->NewNode(
|
| machine()->Int32Div(), p0,
|
| - Uint32Constant(bit_cast<uint32_t, int32_t>(-1) << shift)));
|
| + Uint32Constant(bit_cast<uint32_t, int32_t>(-1) << shift),
|
| + graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(
|
| r.replacement(),
|
| @@ -746,15 +748,15 @@ TEST_F(MachineOperatorReducerTest, Int32DivWithConstant) {
|
| TRACED_FOREACH(int32_t, divisor, kInt32Values) {
|
| if (divisor < 0) {
|
| if (base::bits::IsPowerOfTwo32(-divisor)) continue;
|
| - Reduction const r = Reduce(
|
| - graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(divisor)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(divisor), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Sub(IsInt32Constant(0),
|
| IsTruncatingDiv(p0, -divisor)));
|
| } else if (divisor > 0) {
|
| if (base::bits::IsPowerOfTwo32(divisor)) continue;
|
| - Reduction const r = Reduce(
|
| - graph()->NewNode(machine()->Int32Div(), p0, Int32Constant(divisor)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Div(), p0, Int32Constant(divisor), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsTruncatingDiv(p0, divisor));
|
| }
|
| @@ -764,7 +766,8 @@ TEST_F(MachineOperatorReducerTest, Int32DivWithConstant) {
|
|
|
| TEST_F(MachineOperatorReducerTest, Int32DivWithParameters) {
|
| Node* const p0 = Parameter(0);
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Int32Div(), p0, p0));
|
| + Reduction const r =
|
| + Reduce(graph()->NewNode(machine()->Int32Div(), p0, p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(
|
| r.replacement(),
|
| @@ -779,28 +782,28 @@ TEST_F(MachineOperatorReducerTest, Int32DivWithParameters) {
|
| TEST_F(MachineOperatorReducerTest, Uint32DivWithConstant) {
|
| Node* const p0 = Parameter(0);
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Uint32Div(), Int32Constant(0), p0));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Uint32Div(), Int32Constant(0), p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Uint32Div(), p0, Int32Constant(0)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Uint32Div(), p0, Int32Constant(0), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Uint32Div(), p0, Int32Constant(1)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Uint32Div(), p0, Int32Constant(1), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_EQ(r.replacement(), p0);
|
| }
|
| TRACED_FOREACH(uint32_t, dividend, kUint32Values) {
|
| TRACED_FOREACH(uint32_t, divisor, kUint32Values) {
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Uint32Div(),
|
| - Uint32Constant(dividend),
|
| - Uint32Constant(divisor)));
|
| + Reduction const r = Reduce(
|
| + graph()->NewNode(machine()->Uint32Div(), Uint32Constant(dividend),
|
| + Uint32Constant(divisor), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(),
|
| IsInt32Constant(bit_cast<int32_t>(
|
| @@ -808,8 +811,9 @@ TEST_F(MachineOperatorReducerTest, Uint32DivWithConstant) {
|
| }
|
| }
|
| TRACED_FORRANGE(uint32_t, shift, 1, 31) {
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Uint32Div(), p0,
|
| - Uint32Constant(1u << shift)));
|
| + Reduction const r =
|
| + Reduce(graph()->NewNode(machine()->Uint32Div(), p0,
|
| + Uint32Constant(1u << shift), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(),
|
| IsWord32Shr(p0, IsInt32Constant(bit_cast<int32_t>(shift))));
|
| @@ -819,7 +823,8 @@ TEST_F(MachineOperatorReducerTest, Uint32DivWithConstant) {
|
|
|
| TEST_F(MachineOperatorReducerTest, Uint32DivWithParameters) {
|
| Node* const p0 = Parameter(0);
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Uint32Div(), p0, p0));
|
| + Reduction const r = Reduce(
|
| + graph()->NewNode(machine()->Uint32Div(), p0, p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(
|
| r.replacement(),
|
| @@ -834,42 +839,43 @@ TEST_F(MachineOperatorReducerTest, Uint32DivWithParameters) {
|
| TEST_F(MachineOperatorReducerTest, Int32ModWithConstant) {
|
| Node* const p0 = Parameter(0);
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Mod(), Int32Constant(0), p0));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Mod(), Int32Constant(0), p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Mod(), p0, Int32Constant(0)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Mod(), p0, Int32Constant(0), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Mod(), p0, Int32Constant(1)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Mod(), p0, Int32Constant(1), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Int32Mod(), p0, Int32Constant(-1)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Mod(), p0, Int32Constant(-1), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| TRACED_FOREACH(int32_t, dividend, kInt32Values) {
|
| TRACED_FOREACH(int32_t, divisor, kInt32Values) {
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Int32Mod(),
|
| - Int32Constant(dividend),
|
| - Int32Constant(divisor)));
|
| + Reduction const r = Reduce(
|
| + graph()->NewNode(machine()->Int32Mod(), Int32Constant(dividend),
|
| + Int32Constant(divisor), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(),
|
| IsInt32Constant(base::bits::SignedMod32(dividend, divisor)));
|
| }
|
| }
|
| TRACED_FORRANGE(int32_t, shift, 1, 30) {
|
| - Reduction const r = Reduce(
|
| - graph()->NewNode(machine()->Int32Mod(), p0, Int32Constant(1 << shift)));
|
| + Reduction const r =
|
| + Reduce(graph()->NewNode(machine()->Int32Mod(), p0,
|
| + Int32Constant(1 << shift), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
|
|
| Capture<Node*> branch;
|
| @@ -890,7 +896,8 @@ TEST_F(MachineOperatorReducerTest, Int32ModWithConstant) {
|
| TRACED_FORRANGE(int32_t, shift, 1, 31) {
|
| Reduction const r = Reduce(graph()->NewNode(
|
| machine()->Int32Mod(), p0,
|
| - Uint32Constant(bit_cast<uint32_t, int32_t>(-1) << shift)));
|
| + Uint32Constant(bit_cast<uint32_t, int32_t>(-1) << shift),
|
| + graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
|
|
| Capture<Node*> branch;
|
| @@ -910,8 +917,8 @@ TEST_F(MachineOperatorReducerTest, Int32ModWithConstant) {
|
| }
|
| TRACED_FOREACH(int32_t, divisor, kInt32Values) {
|
| if (divisor == 0 || base::bits::IsPowerOfTwo32(Abs(divisor))) continue;
|
| - Reduction const r = Reduce(
|
| - graph()->NewNode(machine()->Int32Mod(), p0, Int32Constant(divisor)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Int32Mod(), p0, Int32Constant(divisor), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(),
|
| IsInt32Sub(p0, IsInt32Mul(IsTruncatingDiv(p0, Abs(divisor)),
|
| @@ -922,7 +929,8 @@ TEST_F(MachineOperatorReducerTest, Int32ModWithConstant) {
|
|
|
| TEST_F(MachineOperatorReducerTest, Int32ModWithParameters) {
|
| Node* const p0 = Parameter(0);
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Int32Mod(), p0, p0));
|
| + Reduction const r =
|
| + Reduce(graph()->NewNode(machine()->Int32Mod(), p0, p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| @@ -935,28 +943,28 @@ TEST_F(MachineOperatorReducerTest, Int32ModWithParameters) {
|
| TEST_F(MachineOperatorReducerTest, Uint32ModWithConstant) {
|
| Node* const p0 = Parameter(0);
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Uint32Mod(), p0, Int32Constant(0)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Uint32Mod(), p0, Int32Constant(0), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Uint32Mod(), Int32Constant(0), p0));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Uint32Mod(), Int32Constant(0), p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| {
|
| - Reduction const r =
|
| - Reduce(graph()->NewNode(machine()->Uint32Mod(), p0, Int32Constant(1)));
|
| + Reduction const r = Reduce(graph()->NewNode(
|
| + machine()->Uint32Mod(), p0, Int32Constant(1), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
| TRACED_FOREACH(uint32_t, dividend, kUint32Values) {
|
| TRACED_FOREACH(uint32_t, divisor, kUint32Values) {
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Uint32Mod(),
|
| - Uint32Constant(dividend),
|
| - Uint32Constant(divisor)));
|
| + Reduction const r = Reduce(
|
| + graph()->NewNode(machine()->Uint32Mod(), Uint32Constant(dividend),
|
| + Uint32Constant(divisor), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(),
|
| IsInt32Constant(bit_cast<int32_t>(
|
| @@ -964,8 +972,9 @@ TEST_F(MachineOperatorReducerTest, Uint32ModWithConstant) {
|
| }
|
| }
|
| TRACED_FORRANGE(uint32_t, shift, 1, 31) {
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Uint32Mod(), p0,
|
| - Uint32Constant(1u << shift)));
|
| + Reduction const r =
|
| + Reduce(graph()->NewNode(machine()->Uint32Mod(), p0,
|
| + Uint32Constant(1u << shift), graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(),
|
| IsWord32And(p0, IsInt32Constant(
|
| @@ -976,7 +985,8 @@ TEST_F(MachineOperatorReducerTest, Uint32ModWithConstant) {
|
|
|
| TEST_F(MachineOperatorReducerTest, Uint32ModWithParameters) {
|
| Node* const p0 = Parameter(0);
|
| - Reduction const r = Reduce(graph()->NewNode(machine()->Uint32Mod(), p0, p0));
|
| + Reduction const r = Reduce(
|
| + graph()->NewNode(machine()->Uint32Mod(), p0, p0, graph()->start()));
|
| ASSERT_TRUE(r.Changed());
|
| EXPECT_THAT(r.replacement(), IsInt32Constant(0));
|
| }
|
|
|