Index: src/compiler/arm/code-generator-arm.cc |
diff --git a/src/compiler/arm/code-generator-arm.cc b/src/compiler/arm/code-generator-arm.cc |
index 474e41dc99c07d6e488bc3edff25a573b56176fe..b6b9e20ac57845f819330d23673d414d7df7f766 100644 |
--- a/src/compiler/arm/code-generator-arm.cc |
+++ b/src/compiler/arm/code-generator-arm.cc |
@@ -809,6 +809,18 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
Operand(i.InputRegister(3))); |
DCHECK_EQ(LeaveCC, i.OutputSBit()); |
break; |
+ case kArmMulPair: |
+ // i.InputRegister(0) ... left low word. |
+ // i.InputRegister(1) ... left high word. |
+ // i.InputRegister(2) ... right low word. |
+ // i.InputRegister(3) ... right high word. |
+ __ umull(i.OutputRegister(0), i.OutputRegister(1), i.InputRegister(0), |
+ i.InputRegister(2)); |
+ __ mla(i.OutputRegister(1), i.InputRegister(0), i.InputRegister(3), |
+ i.OutputRegister(1)); |
+ __ mla(i.OutputRegister(1), i.InputRegister(2), i.InputRegister(1), |
+ i.OutputRegister(1)); |
+ break; |
case kArmLslPair: |
if (instr->InputAt(2)->IsImmediate()) { |
__ LslPair(i.OutputRegister(0), i.OutputRegister(1), i.InputRegister(0), |