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 1407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1418 MarkAsRepresentation(type.representation(), node); | 1418 MarkAsRepresentation(type.representation(), node); |
1419 return VisitAtomicLoad(node); | 1419 return VisitAtomicLoad(node); |
1420 } | 1420 } |
1421 case IrOpcode::kAtomicStore: | 1421 case IrOpcode::kAtomicStore: |
1422 return VisitAtomicStore(node); | 1422 return VisitAtomicStore(node); |
1423 case IrOpcode::kProtectedLoad: | 1423 case IrOpcode::kProtectedLoad: |
1424 return VisitProtectedLoad(node); | 1424 return VisitProtectedLoad(node); |
1425 case IrOpcode::kUnsafePointerAdd: | 1425 case IrOpcode::kUnsafePointerAdd: |
1426 MarkAsRepresentation(MachineType::PointerRepresentation(), node); | 1426 MarkAsRepresentation(MachineType::PointerRepresentation(), node); |
1427 return VisitUnsafePointerAdd(node); | 1427 return VisitUnsafePointerAdd(node); |
| 1428 case IrOpcode::kCreateFloat32x4: |
| 1429 return MarkAsSimd128(node), VisitCreateFloat32x4(node); |
| 1430 case IrOpcode::kFloat32x4ExtractLane: |
| 1431 return MarkAsFloat32(node), VisitFloat32x4ExtractLane(node); |
| 1432 case IrOpcode::kFloat32x4ReplaceLane: |
| 1433 return MarkAsSimd128(node), VisitFloat32x4ReplaceLane(node); |
| 1434 case IrOpcode::kFloat32x4FromInt32x4: |
| 1435 return MarkAsSimd128(node), VisitFloat32x4FromInt32x4(node); |
| 1436 case IrOpcode::kFloat32x4FromUint32x4: |
| 1437 return MarkAsSimd128(node), VisitFloat32x4FromUint32x4(node); |
| 1438 case IrOpcode::kFloat32x4Add: |
| 1439 return MarkAsSimd128(node), VisitFloat32x4Add(node); |
| 1440 case IrOpcode::kFloat32x4Sub: |
| 1441 return MarkAsSimd128(node), VisitFloat32x4Sub(node); |
1428 case IrOpcode::kCreateInt32x4: | 1442 case IrOpcode::kCreateInt32x4: |
1429 return MarkAsSimd128(node), VisitCreateInt32x4(node); | 1443 return MarkAsSimd128(node), VisitCreateInt32x4(node); |
1430 case IrOpcode::kInt32x4ExtractLane: | 1444 case IrOpcode::kInt32x4ExtractLane: |
1431 return MarkAsWord32(node), VisitInt32x4ExtractLane(node); | 1445 return MarkAsWord32(node), VisitInt32x4ExtractLane(node); |
1432 case IrOpcode::kInt32x4ReplaceLane: | 1446 case IrOpcode::kInt32x4ReplaceLane: |
1433 return MarkAsSimd128(node), VisitInt32x4ReplaceLane(node); | 1447 return MarkAsSimd128(node), VisitInt32x4ReplaceLane(node); |
| 1448 case IrOpcode::kInt32x4FromFloat32x4: |
| 1449 return MarkAsSimd128(node), VisitInt32x4FromFloat32x4(node); |
| 1450 case IrOpcode::kUint32x4FromFloat32x4: |
| 1451 return MarkAsSimd128(node), VisitUint32x4FromFloat32x4(node); |
1434 case IrOpcode::kInt32x4Add: | 1452 case IrOpcode::kInt32x4Add: |
1435 return MarkAsSimd128(node), VisitInt32x4Add(node); | 1453 return MarkAsSimd128(node), VisitInt32x4Add(node); |
1436 case IrOpcode::kInt32x4Sub: | 1454 case IrOpcode::kInt32x4Sub: |
1437 return MarkAsSimd128(node), VisitInt32x4Sub(node); | 1455 return MarkAsSimd128(node), VisitInt32x4Sub(node); |
| 1456 case IrOpcode::kInt32x4Equal: |
| 1457 return MarkAsSimd128(node), VisitInt32x4Equal(node); |
| 1458 case IrOpcode::kInt32x4NotEqual: |
| 1459 return MarkAsSimd128(node), VisitInt32x4NotEqual(node); |
| 1460 case IrOpcode::kSimd32x4Select: |
| 1461 return MarkAsSimd128(node), VisitSimd32x4Select(node); |
1438 default: | 1462 default: |
1439 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", | 1463 V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d", |
1440 node->opcode(), node->op()->mnemonic(), node->id()); | 1464 node->opcode(), node->op()->mnemonic(), node->id()); |
1441 break; | 1465 break; |
1442 } | 1466 } |
1443 } | 1467 } |
1444 | 1468 |
1445 void InstructionSelector::VisitLoadStackPointer(Node* node) { | 1469 void InstructionSelector::VisitLoadStackPointer(Node* node) { |
1446 OperandGenerator g(this); | 1470 OperandGenerator g(this); |
1447 Emit(kArchStackPointer, g.DefineAsRegister(node)); | 1471 Emit(kArchStackPointer, g.DefineAsRegister(node)); |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1755 | 1779 |
1756 void InstructionSelector::VisitInt32PairMul(Node* node) { UNIMPLEMENTED(); } | 1780 void InstructionSelector::VisitInt32PairMul(Node* node) { UNIMPLEMENTED(); } |
1757 | 1781 |
1758 void InstructionSelector::VisitWord32PairShl(Node* node) { UNIMPLEMENTED(); } | 1782 void InstructionSelector::VisitWord32PairShl(Node* node) { UNIMPLEMENTED(); } |
1759 | 1783 |
1760 void InstructionSelector::VisitWord32PairShr(Node* node) { UNIMPLEMENTED(); } | 1784 void InstructionSelector::VisitWord32PairShr(Node* node) { UNIMPLEMENTED(); } |
1761 | 1785 |
1762 void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); } | 1786 void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); } |
1763 #endif // V8_TARGET_ARCH_64_BIT | 1787 #endif // V8_TARGET_ARCH_64_BIT |
1764 | 1788 |
1765 #if !V8_TARGET_ARCH_X64 | 1789 #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM |
1766 void InstructionSelector::VisitCreateInt32x4(Node* node) { UNIMPLEMENTED(); } | 1790 void InstructionSelector::VisitCreateInt32x4(Node* node) { UNIMPLEMENTED(); } |
1767 | 1791 |
1768 void InstructionSelector::VisitInt32x4ExtractLane(Node* node) { | 1792 void InstructionSelector::VisitInt32x4ExtractLane(Node* node) { |
1769 UNIMPLEMENTED(); | 1793 UNIMPLEMENTED(); |
1770 } | 1794 } |
1771 | 1795 |
1772 void InstructionSelector::VisitInt32x4ReplaceLane(Node* node) { | 1796 void InstructionSelector::VisitInt32x4ReplaceLane(Node* node) { |
1773 UNIMPLEMENTED(); | 1797 UNIMPLEMENTED(); |
1774 } | 1798 } |
1775 | 1799 |
1776 void InstructionSelector::VisitInt32x4Add(Node* node) { UNIMPLEMENTED(); } | 1800 void InstructionSelector::VisitInt32x4Add(Node* node) { UNIMPLEMENTED(); } |
1777 | 1801 |
1778 void InstructionSelector::VisitInt32x4Sub(Node* node) { UNIMPLEMENTED(); } | 1802 void InstructionSelector::VisitInt32x4Sub(Node* node) { UNIMPLEMENTED(); } |
1779 #endif // !V8_TARGET_ARCH_X64 | 1803 |
| 1804 #endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM |
| 1805 |
| 1806 #if !V8_TARGET_ARCH_ARM |
| 1807 void InstructionSelector::VisitCreateFloat32x4(Node* node) { UNIMPLEMENTED(); } |
| 1808 |
| 1809 void InstructionSelector::VisitFloat32x4ExtractLane(Node* node) { |
| 1810 UNIMPLEMENTED(); |
| 1811 } |
| 1812 |
| 1813 void InstructionSelector::VisitFloat32x4ReplaceLane(Node* node) { |
| 1814 UNIMPLEMENTED(); |
| 1815 } |
| 1816 |
| 1817 void InstructionSelector::VisitFloat32x4FromInt32x4(Node* node) { |
| 1818 UNIMPLEMENTED(); |
| 1819 } |
| 1820 |
| 1821 void InstructionSelector::VisitFloat32x4FromUint32x4(Node* node) { |
| 1822 UNIMPLEMENTED(); |
| 1823 } |
| 1824 |
| 1825 void InstructionSelector::VisitFloat32x4Add(Node* node) { UNIMPLEMENTED(); } |
| 1826 |
| 1827 void InstructionSelector::VisitFloat32x4Sub(Node* node) { UNIMPLEMENTED(); } |
| 1828 |
| 1829 void InstructionSelector::VisitInt32x4FromFloat32x4(Node* node) { |
| 1830 UNIMPLEMENTED(); |
| 1831 } |
| 1832 |
| 1833 void InstructionSelector::VisitUint32x4FromFloat32x4(Node* node) { |
| 1834 UNIMPLEMENTED(); |
| 1835 } |
| 1836 |
| 1837 void InstructionSelector::VisitInt32x4Equal(Node* node) { UNIMPLEMENTED(); } |
| 1838 |
| 1839 void InstructionSelector::VisitInt32x4NotEqual(Node* node) { UNIMPLEMENTED(); } |
| 1840 |
| 1841 void InstructionSelector::VisitSimd32x4Select(Node* node) { UNIMPLEMENTED(); } |
| 1842 #endif // !V8_TARGET_ARCH_ARM |
1780 | 1843 |
1781 void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } | 1844 void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); } |
1782 | 1845 |
1783 void InstructionSelector::VisitParameter(Node* node) { | 1846 void InstructionSelector::VisitParameter(Node* node) { |
1784 OperandGenerator g(this); | 1847 OperandGenerator g(this); |
1785 int index = ParameterIndexOf(node->op()); | 1848 int index = ParameterIndexOf(node->op()); |
1786 InstructionOperand op = | 1849 InstructionOperand op = |
1787 linkage()->ParameterHasSecondaryLocation(index) | 1850 linkage()->ParameterHasSecondaryLocation(index) |
1788 ? g.DefineAsDualLocation( | 1851 ? g.DefineAsDualLocation( |
1789 node, linkage()->GetParameterLocation(index), | 1852 node, linkage()->GetParameterLocation(index), |
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2158 return new (instruction_zone()) FrameStateDescriptor( | 2221 return new (instruction_zone()) FrameStateDescriptor( |
2159 instruction_zone(), state_info.type(), state_info.bailout_id(), | 2222 instruction_zone(), state_info.type(), state_info.bailout_id(), |
2160 state_info.state_combine(), parameters, locals, stack, | 2223 state_info.state_combine(), parameters, locals, stack, |
2161 state_info.shared_info(), outer_state); | 2224 state_info.shared_info(), outer_state); |
2162 } | 2225 } |
2163 | 2226 |
2164 | 2227 |
2165 } // namespace compiler | 2228 } // namespace compiler |
2166 } // namespace internal | 2229 } // namespace internal |
2167 } // namespace v8 | 2230 } // namespace v8 |
OLD | NEW |