OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/compiler/int64-lowering.h" | 5 #include "src/compiler/int64-lowering.h" |
6 #include "src/compiler/common-operator.h" | 6 #include "src/compiler/common-operator.h" |
7 #include "src/compiler/linkage.h" | 7 #include "src/compiler/linkage.h" |
8 #include "src/compiler/machine-operator.h" | 8 #include "src/compiler/machine-operator.h" |
9 #include "src/compiler/node.h" | 9 #include "src/compiler/node.h" |
10 | 10 |
(...skipping 831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
842 TEST_F(Int64LoweringTest, I64ReverseBytes) { | 842 TEST_F(Int64LoweringTest, I64ReverseBytes) { |
843 LowerGraph(graph()->NewNode(machine()->Word64ReverseBytes().placeholder(), | 843 LowerGraph(graph()->NewNode(machine()->Word64ReverseBytes().placeholder(), |
844 Int64Constant(value(0))), | 844 Int64Constant(value(0))), |
845 MachineRepresentation::kWord64); | 845 MachineRepresentation::kWord64); |
846 EXPECT_THAT( | 846 EXPECT_THAT( |
847 graph()->end()->InputAt(1), | 847 graph()->end()->InputAt(1), |
848 IsReturn2(IsWord32ReverseBytes(IsInt32Constant(high_word_value(0))), | 848 IsReturn2(IsWord32ReverseBytes(IsInt32Constant(high_word_value(0))), |
849 IsWord32ReverseBytes(IsInt32Constant(low_word_value(0))), | 849 IsWord32ReverseBytes(IsInt32Constant(low_word_value(0))), |
850 start(), start())); | 850 start(), start())); |
851 } | 851 } |
| 852 |
| 853 TEST_F(Int64LoweringTest, EffectPhiLoop) { |
| 854 // Construct a cycle consisting of an EffectPhi, a Store, and a Load. |
| 855 Node* eff_phi = graph()->NewNode(common()->EffectPhi(1), graph()->start(), |
| 856 graph()->start()); |
| 857 |
| 858 StoreRepresentation store_rep(MachineRepresentation::kWord64, |
| 859 WriteBarrierKind::kNoWriteBarrier); |
| 860 LoadRepresentation load_rep(MachineType::Int64()); |
| 861 |
| 862 Node* load = |
| 863 graph()->NewNode(machine()->Load(load_rep), Int64Constant(value(0)), |
| 864 Int64Constant(value(1)), eff_phi, graph()->start()); |
| 865 |
| 866 Node* store = |
| 867 graph()->NewNode(machine()->Store(store_rep), Int64Constant(value(0)), |
| 868 Int64Constant(value(1)), load, load, graph()->start()); |
| 869 |
| 870 eff_phi->InsertInput(zone(), 1, store); |
| 871 NodeProperties::ChangeOp(eff_phi, |
| 872 common()->ResizeMergeOrPhi(eff_phi->op(), 2)); |
| 873 |
| 874 LowerGraph(load, MachineRepresentation::kWord64); |
| 875 } |
852 } // namespace compiler | 876 } // namespace compiler |
853 } // namespace internal | 877 } // namespace internal |
854 } // namespace v8 | 878 } // namespace v8 |
OLD | NEW |