| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index d11835452c72d7024f2a38bb49a854eba7ce45f1..fb39c43c6bf034b1c4ed60036ef2f5e20949d368 100644
|
| --- a/src/hydrogen-instructions.h
|
| +++ b/src/hydrogen-instructions.h
|
| @@ -143,6 +143,7 @@ class LChunkBuilder;
|
| V(MathMinMax) \
|
| V(Mod) \
|
| V(Mul) \
|
| + V(MultiplyAddD) \
|
| V(ObjectLiteral) \
|
| V(OsrEntry) \
|
| V(OuterContext) \
|
| @@ -3537,6 +3538,33 @@ class HMul: public HArithmeticBinaryOperation {
|
| };
|
|
|
|
|
| +class HMultiplyAddD: public HTemplateInstruction<4> {
|
| + public:
|
| + HMultiplyAddD(HValue* context, HValue* a, HValue* b, HValue* c) {
|
| + ASSERT(a != NULL && b != NULL && c != NULL);
|
| + SetOperandAt(0, context);
|
| + SetOperandAt(1, a);
|
| + SetOperandAt(2, b);
|
| + SetOperandAt(3, c);
|
| +
|
| + set_representation(Representation::Double());
|
| + }
|
| +
|
| + HValue* context() { return OperandAt(0); }
|
| + HValue* a() { return OperandAt(1); }
|
| + HValue* b() { return OperandAt(2); }
|
| + HValue* c() { return OperandAt(3); }
|
| +
|
| + virtual void PrintDataTo(StringStream* stream);
|
| +
|
| + virtual Representation RequiredInputRepresentation(int index) {
|
| + return index == 0 ? Representation::Tagged() : Representation::Double();
|
| + }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(MultiplyAddD)
|
| +};
|
| +
|
| +
|
| class HMod: public HArithmeticBinaryOperation {
|
| public:
|
| HMod(HValue* context, HValue* left, HValue* right)
|
|
|