Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index 1b2dec04416480659edd618642d88277ccfef9a6..dca8c809a89a25fe7da07319fad05fecf92d5ef9 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -1327,18 +1327,18 @@ void LCodeGen::DoFlooringDivByPowerOf2I(LFlooringDivByPowerOf2I* instr) { |
} |
// If the divisor is negative, we have to negate and handle edge cases. |
- if (instr->hydrogen()->CheckFlag(HValue::kLeftCanBeMinInt)) { |
- // divident can be the same register as result so save the value of it |
- // for checking overflow. |
- __ Move(scratch, dividend); |
- } |
+ |
+ // divident can be the same register as result so save the value of it |
+ // for checking overflow. |
+ __ Move(scratch, dividend); |
+ |
__ Subu(result, zero_reg, dividend); |
if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) { |
DeoptimizeIf(eq, instr->environment(), result, Operand(zero_reg)); |
} |
// Dividing by -1 is basically negation, unless we overflow. |
- __ Xor(at, scratch, result); |
+ __ Xor(scratch, scratch, result); |
if (divisor == -1) { |
if (instr->hydrogen()->CheckFlag(HValue::kLeftCanBeMinInt)) { |
DeoptimizeIf(ge, instr->environment(), at, Operand(zero_reg)); |
@@ -1353,7 +1353,7 @@ void LCodeGen::DoFlooringDivByPowerOf2I(LFlooringDivByPowerOf2I* instr) { |
} |
Label no_overflow, done; |
- __ Branch(&no_overflow, lt, at, Operand(zero_reg)); |
+ __ Branch(&no_overflow, lt, scratch, Operand(zero_reg)); |
__ li(result, Operand(kMinInt / divisor)); |
__ Branch(&done); |
__ bind(&no_overflow); |