Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Side by Side Diff: src/compiler/instruction-selector.cc

Issue 2584863002: [Turbofan] Add native ARM support for basic SIMD 32x4 operations. (Closed)
Patch Set: Fix Arm compile. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/arm/instruction-selector-arm.cc ('k') | src/compiler/wasm-compiler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « src/compiler/arm/instruction-selector-arm.cc ('k') | src/compiler/wasm-compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698