< prev index next >

src/hotspot/share/opto/movenode.hpp

Print this page




  88   public:
  89   CMovePNode( Node *c, Node *bol, Node *left, Node *right, const TypePtr* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); }
  90   virtual int Opcode() const;
  91 };
  92 
  93 //------------------------------CMoveNNode-------------------------------------
  94 class CMoveNNode : public CMoveNode {
  95   public:
  96   CMoveNNode( Node *c, Node *bol, Node *left, Node *right, const Type* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); }
  97   virtual int Opcode() const;
  98 };
  99 
 100 //
 101 class MoveI2FNode : public Node {
 102   public:
 103   MoveI2FNode( Node *value ) : Node(0,value) {}
 104   virtual int Opcode() const;
 105   virtual const Type *bottom_type() const { return Type::FLOAT; }
 106   virtual uint ideal_reg() const { return Op_RegF; }
 107   virtual const Type* Value(PhaseGVN* phase) const;

 108 };
 109 
 110 class MoveL2DNode : public Node {
 111   public:
 112   MoveL2DNode( Node *value ) : Node(0,value) {}
 113   virtual int Opcode() const;
 114   virtual const Type *bottom_type() const { return Type::DOUBLE; }
 115   virtual uint ideal_reg() const { return Op_RegD; }
 116   virtual const Type* Value(PhaseGVN* phase) const;

 117 };
 118 
 119 class MoveF2INode : public Node {
 120   public:
 121   MoveF2INode( Node *value ) : Node(0,value) {}
 122   virtual int Opcode() const;
 123   virtual const Type *bottom_type() const { return TypeInt::INT; }
 124   virtual uint ideal_reg() const { return Op_RegI; }
 125   virtual const Type* Value(PhaseGVN* phase) const;

 126 };
 127 
 128 class MoveD2LNode : public Node {
 129   public:
 130   MoveD2LNode( Node *value ) : Node(0,value) {}
 131   virtual int Opcode() const;
 132   virtual const Type *bottom_type() const { return TypeLong::LONG; }
 133   virtual uint ideal_reg() const { return Op_RegL; }
 134   virtual const Type* Value(PhaseGVN* phase) const;

 135 };
 136 
 137 //------------------------------BinaryNode-------------------------------------
 138 // Place holder for the 2 conditional inputs to a CMove.  CMove needs 4
 139 // inputs: the Bool (for the lt/gt/eq/ne bits), the flags (result of some
 140 // compare), and the 2 values to select between.  The Matcher requires a
 141 // binary tree so we break it down like this:
 142 //     (CMove (Binary bol cmp) (Binary src1 src2))
 143 class BinaryNode : public Node {
 144   public:
 145   BinaryNode( Node *n1, Node *n2 ) : Node(0,n1,n2) { }
 146   virtual int Opcode() const;
 147   virtual uint ideal_reg() const { return 0; }
 148 
 149 #ifndef PRODUCT
 150   virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const;
 151 #endif
 152 };
 153 
 154 


  88   public:
  89   CMovePNode( Node *c, Node *bol, Node *left, Node *right, const TypePtr* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); }
  90   virtual int Opcode() const;
  91 };
  92 
  93 //------------------------------CMoveNNode-------------------------------------
  94 class CMoveNNode : public CMoveNode {
  95   public:
  96   CMoveNNode( Node *c, Node *bol, Node *left, Node *right, const Type* t ) : CMoveNode(bol,left,right,t) { init_req(Control,c); }
  97   virtual int Opcode() const;
  98 };
  99 
 100 //
 101 class MoveI2FNode : public Node {
 102   public:
 103   MoveI2FNode( Node *value ) : Node(0,value) {}
 104   virtual int Opcode() const;
 105   virtual const Type *bottom_type() const { return Type::FLOAT; }
 106   virtual uint ideal_reg() const { return Op_RegF; }
 107   virtual const Type* Value(PhaseGVN* phase) const;
 108   virtual Node* Identity(PhaseGVN* phase);
 109 };
 110 
 111 class MoveL2DNode : public Node {
 112   public:
 113   MoveL2DNode( Node *value ) : Node(0,value) {}
 114   virtual int Opcode() const;
 115   virtual const Type *bottom_type() const { return Type::DOUBLE; }
 116   virtual uint ideal_reg() const { return Op_RegD; }
 117   virtual const Type* Value(PhaseGVN* phase) const;
 118   virtual Node* Identity(PhaseGVN* phase);
 119 };
 120 
 121 class MoveF2INode : public Node {
 122   public:
 123   MoveF2INode( Node *value ) : Node(0,value) {}
 124   virtual int Opcode() const;
 125   virtual const Type *bottom_type() const { return TypeInt::INT; }
 126   virtual uint ideal_reg() const { return Op_RegI; }
 127   virtual const Type* Value(PhaseGVN* phase) const;
 128   virtual Node* Identity(PhaseGVN* phase);
 129 };
 130 
 131 class MoveD2LNode : public Node {
 132   public:
 133   MoveD2LNode( Node *value ) : Node(0,value) {}
 134   virtual int Opcode() const;
 135   virtual const Type *bottom_type() const { return TypeLong::LONG; }
 136   virtual uint ideal_reg() const { return Op_RegL; }
 137   virtual const Type* Value(PhaseGVN* phase) const;
 138   virtual Node* Identity(PhaseGVN* phase);
 139 };
 140 
 141 //------------------------------BinaryNode-------------------------------------
 142 // Place holder for the 2 conditional inputs to a CMove.  CMove needs 4
 143 // inputs: the Bool (for the lt/gt/eq/ne bits), the flags (result of some
 144 // compare), and the 2 values to select between.  The Matcher requires a
 145 // binary tree so we break it down like this:
 146 //     (CMove (Binary bol cmp) (Binary src1 src2))
 147 class BinaryNode : public Node {
 148   public:
 149   BinaryNode( Node *n1, Node *n2 ) : Node(0,n1,n2) { }
 150   virtual int Opcode() const;
 151   virtual uint ideal_reg() const { return 0; }
 152 
 153 #ifndef PRODUCT
 154   virtual void related(GrowableArray<Node*> *in_rel, GrowableArray<Node*> *out_rel, bool compact) const;
 155 #endif
 156 };
 157 
 158 
< prev index next >