| 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/compiler/instruction-selector.h" | 5 #include "src/compiler/instruction-selector.h" |
| 6 | 6 |
| 7 #include "src/compiler/instruction-selector-impl.h" | 7 #include "src/compiler/instruction-selector-impl.h" |
| 8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
| 9 #include "src/compiler/node-properties-inl.h" | 9 #include "src/compiler/node-properties-inl.h" |
| 10 #include "src/compiler/pipeline.h" | 10 #include "src/compiler/pipeline.h" |
| (...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 case IrOpcode::kFloat64Mod: | 605 case IrOpcode::kFloat64Mod: |
| 606 return MarkAsDouble(node), VisitFloat64Mod(node); | 606 return MarkAsDouble(node), VisitFloat64Mod(node); |
| 607 case IrOpcode::kFloat64Sqrt: | 607 case IrOpcode::kFloat64Sqrt: |
| 608 return MarkAsDouble(node), VisitFloat64Sqrt(node); | 608 return MarkAsDouble(node), VisitFloat64Sqrt(node); |
| 609 case IrOpcode::kFloat64Equal: | 609 case IrOpcode::kFloat64Equal: |
| 610 return VisitFloat64Equal(node); | 610 return VisitFloat64Equal(node); |
| 611 case IrOpcode::kFloat64LessThan: | 611 case IrOpcode::kFloat64LessThan: |
| 612 return VisitFloat64LessThan(node); | 612 return VisitFloat64LessThan(node); |
| 613 case IrOpcode::kFloat64LessThanOrEqual: | 613 case IrOpcode::kFloat64LessThanOrEqual: |
| 614 return VisitFloat64LessThanOrEqual(node); | 614 return VisitFloat64LessThanOrEqual(node); |
| 615 case IrOpcode::kLoadStackPointer: |
| 616 return VisitLoadStackPointer(node); |
| 615 default: | 617 default: |
| 616 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", | 618 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", |
| 617 node->opcode(), node->op()->mnemonic(), node->id()); | 619 node->opcode(), node->op()->mnemonic(), node->id()); |
| 618 } | 620 } |
| 619 } | 621 } |
| 620 | 622 |
| 621 | 623 |
| 622 #if V8_TURBOFAN_BACKEND | 624 #if V8_TURBOFAN_BACKEND |
| 623 | 625 |
| 624 void InstructionSelector::VisitWord32Equal(Node* node) { | 626 void InstructionSelector::VisitWord32Equal(Node* node) { |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 FlagsContinuation cont(kUnorderedLessThan, node); | 722 FlagsContinuation cont(kUnorderedLessThan, node); |
| 721 VisitFloat64Compare(node, &cont); | 723 VisitFloat64Compare(node, &cont); |
| 722 } | 724 } |
| 723 | 725 |
| 724 | 726 |
| 725 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { | 727 void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { |
| 726 FlagsContinuation cont(kUnorderedLessThanOrEqual, node); | 728 FlagsContinuation cont(kUnorderedLessThanOrEqual, node); |
| 727 VisitFloat64Compare(node, &cont); | 729 VisitFloat64Compare(node, &cont); |
| 728 } | 730 } |
| 729 | 731 |
| 732 |
| 733 void InstructionSelector::VisitLoadStackPointer(Node* node) { |
| 734 OperandGenerator g(this); |
| 735 Emit(kArchStackPointer, g.DefineAsRegister(node)); |
| 736 } |
| 737 |
| 730 #endif // V8_TURBOFAN_BACKEND | 738 #endif // V8_TURBOFAN_BACKEND |
| 731 | 739 |
| 732 // 32 bit targets do not implement the following instructions. | 740 // 32 bit targets do not implement the following instructions. |
| 733 #if V8_TARGET_ARCH_32_BIT && V8_TURBOFAN_BACKEND | 741 #if V8_TARGET_ARCH_32_BIT && V8_TURBOFAN_BACKEND |
| 734 | 742 |
| 735 void InstructionSelector::VisitWord64And(Node* node) { UNIMPLEMENTED(); } | 743 void InstructionSelector::VisitWord64And(Node* node) { UNIMPLEMENTED(); } |
| 736 | 744 |
| 737 | 745 |
| 738 void InstructionSelector::VisitWord64Or(Node* node) { UNIMPLEMENTED(); } | 746 void InstructionSelector::VisitWord64Or(Node* node) { UNIMPLEMENTED(); } |
| 739 | 747 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1109 | 1117 |
| 1110 | 1118 |
| 1111 void InstructionSelector::VisitCall(Node* call, BasicBlock* continuation, | 1119 void InstructionSelector::VisitCall(Node* call, BasicBlock* continuation, |
| 1112 BasicBlock* deoptimization) {} | 1120 BasicBlock* deoptimization) {} |
| 1113 | 1121 |
| 1114 #endif // !V8_TURBOFAN_BACKEND | 1122 #endif // !V8_TURBOFAN_BACKEND |
| 1115 | 1123 |
| 1116 } // namespace compiler | 1124 } // namespace compiler |
| 1117 } // namespace internal | 1125 } // namespace internal |
| 1118 } // namespace v8 | 1126 } // namespace v8 |
| OLD | NEW |