Index: src/compiler/arm/instruction-selector-arm.cc |
diff --git a/src/compiler/arm/instruction-selector-arm.cc b/src/compiler/arm/instruction-selector-arm.cc |
index d92356ecbe0ebf38b333cdd8e0f6d26165b9ebc0..83a977867b6d6659206e0f365874031e46b6c171 100644 |
--- a/src/compiler/arm/instruction-selector-arm.cc |
+++ b/src/compiler/arm/instruction-selector-arm.cc |
@@ -112,15 +112,6 @@ void VisitRRRShuffle(InstructionSelector* selector, ArchOpcode opcode, |
g.UseRegister(node->InputAt(1))); |
} |
-void VisitRRRR(InstructionSelector* selector, ArchOpcode opcode, Node* node) { |
- ArmOperandGenerator g(selector); |
- // Use DefineSameAsFirst for ternary ops that clobber their first input, |
- // e.g. the NEON vbsl instruction. |
- selector->Emit( |
- opcode, g.DefineSameAsFirst(node), g.UseRegister(node->InputAt(0)), |
- g.UseRegister(node->InputAt(1)), g.UseRegister(node->InputAt(2))); |
-} |
- |
void VisitRRI(InstructionSelector* selector, ArchOpcode opcode, Node* node) { |
ArmOperandGenerator g(selector); |
int32_t imm = OpParameter<int32_t>(node); |
@@ -459,9 +450,6 @@ void InstructionSelector::VisitLoad(Node* node) { |
opcode = kArmVld1S128; |
break; |
case MachineRepresentation::kWord64: // Fall through. |
- case MachineRepresentation::kSimd1x4: // Fall through. |
- case MachineRepresentation::kSimd1x8: // Fall through. |
- case MachineRepresentation::kSimd1x16: // Fall through. |
case MachineRepresentation::kNone: |
UNREACHABLE(); |
return; |
@@ -549,9 +537,6 @@ void InstructionSelector::VisitStore(Node* node) { |
opcode = kArmVst1S128; |
break; |
case MachineRepresentation::kWord64: // Fall through. |
- case MachineRepresentation::kSimd1x4: // Fall through. |
- case MachineRepresentation::kSimd1x8: // Fall through. |
- case MachineRepresentation::kSimd1x16: // Fall through. |
case MachineRepresentation::kNone: |
UNREACHABLE(); |
return; |
@@ -758,9 +743,6 @@ void InstructionSelector::VisitCheckedLoad(Node* node) { |
case MachineRepresentation::kTagged: // Fall through. |
case MachineRepresentation::kWord64: // Fall through. |
case MachineRepresentation::kSimd128: // Fall through. |
- case MachineRepresentation::kSimd1x4: // Fall through. |
- case MachineRepresentation::kSimd1x8: // Fall through. |
- case MachineRepresentation::kSimd1x16: // Fall through. |
case MachineRepresentation::kNone: |
UNREACHABLE(); |
return; |
@@ -805,9 +787,6 @@ void InstructionSelector::VisitCheckedStore(Node* node) { |
case MachineRepresentation::kTagged: // Fall through. |
case MachineRepresentation::kWord64: // Fall through. |
case MachineRepresentation::kSimd128: // Fall through. |
- case MachineRepresentation::kSimd1x4: // Fall through. |
- case MachineRepresentation::kSimd1x8: // Fall through. |
- case MachineRepresentation::kSimd1x16: // Fall through. |
case MachineRepresentation::kNone: |
UNREACHABLE(); |
return; |
@@ -2390,15 +2369,9 @@ VISIT_ATOMIC_BINOP(Xor) |
V(I8x16) |
#define SIMD_FORMAT_LIST(V) \ |
- V(32x4) \ |
- V(16x8) \ |
- V(8x16) |
- |
-#define SIMD_ZERO_OP_LIST(V) \ |
- V(S128Zero) \ |
- V(S1x4Zero) \ |
- V(S1x8Zero) \ |
- V(S1x16Zero) |
+ V(32x4, 4) \ |
+ V(16x8, 8) \ |
+ V(8x16, 16) |
#define SIMD_UNOP_LIST(V) \ |
V(F32x4SConvertI32x4, kArmF32x4SConvertI32x4) \ |
@@ -2421,13 +2394,10 @@ VISIT_ATOMIC_BINOP(Xor) |
V(I16x8UConvertI8x16High, kArmI16x8UConvertI8x16High) \ |
V(I8x16Neg, kArmI8x16Neg) \ |
V(S128Not, kArmS128Not) \ |
- V(S1x4Not, kArmS128Not) \ |
V(S1x4AnyTrue, kArmS1x4AnyTrue) \ |
V(S1x4AllTrue, kArmS1x4AllTrue) \ |
- V(S1x8Not, kArmS128Not) \ |
V(S1x8AnyTrue, kArmS1x8AnyTrue) \ |
V(S1x8AllTrue, kArmS1x8AllTrue) \ |
- V(S1x16Not, kArmS128Not) \ |
V(S1x16AnyTrue, kArmS1x16AnyTrue) \ |
V(S1x16AllTrue, kArmS1x16AllTrue) |
@@ -2508,16 +2478,12 @@ VISIT_ATOMIC_BINOP(Xor) |
V(I8x16GeU, kArmI8x16GeU) \ |
V(S128And, kArmS128And) \ |
V(S128Or, kArmS128Or) \ |
- V(S128Xor, kArmS128Xor) \ |
- V(S1x4And, kArmS128And) \ |
- V(S1x4Or, kArmS128Or) \ |
- V(S1x4Xor, kArmS128Xor) \ |
- V(S1x8And, kArmS128And) \ |
- V(S1x8Or, kArmS128Or) \ |
- V(S1x8Xor, kArmS128Xor) \ |
- V(S1x16And, kArmS128And) \ |
- V(S1x16Or, kArmS128Or) \ |
- V(S1x16Xor, kArmS128Xor) |
+ V(S128Xor, kArmS128Xor) |
+ |
+void InstructionSelector::VisitS128Zero(Node* node) { |
+ ArmOperandGenerator g(this); |
+ Emit(kArmS128Zero, g.DefineAsRegister(node), g.DefineAsRegister(node)); |
+} |
#define SIMD_VISIT_SPLAT(Type) \ |
void InstructionSelector::Visit##Type##Splat(Node* node) { \ |
@@ -2540,14 +2506,6 @@ SIMD_TYPE_LIST(SIMD_VISIT_EXTRACT_LANE) |
SIMD_TYPE_LIST(SIMD_VISIT_REPLACE_LANE) |
#undef SIMD_VISIT_REPLACE_LANE |
-#define SIMD_VISIT_ZERO_OP(Name) \ |
- void InstructionSelector::Visit##Name(Node* node) { \ |
- ArmOperandGenerator g(this); \ |
- Emit(kArmS128Zero, g.DefineAsRegister(node), g.DefineAsRegister(node)); \ |
- } |
-SIMD_ZERO_OP_LIST(SIMD_VISIT_ZERO_OP) |
-#undef SIMD_VISIT_ZERO_OP |
- |
#define SIMD_VISIT_UNOP(Name, instruction) \ |
void InstructionSelector::Visit##Name(Node* node) { \ |
VisitRR(this, instruction, node); \ |
@@ -2569,12 +2527,12 @@ SIMD_SHIFT_OP_LIST(SIMD_VISIT_SHIFT_OP) |
SIMD_BINOP_LIST(SIMD_VISIT_BINOP) |
#undef SIMD_VISIT_BINOP |
-#define SIMD_VISIT_SELECT_OP(format) \ |
- void InstructionSelector::VisitS##format##Select(Node* node) { \ |
- VisitRRRR(this, kArmS128Select, node); \ |
- } |
-SIMD_FORMAT_LIST(SIMD_VISIT_SELECT_OP) |
-#undef SIMD_VISIT_SELECT_OP |
+void InstructionSelector::VisitS128Select(Node* node) { |
+ ArmOperandGenerator g(this); |
+ Emit(kArmS128Select, g.DefineSameAsFirst(node), |
+ g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1)), |
+ g.UseRegister(node->InputAt(2))); |
+} |
namespace { |
template <int LANES> |