< prev index next >

src/hotspot/share/opto/addnode.hpp

Print this page




 262   virtual const Type *add_ring( const Type *, const Type * ) const;
 263   virtual const Type *add_id() const { return TypeInt::make(min_jint); }
 264   virtual const Type *bottom_type() const { return TypeInt::INT; }
 265   virtual uint ideal_reg() const { return Op_RegI; }
 266 };
 267 
 268 //------------------------------MinINode---------------------------------------
 269 // MINimum of 2 integers.  Included with the ADD nodes because it inherits
 270 // all the behavior of addition on a ring.
 271 class MinINode : public MaxNode {
 272 public:
 273   MinINode( Node *in1, Node *in2 ) : MaxNode(in1,in2) {}
 274   virtual int Opcode() const;
 275   virtual const Type *add_ring( const Type *, const Type * ) const;
 276   virtual const Type *add_id() const { return TypeInt::make(max_jint); }
 277   virtual const Type *bottom_type() const { return TypeInt::INT; }
 278   virtual uint ideal_reg() const { return Op_RegI; }
 279   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 280 };
 281 
























 282 //------------------------------MaxFNode---------------------------------------
 283 // Maximum of 2 floats.
 284 class MaxFNode : public MaxNode {
 285 public:
 286   MaxFNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
 287   virtual int Opcode() const;
 288   virtual const Type *add_ring(const Type*, const Type*) const;
 289   virtual const Type *add_id() const { return TypeF::NEG_INF; }
 290   virtual const Type *bottom_type() const { return Type::FLOAT; }
 291   virtual uint ideal_reg() const { return Op_RegF; }
 292 };
 293 
 294 //------------------------------MinFNode---------------------------------------
 295 // Minimum of 2 floats.
 296 class MinFNode : public MaxNode {
 297 public:
 298   MinFNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
 299   virtual int Opcode() const;
 300   virtual const Type *add_ring(const Type*, const Type*) const;
 301   virtual const Type *add_id() const { return TypeF::POS_INF; }




 262   virtual const Type *add_ring( const Type *, const Type * ) const;
 263   virtual const Type *add_id() const { return TypeInt::make(min_jint); }
 264   virtual const Type *bottom_type() const { return TypeInt::INT; }
 265   virtual uint ideal_reg() const { return Op_RegI; }
 266 };
 267 
 268 //------------------------------MinINode---------------------------------------
 269 // MINimum of 2 integers.  Included with the ADD nodes because it inherits
 270 // all the behavior of addition on a ring.
 271 class MinINode : public MaxNode {
 272 public:
 273   MinINode( Node *in1, Node *in2 ) : MaxNode(in1,in2) {}
 274   virtual int Opcode() const;
 275   virtual const Type *add_ring( const Type *, const Type * ) const;
 276   virtual const Type *add_id() const { return TypeInt::make(max_jint); }
 277   virtual const Type *bottom_type() const { return TypeInt::INT; }
 278   virtual uint ideal_reg() const { return Op_RegI; }
 279   virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
 280 };
 281 
 282 //------------------------------MaxLNode---------------------------------------
 283 // MAXimum of 2 longs.
 284 class MaxLNode : public MaxNode {
 285 public:
 286   MaxLNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
 287   virtual int Opcode() const;
 288   virtual const Type *add_ring(const Type*, const Type*) const { return TypeLong::LONG; }
 289   virtual const Type *add_id() const { return TypeLong::make(min_jlong); }
 290   virtual const Type *bottom_type() const { return TypeLong::LONG; }
 291   virtual uint ideal_reg() const { return Op_RegL; }
 292 };
 293 
 294 //------------------------------MinLNode---------------------------------------
 295 // MINimum of 2 longs.
 296 class MinLNode : public MaxNode {
 297 public:
 298   MinLNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
 299   virtual int Opcode() const;
 300   virtual const Type *add_ring(const Type*, const Type*) const { return TypeLong::LONG; }
 301   virtual const Type *add_id() const { return TypeLong::make(max_jlong); }
 302   virtual const Type *bottom_type() const { return TypeLong::LONG; }
 303   virtual uint ideal_reg() const { return Op_RegL; }
 304 };
 305 
 306 //------------------------------MaxFNode---------------------------------------
 307 // Maximum of 2 floats.
 308 class MaxFNode : public MaxNode {
 309 public:
 310   MaxFNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
 311   virtual int Opcode() const;
 312   virtual const Type *add_ring(const Type*, const Type*) const;
 313   virtual const Type *add_id() const { return TypeF::NEG_INF; }
 314   virtual const Type *bottom_type() const { return Type::FLOAT; }
 315   virtual uint ideal_reg() const { return Op_RegF; }
 316 };
 317 
 318 //------------------------------MinFNode---------------------------------------
 319 // Minimum of 2 floats.
 320 class MinFNode : public MaxNode {
 321 public:
 322   MinFNode(Node *in1, Node *in2) : MaxNode(in1, in2) {}
 323   virtual int Opcode() const;
 324   virtual const Type *add_ring(const Type*, const Type*) const;
 325   virtual const Type *add_id() const { return TypeF::POS_INF; }


< prev index next >