272 const Type *bottom_type() const { return Type::DOUBLE; }
273 virtual uint ideal_reg() const { return Op_RegD; }
274 virtual const Type* Value(PhaseGVN* phase) const;
275 };
276
277 //------------------------------FmaFNode--------------------------------------
278 // fused-multiply-add float
279 class FmaFNode : public Node {
280 public:
281 FmaFNode(Node *c, Node *in1, Node *in2, Node *in3) : Node(c, in1, in2, in3) {}
282 virtual int Opcode() const;
283 const Type *bottom_type() const { return Type::FLOAT; }
284 virtual uint ideal_reg() const { return Op_RegF; }
285 virtual const Type* Value(PhaseGVN* phase) const;
286 };
287
288 //------------------------------MulAddS2INode----------------------------------
289 // Multiply shorts into integers and add them.
290 // Semantics: I_OUT = S1 * S2 + S3 * S4
291 class MulAddS2INode : public Node {
292 public:
293 MulAddS2INode(Node* in1, Node *in2, Node *in3, Node* in4) : Node(0, in1, in2, in3, in4) {}
294 virtual int Opcode() const;
295 const Type *bottom_type() const { return TypeInt::INT; }
296 virtual uint ideal_reg() const { return Op_RegI; }
297 };
298
299 #endif // SHARE_VM_OPTO_MULNODE_HPP
|
272 const Type *bottom_type() const { return Type::DOUBLE; }
273 virtual uint ideal_reg() const { return Op_RegD; }
274 virtual const Type* Value(PhaseGVN* phase) const;
275 };
276
277 //------------------------------FmaFNode--------------------------------------
278 // fused-multiply-add float
279 class FmaFNode : public Node {
280 public:
281 FmaFNode(Node *c, Node *in1, Node *in2, Node *in3) : Node(c, in1, in2, in3) {}
282 virtual int Opcode() const;
283 const Type *bottom_type() const { return Type::FLOAT; }
284 virtual uint ideal_reg() const { return Op_RegF; }
285 virtual const Type* Value(PhaseGVN* phase) const;
286 };
287
288 //------------------------------MulAddS2INode----------------------------------
289 // Multiply shorts into integers and add them.
290 // Semantics: I_OUT = S1 * S2 + S3 * S4
291 class MulAddS2INode : public Node {
292 virtual uint hash() const;
293 public:
294 MulAddS2INode(Node* in1, Node *in2, Node *in3, Node* in4) : Node(0, in1, in2, in3, in4) {}
295 virtual int Opcode() const;
296 const Type *bottom_type() const { return TypeInt::INT; }
297 virtual uint ideal_reg() const { return Op_RegI; }
298 };
299
300 #endif // SHARE_VM_OPTO_MULNODE_HPP
|