| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/base/bits.h" | 5 #include "src/base/bits.h" |
| 6 #include "src/base/division-by-constant.h" | 6 #include "src/base/division-by-constant.h" |
| 7 #include "src/compiler/js-graph.h" | 7 #include "src/compiler/js-graph.h" |
| 8 #include "src/compiler/machine-operator-reducer.h" | 8 #include "src/compiler/machine-operator-reducer.h" |
| 9 #include "src/compiler/typer.h" | 9 #include "src/compiler/typer.h" |
| 10 #include "test/unittests/compiler/graph-unittest.h" | 10 #include "test/unittests/compiler/graph-unittest.h" |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 Reduction reduction = Reduce(graph()->NewNode( | 462 Reduction reduction = Reduce(graph()->NewNode( |
| 463 machine()->TruncateFloat64ToInt32(), | 463 machine()->TruncateFloat64ToInt32(), |
| 464 graph()->NewNode(common()->Phi(kMachFloat64, 2), p0, p1, merge))); | 464 graph()->NewNode(common()->Phi(kMachFloat64, 2), p0, p1, merge))); |
| 465 ASSERT_TRUE(reduction.Changed()); | 465 ASSERT_TRUE(reduction.Changed()); |
| 466 EXPECT_THAT(reduction.replacement(), | 466 EXPECT_THAT(reduction.replacement(), |
| 467 IsPhi(kMachInt32, IsTruncateFloat64ToInt32(p0), | 467 IsPhi(kMachInt32, IsTruncateFloat64ToInt32(p0), |
| 468 IsTruncateFloat64ToInt32(p1), merge)); | 468 IsTruncateFloat64ToInt32(p1), merge)); |
| 469 } | 469 } |
| 470 | 470 |
| 471 | 471 |
| 472 TEST_F(MachineOperatorReducerTest, | |
| 473 TruncateFloat64ToInt32WithPhiAndChangeInt32ToFloat64) { | |
| 474 Node* const p0 = Parameter(0); | |
| 475 Node* const merge = graph()->start(); | |
| 476 Node* const truncate = graph()->NewNode( | |
| 477 machine()->TruncateFloat64ToInt32(), | |
| 478 graph()->NewNode(common()->Phi(kMachFloat64, 2), p0, p0, merge)); | |
| 479 truncate->InputAt(0)->ReplaceInput( | |
| 480 1, graph()->NewNode(machine()->ChangeInt32ToFloat64(), truncate)); | |
| 481 Reduction reduction = Reduce(truncate); | |
| 482 ASSERT_TRUE(reduction.Changed()); | |
| 483 Capture<Node*> phi; | |
| 484 EXPECT_THAT( | |
| 485 reduction.replacement(), | |
| 486 AllOf(CaptureEq(&phi), IsPhi(kMachInt32, IsTruncateFloat64ToInt32(p0), | |
| 487 CaptureEq(&phi), merge))); | |
| 488 } | |
| 489 | |
| 490 | |
| 491 // ----------------------------------------------------------------------------- | 472 // ----------------------------------------------------------------------------- |
| 492 // TruncateInt64ToInt32 | 473 // TruncateInt64ToInt32 |
| 493 | 474 |
| 494 | 475 |
| 495 TEST_F(MachineOperatorReducerTest, TruncateInt64ToInt32WithChangeInt32ToInt64) { | 476 TEST_F(MachineOperatorReducerTest, TruncateInt64ToInt32WithChangeInt32ToInt64) { |
| 496 Node* value = Parameter(0); | 477 Node* value = Parameter(0); |
| 497 Reduction reduction = Reduce(graph()->NewNode( | 478 Reduction reduction = Reduce(graph()->NewNode( |
| 498 machine()->TruncateInt64ToInt32(), | 479 machine()->TruncateInt64ToInt32(), |
| 499 graph()->NewNode(machine()->ChangeInt32ToInt64(), value))); | 480 graph()->NewNode(machine()->ChangeInt32ToInt64(), value))); |
| 500 ASSERT_TRUE(reduction.Changed()); | 481 ASSERT_TRUE(reduction.Changed()); |
| (...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1350 Reduction r = Reduce(node); | 1331 Reduction r = Reduce(node); |
| 1351 ASSERT_TRUE(r.Changed()); | 1332 ASSERT_TRUE(r.Changed()); |
| 1352 EXPECT_THAT(r.replacement(), | 1333 EXPECT_THAT(r.replacement(), |
| 1353 IsStore(rep, base, index, value, effect, control)); | 1334 IsStore(rep, base, index, value, effect, control)); |
| 1354 } | 1335 } |
| 1355 } | 1336 } |
| 1356 | 1337 |
| 1357 } // namespace compiler | 1338 } // namespace compiler |
| 1358 } // namespace internal | 1339 } // namespace internal |
| 1359 } // namespace v8 | 1340 } // namespace v8 |
| OLD | NEW |