| Index: src/compiler/ppc/instruction-selector-ppc.cc
|
| diff --git a/src/compiler/ppc/instruction-selector-ppc.cc b/src/compiler/ppc/instruction-selector-ppc.cc
|
| index 15e6b86402b314620b882a6277b65a5c070b8385..401a80df1c5d488f4aae7617704b15899a8d6d55 100644
|
| --- a/src/compiler/ppc/instruction-selector-ppc.cc
|
| +++ b/src/compiler/ppc/instruction-selector-ppc.cc
|
| @@ -723,12 +723,6 @@ void InstructionSelector::VisitWord32Shr(Node* node) {
|
| VisitRRO(this, kPPC_ShiftRight32, node, kShift32Imm);
|
| }
|
|
|
| -#if !V8_TARGET_ARCH_PPC64
|
| -void InstructionSelector::VisitWord32PairShr(Node* node) { UNIMPLEMENTED(); }
|
| -
|
| -void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); }
|
| -#endif
|
| -
|
| #if V8_TARGET_ARCH_PPC64
|
| void InstructionSelector::VisitWord64Shr(Node* node) {
|
| PPCOperandGenerator g(this);
|
| @@ -791,8 +785,9 @@ void InstructionSelector::VisitWord32Sar(Node* node) {
|
| }
|
|
|
| #if !V8_TARGET_ARCH_PPC64
|
| -void InstructionSelector::VisitWord32PairShl(Node* node) {
|
| - PPCOperandGenerator g(this);
|
| +void VisitPairShift(InstructionSelector* selector, ArchOpcode opcode,
|
| + Node* node) {
|
| + PPCOperandGenerator g(selector);
|
| Int32Matcher m(node->InputAt(2));
|
| InstructionOperand shift_operand;
|
| if (m.HasValue()) {
|
| @@ -809,7 +804,19 @@ void InstructionSelector::VisitWord32PairShl(Node* node) {
|
| g.DefineSameAsFirst(node),
|
| g.DefineAsRegister(NodeProperties::FindProjection(node, 1))};
|
|
|
| - Emit(kPPC_PairShiftLeft, 2, outputs, 3, inputs);
|
| + selector->Emit(opcode, 2, outputs, 3, inputs);
|
| +}
|
| +
|
| +void InstructionSelector::VisitWord32PairShl(Node* node) {
|
| + VisitPairShift(this, kPPC_ShiftLeftPair, node);
|
| +}
|
| +
|
| +void InstructionSelector::VisitWord32PairShr(Node* node) {
|
| + VisitPairShift(this, kPPC_ShiftRightPair, node);
|
| +}
|
| +
|
| +void InstructionSelector::VisitWord32PairSar(Node* node) {
|
| + VisitPairShift(this, kPPC_ShiftRightAlgPair, node);
|
| }
|
| #endif
|
|
|
|
|