< prev index next >

src/hotspot/share/opto/subnode.hpp

Print this page




 333 
 334 //------------------------------AbsNode----------------------------------------
 335 // Abstract class for absolute value.  Mostly used to get a handy wrapper
 336 // for finding this pattern in the graph.
 337 class AbsNode : public Node {
 338 public:
 339   AbsNode( Node *value ) : Node(0,value) {}
 340 };
 341 
 342 //------------------------------AbsINode---------------------------------------
 343 // Absolute value an integer.  Since a naive graph involves control flow, we
 344 // "match" it in the ideal world (so the control flow can be removed).
 345 class AbsINode : public AbsNode {
 346 public:
 347   AbsINode( Node *in1 ) : AbsNode(in1) {}
 348   virtual int Opcode() const;
 349   const Type *bottom_type() const { return TypeInt::INT; }
 350   virtual uint ideal_reg() const { return Op_RegI; }
 351 };
 352 











 353 //------------------------------AbsFNode---------------------------------------
 354 // Absolute value a float, a common float-point idiom with a cheap hardware
 355 // implemention on most chips.  Since a naive graph involves control flow, we
 356 // "match" it in the ideal world (so the control flow can be removed).
 357 class AbsFNode : public AbsNode {
 358 public:
 359   AbsFNode( Node *in1 ) : AbsNode(in1) {}
 360   virtual int Opcode() const;
 361   const Type *bottom_type() const { return Type::FLOAT; }
 362   virtual uint ideal_reg() const { return Op_RegF; }
 363 };
 364 
 365 //------------------------------AbsDNode---------------------------------------
 366 // Absolute value a double, a common float-point idiom with a cheap hardware
 367 // implemention on most chips.  Since a naive graph involves control flow, we
 368 // "match" it in the ideal world (so the control flow can be removed).
 369 class AbsDNode : public AbsNode {
 370 public:
 371   AbsDNode( Node *in1 ) : AbsNode(in1) {}
 372   virtual int Opcode() const;




 333 
 334 //------------------------------AbsNode----------------------------------------
 335 // Abstract class for absolute value.  Mostly used to get a handy wrapper
 336 // for finding this pattern in the graph.
 337 class AbsNode : public Node {
 338 public:
 339   AbsNode( Node *value ) : Node(0,value) {}
 340 };
 341 
 342 //------------------------------AbsINode---------------------------------------
 343 // Absolute value an integer.  Since a naive graph involves control flow, we
 344 // "match" it in the ideal world (so the control flow can be removed).
 345 class AbsINode : public AbsNode {
 346 public:
 347   AbsINode( Node *in1 ) : AbsNode(in1) {}
 348   virtual int Opcode() const;
 349   const Type *bottom_type() const { return TypeInt::INT; }
 350   virtual uint ideal_reg() const { return Op_RegI; }
 351 };
 352 
 353 //------------------------------AbsLNode---------------------------------------
 354 // Absolute value a long.  Since a naive graph involves control flow, we
 355 // "match" it in the ideal world (so the control flow can be removed).
 356 class AbsLNode : public AbsNode {
 357 public:
 358   AbsLNode( Node *in1 ) : AbsNode(in1) {}
 359   virtual int Opcode() const;
 360   const Type *bottom_type() const { return TypeLong::LONG; }
 361   virtual uint ideal_reg() const { return Op_RegL; }
 362 };
 363 
 364 //------------------------------AbsFNode---------------------------------------
 365 // Absolute value a float, a common float-point idiom with a cheap hardware
 366 // implemention on most chips.  Since a naive graph involves control flow, we
 367 // "match" it in the ideal world (so the control flow can be removed).
 368 class AbsFNode : public AbsNode {
 369 public:
 370   AbsFNode( Node *in1 ) : AbsNode(in1) {}
 371   virtual int Opcode() const;
 372   const Type *bottom_type() const { return Type::FLOAT; }
 373   virtual uint ideal_reg() const { return Op_RegF; }
 374 };
 375 
 376 //------------------------------AbsDNode---------------------------------------
 377 // Absolute value a double, a common float-point idiom with a cheap hardware
 378 // implemention on most chips.  Since a naive graph involves control flow, we
 379 // "match" it in the ideal world (so the control flow can be removed).
 380 class AbsDNode : public AbsNode {
 381 public:
 382   AbsDNode( Node *in1 ) : AbsNode(in1) {}
 383   virtual int Opcode() const;


< prev index next >