| 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 |