src/hotspot/share/opto/addnode.hpp
changeset 53041 f15af1e2c683
parent 47216 71c04702a3d5
child 53244 9807daeb47c4
equal deleted inserted replaced
53040:6aeb6a23fb83 53041:f15af1e2c683
   247   virtual const Type *bottom_type() const { return TypeInt::INT; }
   247   virtual const Type *bottom_type() const { return TypeInt::INT; }
   248   virtual uint ideal_reg() const { return Op_RegI; }
   248   virtual uint ideal_reg() const { return Op_RegI; }
   249   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   249   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
   250 };
   250 };
   251 
   251 
       
   252 //------------------------------MaxFNode---------------------------------------
       
   253 // Maximum of 2 floats.
       
   254 class MaxFNode : public MaxNode {
       
   255 public:
       
   256   MaxFNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
       
   257   virtual int Opcode() const;
       
   258   virtual const Type *add_ring(const Type*, const Type*) const { return Type::FLOAT; }
       
   259   virtual const Type *add_id() const { return TypeF::NEG_INF; }
       
   260   virtual const Type *bottom_type() const { return Type::FLOAT; }
       
   261   virtual uint ideal_reg() const { return Op_RegF; }
       
   262 };
       
   263 
       
   264 //------------------------------MinFNode---------------------------------------
       
   265 // Minimum of 2 floats.
       
   266 class MinFNode : public MaxNode {
       
   267 public:
       
   268   MinFNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
       
   269   virtual int Opcode() const;
       
   270   virtual const Type *add_ring(const Type*, const Type*) const { return Type::FLOAT; }
       
   271   virtual const Type *add_id() const { return TypeF::POS_INF; }
       
   272   virtual const Type *bottom_type() const { return Type::FLOAT; }
       
   273   virtual uint ideal_reg() const { return Op_RegF; }
       
   274 };
       
   275 
       
   276 //------------------------------MaxDNode---------------------------------------
       
   277 // Maximum of 2 doubles.
       
   278 class MaxDNode : public MaxNode {
       
   279 public:
       
   280   MaxDNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
       
   281   virtual int Opcode() const;
       
   282   virtual const Type *add_ring(const Type*, const Type*) const { return Type::DOUBLE; }
       
   283   virtual const Type *add_id() const { return TypeD::NEG_INF; }
       
   284   virtual const Type *bottom_type() const { return Type::DOUBLE; }
       
   285   virtual uint ideal_reg() const { return Op_RegD; }
       
   286 };
       
   287 
       
   288 //------------------------------MinDNode---------------------------------------
       
   289 // Minimum of 2 doubles.
       
   290 class MinDNode : public MaxNode {
       
   291 public:
       
   292   MinDNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
       
   293   virtual int Opcode() const;
       
   294   virtual const Type *add_ring(const Type*, const Type*) const { return Type::DOUBLE; }
       
   295   virtual const Type *add_id() const { return TypeD::POS_INF; }
       
   296   virtual const Type *bottom_type() const { return Type::DOUBLE; }
       
   297   virtual uint ideal_reg() const { return Op_RegD; }
       
   298 };
       
   299 
   252 #endif // SHARE_VM_OPTO_ADDNODE_HPP
   300 #endif // SHARE_VM_OPTO_ADDNODE_HPP