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/base/adapters.h" | 9 #include "src/base/adapters.h" |
10 #include "src/compiler/instruction-selector-impl.h" | 10 #include "src/compiler/instruction-selector-impl.h" |
(...skipping 1339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1350 return VisitAtomicStore(node); | 1350 return VisitAtomicStore(node); |
1351 case IrOpcode::kProtectedLoad: | 1351 case IrOpcode::kProtectedLoad: |
1352 return VisitProtectedLoad(node); | 1352 return VisitProtectedLoad(node); |
1353 case IrOpcode::kUnsafePointerAdd: | 1353 case IrOpcode::kUnsafePointerAdd: |
1354 MarkAsRepresentation(MachineType::PointerRepresentation(), node); | 1354 MarkAsRepresentation(MachineType::PointerRepresentation(), node); |
1355 return VisitUnsafePointerAdd(node); | 1355 return VisitUnsafePointerAdd(node); |
1356 case IrOpcode::kCreateInt32x4: | 1356 case IrOpcode::kCreateInt32x4: |
1357 return MarkAsSimd128(node), VisitCreateInt32x4(node); | 1357 return MarkAsSimd128(node), VisitCreateInt32x4(node); |
1358 case IrOpcode::kInt32x4ExtractLane: | 1358 case IrOpcode::kInt32x4ExtractLane: |
1359 return MarkAsWord32(node), VisitInt32x4ExtractLane(node); | 1359 return MarkAsWord32(node), VisitInt32x4ExtractLane(node); |
| 1360 case IrOpcode::kInt32x4ReplaceLane: |
| 1361 return MarkAsSimd128(node), VisitInt32x4ReplaceLane(node); |
| 1362 case IrOpcode::kInt32x4Add: |
| 1363 return MarkAsSimd128(node), VisitInt32x4Add(node); |
| 1364 case IrOpcode::kInt32x4Sub: |
| 1365 return MarkAsSimd128(node), VisitInt32x4Sub(node); |
1360 default: | 1366 default: |
1361 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", | 1367 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", |
1362 node->opcode(), node->op()->mnemonic(), node->id()); | 1368 node->opcode(), node->op()->mnemonic(), node->id()); |
1363 break; | 1369 break; |
1364 } | 1370 } |
1365 } | 1371 } |
1366 | 1372 |
1367 void InstructionSelector::VisitLoadStackPointer(Node* node) { | 1373 void InstructionSelector::VisitLoadStackPointer(Node* node) { |
1368 OperandGenerator g(this); | 1374 OperandGenerator g(this); |
1369 Emit(kArchStackPointer, g.DefineAsRegister(node)); | 1375 Emit(kArchStackPointer, g.DefineAsRegister(node)); |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1683 | 1689 |
1684 void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); } | 1690 void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); } |
1685 #endif // V8_TARGET_ARCH_64_BIT | 1691 #endif // V8_TARGET_ARCH_64_BIT |
1686 | 1692 |
1687 #if !V8_TARGET_ARCH_X64 | 1693 #if !V8_TARGET_ARCH_X64 |
1688 void InstructionSelector::VisitCreateInt32x4(Node* node) { UNIMPLEMENTED(); } | 1694 void InstructionSelector::VisitCreateInt32x4(Node* node) { UNIMPLEMENTED(); } |
1689 | 1695 |
1690 void InstructionSelector::VisitInt32x4ExtractLane(Node* node) { | 1696 void InstructionSelector::VisitInt32x4ExtractLane(Node* node) { |
1691 UNIMPLEMENTED(); | 1697 UNIMPLEMENTED(); |
1692 } | 1698 } |
| 1699 |
| 1700 void InstructionSelector::VisitInt32x4ReplaceLane(Node* node) { |
| 1701 UNIMPLEMENTED(); |
| 1702 } |
| 1703 |
| 1704 void InstructionSelector::VisitInt32x4Add(Node* node) { UNIMPLEMENTED(); } |
| 1705 |
| 1706 void InstructionSelector::VisitInt32x4Sub(Node* node) { UNIMPLEMENTED(); } |
1693 #endif // !V8_TARGET_ARCH_X64 | 1707 #endif // !V8_TARGET_ARCH_X64 |
1694 | 1708 |
1695 void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } | 1709 void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } |
1696 | 1710 |
1697 void InstructionSelector::VisitParameter(Node* node) { | 1711 void InstructionSelector::VisitParameter(Node* node) { |
1698 OperandGenerator g(this); | 1712 OperandGenerator g(this); |
1699 int index = ParameterIndexOf(node->op()); | 1713 int index = ParameterIndexOf(node->op()); |
1700 InstructionOperand op = | 1714 InstructionOperand op = |
1701 linkage()->ParameterHasSecondaryLocation(index) | 1715 linkage()->ParameterHasSecondaryLocation(index) |
1702 ? g.DefineAsDualLocation( | 1716 ? g.DefineAsDualLocation( |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2099 return new (instruction_zone()) FrameStateDescriptor( | 2113 return new (instruction_zone()) FrameStateDescriptor( |
2100 instruction_zone(), state_info.type(), state_info.bailout_id(), | 2114 instruction_zone(), state_info.type(), state_info.bailout_id(), |
2101 state_info.state_combine(), parameters, locals, stack, | 2115 state_info.state_combine(), parameters, locals, stack, |
2102 state_info.shared_info(), outer_state); | 2116 state_info.shared_info(), outer_state); |
2103 } | 2117 } |
2104 | 2118 |
2105 | 2119 |
2106 } // namespace compiler | 2120 } // namespace compiler |
2107 } // namespace internal | 2121 } // namespace internal |
2108 } // namespace v8 | 2122 } // namespace v8 |
OLD | NEW |