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 <limits> | 7 #include <limits> |
8 | 8 |
9 #include "src/compiler/instruction-selector-impl.h" | 9 #include "src/compiler/instruction-selector-impl.h" |
10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 case IrOpcode::kFloat64Sqrt: | 692 case IrOpcode::kFloat64Sqrt: |
693 case IrOpcode::kFloat64Floor: | 693 case IrOpcode::kFloat64Floor: |
694 case IrOpcode::kFloat64Ceil: | 694 case IrOpcode::kFloat64Ceil: |
695 case IrOpcode::kFloat64RoundTruncate: | 695 case IrOpcode::kFloat64RoundTruncate: |
696 case IrOpcode::kFloat64RoundTiesAway: | 696 case IrOpcode::kFloat64RoundTiesAway: |
697 return kMachFloat64; | 697 return kMachFloat64; |
698 case IrOpcode::kFloat64Equal: | 698 case IrOpcode::kFloat64Equal: |
699 case IrOpcode::kFloat64LessThan: | 699 case IrOpcode::kFloat64LessThan: |
700 case IrOpcode::kFloat64LessThanOrEqual: | 700 case IrOpcode::kFloat64LessThanOrEqual: |
701 return kMachBool; | 701 return kMachBool; |
| 702 case IrOpcode::kFloat64ExtractWord32: |
| 703 return kMachInt32; |
| 704 case IrOpcode::kFloat64InsertWord32: |
| 705 return kMachFloat64; |
702 default: | 706 default: |
703 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", | 707 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", |
704 node->opcode(), node->op()->mnemonic(), node->id()); | 708 node->opcode(), node->op()->mnemonic(), node->id()); |
705 } | 709 } |
706 return kMachNone; | 710 return kMachNone; |
707 } | 711 } |
708 | 712 |
709 | 713 |
710 void InstructionSelector::VisitNode(Node* node) { | 714 void InstructionSelector::VisitNode(Node* node) { |
711 DCHECK_NOT_NULL(schedule()->block(node)); // should only use scheduled nodes. | 715 DCHECK_NOT_NULL(schedule()->block(node)); // should only use scheduled nodes. |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
896 case IrOpcode::kFloat64LessThanOrEqual: | 900 case IrOpcode::kFloat64LessThanOrEqual: |
897 return VisitFloat64LessThanOrEqual(node); | 901 return VisitFloat64LessThanOrEqual(node); |
898 case IrOpcode::kFloat64Floor: | 902 case IrOpcode::kFloat64Floor: |
899 return MarkAsDouble(node), VisitFloat64Floor(node); | 903 return MarkAsDouble(node), VisitFloat64Floor(node); |
900 case IrOpcode::kFloat64Ceil: | 904 case IrOpcode::kFloat64Ceil: |
901 return MarkAsDouble(node), VisitFloat64Ceil(node); | 905 return MarkAsDouble(node), VisitFloat64Ceil(node); |
902 case IrOpcode::kFloat64RoundTruncate: | 906 case IrOpcode::kFloat64RoundTruncate: |
903 return MarkAsDouble(node), VisitFloat64RoundTruncate(node); | 907 return MarkAsDouble(node), VisitFloat64RoundTruncate(node); |
904 case IrOpcode::kFloat64RoundTiesAway: | 908 case IrOpcode::kFloat64RoundTiesAway: |
905 return MarkAsDouble(node), VisitFloat64RoundTiesAway(node); | 909 return MarkAsDouble(node), VisitFloat64RoundTiesAway(node); |
| 910 case IrOpcode::kFloat64ExtractWord32: |
| 911 return VisitFloat64ExtractWord32(node); |
| 912 case IrOpcode::kFloat64InsertWord32: |
| 913 return MarkAsDouble(node), VisitFloat64InsertWord32(node); |
906 case IrOpcode::kLoadStackPointer: | 914 case IrOpcode::kLoadStackPointer: |
907 return VisitLoadStackPointer(node); | 915 return VisitLoadStackPointer(node); |
908 case IrOpcode::kCheckedLoad: { | 916 case IrOpcode::kCheckedLoad: { |
909 MachineType rep = OpParameter<MachineType>(node); | 917 MachineType rep = OpParameter<MachineType>(node); |
910 MarkAsRepresentation(rep, node); | 918 MarkAsRepresentation(rep, node); |
911 return VisitCheckedLoad(node); | 919 return VisitCheckedLoad(node); |
912 } | 920 } |
913 case IrOpcode::kCheckedStore: | 921 case IrOpcode::kCheckedStore: |
914 return VisitCheckedStore(node); | 922 return VisitCheckedStore(node); |
915 default: | 923 default: |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1257 MachineOperatorBuilder::Flags | 1265 MachineOperatorBuilder::Flags |
1258 InstructionSelector::SupportedMachineOperatorFlags() { | 1266 InstructionSelector::SupportedMachineOperatorFlags() { |
1259 return MachineOperatorBuilder::Flag::kNoFlags; | 1267 return MachineOperatorBuilder::Flag::kNoFlags; |
1260 } | 1268 } |
1261 | 1269 |
1262 #endif // !V8_TURBOFAN_BACKEND | 1270 #endif // !V8_TURBOFAN_BACKEND |
1263 | 1271 |
1264 } // namespace compiler | 1272 } // namespace compiler |
1265 } // namespace internal | 1273 } // namespace internal |
1266 } // namespace v8 | 1274 } // namespace v8 |
OLD | NEW |