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) |