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

Unified Diff: src/compiler/instruction-selector.cc

Issue 2701003003: [V8] Implement remaining SIMD operations on ARM. (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/js-native-context-specialization.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/instruction-selector.cc
diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
index 656b318e5380769f3464ddc6764c644a3d4bc697..7efa3baaa6eb8db6acda0efb4c51a417572c1040 100644
--- a/src/compiler/instruction-selector.cc
+++ b/src/compiler/instruction-selector.cc
@@ -1475,9 +1475,9 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kFloat32x4Sub:
return MarkAsSimd128(node), VisitFloat32x4Sub(node);
case IrOpcode::kFloat32x4Equal:
- return MarkAsSimd128(node), VisitFloat32x4Equal(node);
+ return MarkAsSimd1x4(node), VisitFloat32x4Equal(node);
case IrOpcode::kFloat32x4NotEqual:
- return MarkAsSimd128(node), VisitFloat32x4NotEqual(node);
+ return MarkAsSimd1x4(node), VisitFloat32x4NotEqual(node);
case IrOpcode::kCreateInt32x4:
return MarkAsSimd128(node), VisitCreateInt32x4(node);
case IrOpcode::kInt32x4ExtractLane:
@@ -1505,13 +1505,13 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kInt32x4Max:
return MarkAsSimd128(node), VisitInt32x4Max(node);
case IrOpcode::kInt32x4Equal:
- return MarkAsSimd128(node), VisitInt32x4Equal(node);
+ return MarkAsSimd1x4(node), VisitInt32x4Equal(node);
case IrOpcode::kInt32x4NotEqual:
- return MarkAsSimd128(node), VisitInt32x4NotEqual(node);
+ return MarkAsSimd1x4(node), VisitInt32x4NotEqual(node);
case IrOpcode::kInt32x4GreaterThan:
- return MarkAsSimd128(node), VisitInt32x4GreaterThan(node);
+ return MarkAsSimd1x4(node), VisitInt32x4GreaterThan(node);
case IrOpcode::kInt32x4GreaterThanOrEqual:
- return MarkAsSimd128(node), VisitInt32x4GreaterThanOrEqual(node);
+ return MarkAsSimd1x4(node), VisitInt32x4GreaterThanOrEqual(node);
case IrOpcode::kUint32x4ShiftRightByScalar:
return MarkAsSimd128(node), VisitUint32x4ShiftRightByScalar(node);
case IrOpcode::kUint32x4Min:
@@ -1519,9 +1519,9 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kUint32x4Max:
return MarkAsSimd128(node), VisitUint32x4Max(node);
case IrOpcode::kUint32x4GreaterThan:
- return MarkAsSimd128(node), VisitUint32x4GreaterThan(node);
+ return MarkAsSimd1x4(node), VisitUint32x4GreaterThan(node);
case IrOpcode::kUint32x4GreaterThanOrEqual:
- return MarkAsSimd128(node), VisitUint32x4GreaterThanOrEqual(node);
+ return MarkAsSimd1x4(node), VisitUint32x4GreaterThanOrEqual(node);
case IrOpcode::kCreateInt16x8:
return MarkAsSimd128(node), VisitCreateInt16x8(node);
case IrOpcode::kInt16x8ExtractLane:
@@ -1549,13 +1549,13 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kInt16x8Max:
return MarkAsSimd128(node), VisitInt16x8Max(node);
case IrOpcode::kInt16x8Equal:
- return MarkAsSimd128(node), VisitInt16x8Equal(node);
+ return MarkAsSimd1x8(node), VisitInt16x8Equal(node);
case IrOpcode::kInt16x8NotEqual:
- return MarkAsSimd128(node), VisitInt16x8NotEqual(node);
+ return MarkAsSimd1x8(node), VisitInt16x8NotEqual(node);
case IrOpcode::kInt16x8GreaterThan:
- return MarkAsSimd128(node), VisitInt16x8GreaterThan(node);
+ return MarkAsSimd1x8(node), VisitInt16x8GreaterThan(node);
case IrOpcode::kInt16x8GreaterThanOrEqual:
- return MarkAsSimd128(node), VisitInt16x8GreaterThanOrEqual(node);
+ return MarkAsSimd1x8(node), VisitInt16x8GreaterThanOrEqual(node);
case IrOpcode::kUint16x8ShiftRightByScalar:
return MarkAsSimd128(node), VisitUint16x8ShiftRightByScalar(node);
case IrOpcode::kUint16x8AddSaturate:
@@ -1567,9 +1567,9 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kUint16x8Max:
return MarkAsSimd128(node), VisitUint16x8Max(node);
case IrOpcode::kUint16x8GreaterThan:
- return MarkAsSimd128(node), VisitUint16x8GreaterThan(node);
+ return MarkAsSimd1x8(node), VisitUint16x8GreaterThan(node);
case IrOpcode::kUint16x8GreaterThanOrEqual:
- return MarkAsSimd128(node), VisitUint16x8GreaterThanOrEqual(node);
+ return MarkAsSimd1x8(node), VisitUint16x8GreaterThanOrEqual(node);
case IrOpcode::kCreateInt8x16:
return MarkAsSimd128(node), VisitCreateInt8x16(node);
case IrOpcode::kInt8x16ExtractLane:
@@ -1597,13 +1597,13 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kInt8x16Max:
return MarkAsSimd128(node), VisitInt8x16Max(node);
case IrOpcode::kInt8x16Equal:
- return MarkAsSimd128(node), VisitInt8x16Equal(node);
+ return MarkAsSimd1x16(node), VisitInt8x16Equal(node);
case IrOpcode::kInt8x16NotEqual:
- return MarkAsSimd128(node), VisitInt8x16NotEqual(node);
+ return MarkAsSimd1x16(node), VisitInt8x16NotEqual(node);
case IrOpcode::kInt8x16GreaterThan:
- return MarkAsSimd128(node), VisitInt8x16GreaterThan(node);
+ return MarkAsSimd1x16(node), VisitInt8x16GreaterThan(node);
case IrOpcode::kInt8x16GreaterThanOrEqual:
- return MarkAsSimd128(node), VisitInt8x16GreaterThanOrEqual(node);
+ return MarkAsSimd1x16(node), VisitInt8x16GreaterThanOrEqual(node);
case IrOpcode::kUint8x16ShiftRightByScalar:
return MarkAsSimd128(node), VisitUint8x16ShiftRightByScalar(node);
case IrOpcode::kUint8x16AddSaturate:
@@ -1615,9 +1615,9 @@ void InstructionSelector::VisitNode(Node* node) {
case IrOpcode::kUint8x16Max:
return MarkAsSimd128(node), VisitUint8x16Max(node);
case IrOpcode::kUint8x16GreaterThan:
- return MarkAsSimd128(node), VisitUint8x16GreaterThan(node);
+ return MarkAsSimd1x16(node), VisitUint8x16GreaterThan(node);
case IrOpcode::kUint8x16GreaterThanOrEqual:
- return MarkAsSimd128(node), VisitUint16x8GreaterThanOrEqual(node);
+ return MarkAsSimd1x16(node), VisitUint16x8GreaterThanOrEqual(node);
case IrOpcode::kSimd128And:
return MarkAsSimd128(node), VisitSimd128And(node);
case IrOpcode::kSimd128Or:
@@ -1632,6 +1632,18 @@ void InstructionSelector::VisitNode(Node* node) {
return MarkAsSimd128(node), VisitSimd16x8Select(node);
case IrOpcode::kSimd8x16Select:
return MarkAsSimd128(node), VisitSimd8x16Select(node);
+ case IrOpcode::kSimd1x4AnyTrue:
+ return MarkAsWord32(node), VisitSimd1x4AnyTrue(node);
+ case IrOpcode::kSimd1x4AllTrue:
+ return MarkAsWord32(node), VisitSimd1x4AllTrue(node);
+ case IrOpcode::kSimd1x8AnyTrue:
+ return MarkAsWord32(node), VisitSimd1x8AnyTrue(node);
+ case IrOpcode::kSimd1x8AllTrue:
+ return MarkAsWord32(node), VisitSimd1x8AllTrue(node);
+ case IrOpcode::kSimd1x16AnyTrue:
+ return MarkAsWord32(node), VisitSimd1x16AnyTrue(node);
+ case IrOpcode::kSimd1x16AllTrue:
+ return MarkAsWord32(node), VisitSimd1x16AllTrue(node);
default:
V8_Fatal(__FILE__, __LINE__, "Unexpected operator #%d:%s @ node #%d",
node->opcode(), node->op()->mnemonic(), node->id());
@@ -2225,19 +2237,31 @@ void InstructionSelector::VisitUint8x16GreaterThanOrEqual(Node* node) {
UNIMPLEMENTED();
}
+void InstructionSelector::VisitSimd128And(Node* node) { UNIMPLEMENTED(); }
+
+void InstructionSelector::VisitSimd128Or(Node* node) { UNIMPLEMENTED(); }
+
+void InstructionSelector::VisitSimd128Xor(Node* node) { UNIMPLEMENTED(); }
+
+void InstructionSelector::VisitSimd128Not(Node* node) { UNIMPLEMENTED(); }
+
void InstructionSelector::VisitSimd32x4Select(Node* node) { UNIMPLEMENTED(); }
void InstructionSelector::VisitSimd16x8Select(Node* node) { UNIMPLEMENTED(); }
void InstructionSelector::VisitSimd8x16Select(Node* node) { UNIMPLEMENTED(); }
-void InstructionSelector::VisitSimd128And(Node* node) { UNIMPLEMENTED(); }
+void InstructionSelector::VisitSimd1x4AnyTrue(Node* node) { UNIMPLEMENTED(); }
-void InstructionSelector::VisitSimd128Or(Node* node) { UNIMPLEMENTED(); }
+void InstructionSelector::VisitSimd1x4AllTrue(Node* node) { UNIMPLEMENTED(); }
-void InstructionSelector::VisitSimd128Xor(Node* node) { UNIMPLEMENTED(); }
+void InstructionSelector::VisitSimd1x8AnyTrue(Node* node) { UNIMPLEMENTED(); }
-void InstructionSelector::VisitSimd128Not(Node* node) { UNIMPLEMENTED(); }
+void InstructionSelector::VisitSimd1x8AllTrue(Node* node) { UNIMPLEMENTED(); }
+
+void InstructionSelector::VisitSimd1x16AnyTrue(Node* node) { UNIMPLEMENTED(); }
+
+void InstructionSelector::VisitSimd1x16AllTrue(Node* node) { UNIMPLEMENTED(); }
#endif // !V8_TARGET_ARCH_ARM
void InstructionSelector::VisitFinishRegion(Node* node) { EmitIdentity(node); }
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/js-native-context-specialization.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698