268 class FmaDNode : public Node { 269 public: 270 FmaDNode(Node *c, Node *in1, Node *in2, Node *in3) : Node(c, in1, in2, in3) {} 271 virtual int Opcode() const; 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 #endif // SHARE_VM_OPTO_MULNODE_HPP | 268 class FmaDNode : public Node { 269 public: 270 FmaDNode(Node *c, Node *in1, Node *in2, Node *in3) : Node(c, in1, in2, in3) {} 271 virtual int Opcode() const; 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 |