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 |