< prev index next >

src/hotspot/share/opto/mulnode.hpp

Print this page

200 class UMulHiLNode : public Node {
201 public:
202   UMulHiLNode( Node *in1, Node *in2 ) : Node(nullptr,in1,in2) {}
203   virtual int Opcode() const;
204   virtual const Type* Value(PhaseGVN* phase) const;
205   const Type *bottom_type() const { return TypeLong::LONG; }
206   virtual uint ideal_reg() const { return Op_RegL; }
207   friend const Type* MulHiValue(const Type *t1, const Type *t2, const Type *bot);
208 };
209 
210 //------------------------------MulHiLoLNode-----------------------------------
211 // Lower and upper 64-bit results of a signed 64x64->128 multiply.
212 class MulHiLoLNode : public BinaryMultiNode {
213 protected:
214   MulHiLoLNode(Node* ctrl, Node* in1, Node* in2) : BinaryMultiNode(ctrl, in1, in2) {}
215 
216 public:
217   virtual int Opcode() const;
218   virtual const Type* bottom_type() const { return TypeTuple::LONG_PAIR; }
219 
220   virtual Node* match(const ProjNode* proj, const Matcher* m);
221 
222   static MulHiLoLNode* make(Node* mul_hi);
223 };
224 
225 //------------------------------UMulHiLoLNode----------------------------------
226 // Lower and upper 64-bit results of an unsigned 64x64->128 multiply.
227 class UMulHiLoLNode : public MulHiLoLNode {
228 public:
229   UMulHiLoLNode(Node* ctrl, Node* in1, Node* in2) : MulHiLoLNode(ctrl, in1, in2) {}
230   virtual int Opcode() const;
231 
232   static UMulHiLoLNode* make(Node* umul_hi);
233 };
234 
235 //------------------------------AndINode---------------------------------------
236 // Logically AND 2 integers.  Included with the MUL nodes because it inherits
237 // all the behavior of multiplication on a ring.
238 class AndINode : public MulINode {
239 public:
240   AndINode( Node *in1, Node *in2 ) : MulINode(in1,in2) {}

200 class UMulHiLNode : public Node {
201 public:
202   UMulHiLNode( Node *in1, Node *in2 ) : Node(nullptr,in1,in2) {}
203   virtual int Opcode() const;
204   virtual const Type* Value(PhaseGVN* phase) const;
205   const Type *bottom_type() const { return TypeLong::LONG; }
206   virtual uint ideal_reg() const { return Op_RegL; }
207   friend const Type* MulHiValue(const Type *t1, const Type *t2, const Type *bot);
208 };
209 
210 //------------------------------MulHiLoLNode-----------------------------------
211 // Lower and upper 64-bit results of a signed 64x64->128 multiply.
212 class MulHiLoLNode : public BinaryMultiNode {
213 protected:
214   MulHiLoLNode(Node* ctrl, Node* in1, Node* in2) : BinaryMultiNode(ctrl, in1, in2) {}
215 
216 public:
217   virtual int Opcode() const;
218   virtual const Type* bottom_type() const { return TypeTuple::LONG_PAIR; }
219 
220   virtual Node* match(const ProjNode* proj, const Matcher* m, const RegMask* mask);
221 
222   static MulHiLoLNode* make(Node* mul_hi);
223 };
224 
225 //------------------------------UMulHiLoLNode----------------------------------
226 // Lower and upper 64-bit results of an unsigned 64x64->128 multiply.
227 class UMulHiLoLNode : public MulHiLoLNode {
228 public:
229   UMulHiLoLNode(Node* ctrl, Node* in1, Node* in2) : MulHiLoLNode(ctrl, in1, in2) {}
230   virtual int Opcode() const;
231 
232   static UMulHiLoLNode* make(Node* umul_hi);
233 };
234 
235 //------------------------------AndINode---------------------------------------
236 // Logically AND 2 integers.  Included with the MUL nodes because it inherits
237 // all the behavior of multiplication on a ring.
238 class AndINode : public MulINode {
239 public:
240   AndINode( Node *in1, Node *in2 ) : MulINode(in1,in2) {}
< prev index next >