Index: src/mips/lithium-mips.h |
diff --git a/src/mips/lithium-mips.h b/src/mips/lithium-mips.h |
index 50feee0cb7e26477797f7a8e93534ced62bf662f..32db0dd43652096db87b511043463e0854098c6b 100644 |
--- a/src/mips/lithium-mips.h |
+++ b/src/mips/lithium-mips.h |
@@ -137,6 +137,7 @@ class LCodeGen; |
V(MathCos) \ |
V(MathExp) \ |
V(MathFloor) \ |
+ V(MathFloorOfDiv) \ |
V(MathLog) \ |
V(MathMinMax) \ |
V(MathPowHalf) \ |
@@ -623,6 +624,25 @@ class LDivI: public LTemplateInstruction<1, 2, 0> { |
}; |
+class LMathFloorOfDiv: public LTemplateInstruction<1, 2, 1> { |
+ public: |
+ LMathFloorOfDiv(LOperand* left, |
+ LOperand* right, |
+ LOperand* temp = NULL) { |
+ inputs_[0] = left; |
+ inputs_[1] = right; |
+ temps_[0] = temp; |
+ } |
+ |
+ LOperand* left() { return inputs_[0]; } |
+ LOperand* right() { return inputs_[1]; } |
+ LOperand* temp() { return temps_[0]; } |
+ |
+ DECLARE_CONCRETE_INSTRUCTION(MathFloorOfDiv, "math-floor-of-div") |
+ DECLARE_HYDROGEN_ACCESSOR(MathFloorOfDiv) |
+}; |
+ |
+ |
class LMulI: public LTemplateInstruction<1, 2, 1> { |
public: |
LMulI(LOperand* left, LOperand* right, LOperand* temp) { |
@@ -2642,6 +2662,9 @@ class LChunkBuilder BASE_EMBEDDED { |
LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend); |
+ static bool HasMagicNumberForDivisor(int32_t divisor); |
+ static HValue* SimplifiedDivisorForMathFloorOfDiv(HValue* val); |
+ |
LInstruction* DoMathFloor(HUnaryMathOperation* instr); |
LInstruction* DoMathRound(HUnaryMathOperation* instr); |
LInstruction* DoMathAbs(HUnaryMathOperation* instr); |