| Index: src/mips/lithium-mips.cc
|
| diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc
|
| index 5ff73db813505e4b1612ca07858dbb7a5933504d..a28e58e94e200a94cfb8c2a947b66c2b6aa54432 100644
|
| --- a/src/mips/lithium-mips.cc
|
| +++ b/src/mips/lithium-mips.cc
|
| @@ -1325,8 +1325,9 @@ LInstruction* LChunkBuilder::DoDivI(HDiv* instr) {
|
| DCHECK(instr->right()->representation().Equals(instr->representation()));
|
| LOperand* dividend = UseRegister(instr->left());
|
| LOperand* divisor = UseRegister(instr->right());
|
| + LOperand* temp = TempRegister();
|
| LInstruction* result =
|
| - DefineAsRegister(new(zone()) LDivI(dividend, divisor));
|
| + DefineAsRegister(new(zone()) LDivI(dividend, divisor, temp));
|
| if (instr->CheckFlag(HValue::kCanBeDivByZero) ||
|
| instr->CheckFlag(HValue::kBailoutOnMinusZero) ||
|
| (instr->CheckFlag(HValue::kCanOverflow) &&
|
| @@ -1511,7 +1512,7 @@ LInstruction* LChunkBuilder::DoMul(HMul* instr) {
|
| return DefineAsRegister(mul);
|
|
|
| } else if (instr->representation().IsDouble()) {
|
| - if (kArchVariant == kMips32r2) {
|
| + if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) {
|
| if (instr->HasOneUse() && instr->uses().value()->IsAdd()) {
|
| HAdd* add = HAdd::cast(instr->uses().value());
|
| if (instr == add->left()) {
|
| @@ -1584,7 +1585,7 @@ LInstruction* LChunkBuilder::DoAdd(HAdd* instr) {
|
| LInstruction* result = DefineAsRegister(add);
|
| return result;
|
| } else if (instr->representation().IsDouble()) {
|
| - if (kArchVariant == kMips32r2) {
|
| + if (IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) {
|
| if (instr->left()->IsMul())
|
| return DoMultiplyAdd(HMul::cast(instr->left()), instr->right());
|
|
|
|
|