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/compiler-source-position-table.h" | 10 #include "src/compiler/compiler-source-position-table.h" |
(...skipping 1504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1515 case IrOpcode::kUint32x4ShiftRightByScalar: | 1515 case IrOpcode::kUint32x4ShiftRightByScalar: |
1516 return MarkAsSimd128(node), VisitUint32x4ShiftRightByScalar(node); | 1516 return MarkAsSimd128(node), VisitUint32x4ShiftRightByScalar(node); |
1517 case IrOpcode::kUint32x4Min: | 1517 case IrOpcode::kUint32x4Min: |
1518 return MarkAsSimd128(node), VisitUint32x4Min(node); | 1518 return MarkAsSimd128(node), VisitUint32x4Min(node); |
1519 case IrOpcode::kUint32x4Max: | 1519 case IrOpcode::kUint32x4Max: |
1520 return MarkAsSimd128(node), VisitUint32x4Max(node); | 1520 return MarkAsSimd128(node), VisitUint32x4Max(node); |
1521 case IrOpcode::kUint32x4GreaterThan: | 1521 case IrOpcode::kUint32x4GreaterThan: |
1522 return MarkAsSimd128(node), VisitUint32x4GreaterThan(node); | 1522 return MarkAsSimd128(node), VisitUint32x4GreaterThan(node); |
1523 case IrOpcode::kUint32x4GreaterThanOrEqual: | 1523 case IrOpcode::kUint32x4GreaterThanOrEqual: |
1524 return MarkAsSimd128(node), VisitUint32x4GreaterThanOrEqual(node); | 1524 return MarkAsSimd128(node), VisitUint32x4GreaterThanOrEqual(node); |
1525 case IrOpcode::kSimd32x4Select: | |
1526 return MarkAsSimd128(node), VisitSimd32x4Select(node); | |
1527 case IrOpcode::kCreateInt16x8: | 1525 case IrOpcode::kCreateInt16x8: |
1528 return MarkAsSimd128(node), VisitCreateInt16x8(node); | 1526 return MarkAsSimd128(node), VisitCreateInt16x8(node); |
1529 case IrOpcode::kInt16x8ExtractLane: | 1527 case IrOpcode::kInt16x8ExtractLane: |
1530 return MarkAsWord32(node), VisitInt16x8ExtractLane(node); | 1528 return MarkAsWord32(node), VisitInt16x8ExtractLane(node); |
1531 case IrOpcode::kInt16x8ReplaceLane: | 1529 case IrOpcode::kInt16x8ReplaceLane: |
1532 return MarkAsSimd128(node), VisitInt16x8ReplaceLane(node); | 1530 return MarkAsSimd128(node), VisitInt16x8ReplaceLane(node); |
1533 case IrOpcode::kInt16x8Neg: | 1531 case IrOpcode::kInt16x8Neg: |
1534 return MarkAsSimd128(node), VisitInt16x8Neg(node); | 1532 return MarkAsSimd128(node), VisitInt16x8Neg(node); |
1535 case IrOpcode::kInt16x8ShiftLeftByScalar: | 1533 case IrOpcode::kInt16x8ShiftLeftByScalar: |
1536 return MarkAsSimd128(node), VisitInt16x8ShiftLeftByScalar(node); | 1534 return MarkAsSimd128(node), VisitInt16x8ShiftLeftByScalar(node); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1613 case IrOpcode::kUint8x16SubSaturate: | 1611 case IrOpcode::kUint8x16SubSaturate: |
1614 return MarkAsSimd128(node), VisitUint8x16SubSaturate(node); | 1612 return MarkAsSimd128(node), VisitUint8x16SubSaturate(node); |
1615 case IrOpcode::kUint8x16Min: | 1613 case IrOpcode::kUint8x16Min: |
1616 return MarkAsSimd128(node), VisitUint8x16Min(node); | 1614 return MarkAsSimd128(node), VisitUint8x16Min(node); |
1617 case IrOpcode::kUint8x16Max: | 1615 case IrOpcode::kUint8x16Max: |
1618 return MarkAsSimd128(node), VisitUint8x16Max(node); | 1616 return MarkAsSimd128(node), VisitUint8x16Max(node); |
1619 case IrOpcode::kUint8x16GreaterThan: | 1617 case IrOpcode::kUint8x16GreaterThan: |
1620 return MarkAsSimd128(node), VisitUint8x16GreaterThan(node); | 1618 return MarkAsSimd128(node), VisitUint8x16GreaterThan(node); |
1621 case IrOpcode::kUint8x16GreaterThanOrEqual: | 1619 case IrOpcode::kUint8x16GreaterThanOrEqual: |
1622 return MarkAsSimd128(node), VisitUint16x8GreaterThanOrEqual(node); | 1620 return MarkAsSimd128(node), VisitUint16x8GreaterThanOrEqual(node); |
| 1621 case IrOpcode::kSimd128And: |
| 1622 return MarkAsSimd128(node), VisitSimd128And(node); |
| 1623 case IrOpcode::kSimd128Or: |
| 1624 return MarkAsSimd128(node), VisitSimd128Or(node); |
| 1625 case IrOpcode::kSimd128Xor: |
| 1626 return MarkAsSimd128(node), VisitSimd128Xor(node); |
| 1627 case IrOpcode::kSimd128Not: |
| 1628 return MarkAsSimd128(node), VisitSimd128Not(node); |
| 1629 case IrOpcode::kSimd32x4Select: |
| 1630 return MarkAsSimd128(node), VisitSimd32x4Select(node); |
| 1631 case IrOpcode::kSimd16x8Select: |
| 1632 return MarkAsSimd128(node), VisitSimd16x8Select(node); |
| 1633 case IrOpcode::kSimd8x16Select: |
| 1634 return MarkAsSimd128(node), VisitSimd8x16Select(node); |
1623 default: | 1635 default: |
1624 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", | 1636 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", |
1625 node->opcode(), node->op()->mnemonic(), node->id()); | 1637 node->opcode(), node->op()->mnemonic(), node->id()); |
1626 break; | 1638 break; |
1627 } | 1639 } |
1628 } | 1640 } |
1629 | 1641 |
1630 void InstructionSelector::VisitLoadStackPointer(Node* node) { | 1642 void InstructionSelector::VisitLoadStackPointer(Node* node) { |
1631 OperandGenerator g(this); | 1643 OperandGenerator g(this); |
1632 Emit(kArchStackPointer, g.DefineAsRegister(node)); | 1644 Emit(kArchStackPointer, g.DefineAsRegister(node)); |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2046 void InstructionSelector::VisitUint32x4Min(Node* node) { UNIMPLEMENTED(); } | 2058 void InstructionSelector::VisitUint32x4Min(Node* node) { UNIMPLEMENTED(); } |
2047 | 2059 |
2048 void InstructionSelector::VisitUint32x4GreaterThan(Node* node) { | 2060 void InstructionSelector::VisitUint32x4GreaterThan(Node* node) { |
2049 UNIMPLEMENTED(); | 2061 UNIMPLEMENTED(); |
2050 } | 2062 } |
2051 | 2063 |
2052 void InstructionSelector::VisitUint32x4GreaterThanOrEqual(Node* node) { | 2064 void InstructionSelector::VisitUint32x4GreaterThanOrEqual(Node* node) { |
2053 UNIMPLEMENTED(); | 2065 UNIMPLEMENTED(); |
2054 } | 2066 } |
2055 | 2067 |
2056 void InstructionSelector::VisitSimd32x4Select(Node* node) { UNIMPLEMENTED(); } | |
2057 | |
2058 void InstructionSelector::VisitCreateInt16x8(Node* node) { UNIMPLEMENTED(); } | 2068 void InstructionSelector::VisitCreateInt16x8(Node* node) { UNIMPLEMENTED(); } |
2059 | 2069 |
2060 void InstructionSelector::VisitInt16x8ExtractLane(Node* node) { | 2070 void InstructionSelector::VisitInt16x8ExtractLane(Node* node) { |
2061 UNIMPLEMENTED(); | 2071 UNIMPLEMENTED(); |
2062 } | 2072 } |
2063 | 2073 |
2064 void InstructionSelector::VisitInt16x8ReplaceLane(Node* node) { | 2074 void InstructionSelector::VisitInt16x8ReplaceLane(Node* node) { |
2065 UNIMPLEMENTED(); | 2075 UNIMPLEMENTED(); |
2066 } | 2076 } |
2067 | 2077 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2207 | 2217 |
2208 void InstructionSelector::VisitUint8x16Min(Node* node) { UNIMPLEMENTED(); } | 2218 void InstructionSelector::VisitUint8x16Min(Node* node) { UNIMPLEMENTED(); } |
2209 | 2219 |
2210 void InstructionSelector::VisitUint8x16GreaterThan(Node* node) { | 2220 void InstructionSelector::VisitUint8x16GreaterThan(Node* node) { |
2211 UNIMPLEMENTED(); | 2221 UNIMPLEMENTED(); |
2212 } | 2222 } |
2213 | 2223 |
2214 void InstructionSelector::VisitUint8x16GreaterThanOrEqual(Node* node) { | 2224 void InstructionSelector::VisitUint8x16GreaterThanOrEqual(Node* node) { |
2215 UNIMPLEMENTED(); | 2225 UNIMPLEMENTED(); |
2216 } | 2226 } |
| 2227 |
| 2228 void InstructionSelector::VisitSimd32x4Select(Node* node) { UNIMPLEMENTED(); } |
| 2229 |
| 2230 void InstructionSelector::VisitSimd16x8Select(Node* node) { UNIMPLEMENTED(); } |
| 2231 |
| 2232 void InstructionSelector::VisitSimd8x16Select(Node* node) { UNIMPLEMENTED(); } |
| 2233 |
| 2234 void InstructionSelector::VisitSimd128And(Node* node) { UNIMPLEMENTED(); } |
| 2235 |
| 2236 void InstructionSelector::VisitSimd128Or(Node* node) { UNIMPLEMENTED(); } |
| 2237 |
| 2238 void InstructionSelector::VisitSimd128Xor(Node* node) { UNIMPLEMENTED(); } |
| 2239 |
| 2240 void InstructionSelector::VisitSimd128Not(Node* node) { UNIMPLEMENTED(); } |
2217 #endif // !V8_TARGET_ARCH_ARM | 2241 #endif // !V8_TARGET_ARCH_ARM |
2218 | 2242 |
2219 void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } | 2243 void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } |
2220 | 2244 |
2221 void InstructionSelector::VisitParameter(Node* node) { | 2245 void InstructionSelector::VisitParameter(Node* node) { |
2222 OperandGenerator g(this); | 2246 OperandGenerator g(this); |
2223 int index = ParameterIndexOf(node->op()); | 2247 int index = ParameterIndexOf(node->op()); |
2224 InstructionOperand op = | 2248 InstructionOperand op = |
2225 linkage()->ParameterHasSecondaryLocation(index) | 2249 linkage()->ParameterHasSecondaryLocation(index) |
2226 ? g.DefineAsDualLocation( | 2250 ? g.DefineAsDualLocation( |
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2587 return new (instruction_zone()) FrameStateDescriptor( | 2611 return new (instruction_zone()) FrameStateDescriptor( |
2588 instruction_zone(), state_info.type(), state_info.bailout_id(), | 2612 instruction_zone(), state_info.type(), state_info.bailout_id(), |
2589 state_info.state_combine(), parameters, locals, stack, | 2613 state_info.state_combine(), parameters, locals, stack, |
2590 state_info.shared_info(), outer_state); | 2614 state_info.shared_info(), outer_state); |
2591 } | 2615 } |
2592 | 2616 |
2593 | 2617 |
2594 } // namespace compiler | 2618 } // namespace compiler |
2595 } // namespace internal | 2619 } // namespace internal |
2596 } // namespace v8 | 2620 } // namespace v8 |
OLD | NEW |