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

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

Issue 2683713003: [Turbofan] Add more non-arithmetic SIMD operations. (Closed)
Patch Set: Rebase. Created 3 years, 10 months 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/instruction-codes.h ('k') | src/compiler/machine-operator.h » ('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 1504 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/compiler/instruction-codes.h ('k') | src/compiler/machine-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698