< prev index next >

src/hotspot/share/opto/divnode.hpp

Print this page

238 };
239 
240 //------------------------------DivModNode---------------------------------------
241 // Division with remainder result.
242 class DivModNode : public BinaryMultiNode {
243 protected:
244   DivModNode(Node* ctrl, Node* dividend, Node* divisor) : BinaryMultiNode(ctrl, dividend, divisor) {}
245 public:
246   virtual int Opcode() const;
247 
248   static DivModNode* make(Node* div_or_mod, BasicType bt, bool is_unsigned);
249 };
250 
251 //------------------------------DivModINode---------------------------------------
252 // Integer division with remainder result.
253 class DivModINode : public DivModNode {
254 public:
255   DivModINode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
256   virtual int Opcode() const;
257   virtual const Type *bottom_type() const { return TypeTuple::INT_PAIR; }
258   virtual Node *match( const ProjNode *proj, const Matcher *m );
259 
260   // Make a divmod and associated projections from a div or mod.
261   static DivModINode* make(Node* div_or_mod);
262 };
263 
264 //------------------------------DivModLNode---------------------------------------
265 // Long division with remainder result.
266 class DivModLNode : public DivModNode {
267 public:
268   DivModLNode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
269   virtual int Opcode() const;
270   virtual const Type *bottom_type() const { return TypeTuple::LONG_PAIR; }
271   virtual Node *match( const ProjNode *proj, const Matcher *m );
272 
273   // Make a divmod and associated projections from a div or mod.
274   static DivModLNode* make(Node* div_or_mod);
275 };
276 
277 
278 //------------------------------UDivModINode---------------------------------------
279 // Unsigend integer division with remainder result.
280 class UDivModINode : public DivModNode {
281 public:
282   UDivModINode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
283   virtual int Opcode() const;
284   virtual const Type *bottom_type() const { return TypeTuple::INT_PAIR; }
285   virtual Node *match( const ProjNode *proj, const Matcher *m );
286 
287   // Make a divmod and associated projections from a div or mod.
288   static UDivModINode* make(Node* div_or_mod);
289 };
290 
291 //------------------------------UDivModLNode---------------------------------------
292 // Unsigned long division with remainder result.
293 class UDivModLNode : public DivModNode {
294 public:
295   UDivModLNode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
296   virtual int Opcode() const;
297   virtual const Type *bottom_type() const { return TypeTuple::LONG_PAIR; }
298   virtual Node *match( const ProjNode *proj, const Matcher *m );
299 
300   // Make a divmod and associated projections from a div or mod.
301   static UDivModLNode* make(Node* div_or_mod);
302 };
303 
304 #endif // SHARE_OPTO_DIVNODE_HPP

238 };
239 
240 //------------------------------DivModNode---------------------------------------
241 // Division with remainder result.
242 class DivModNode : public BinaryMultiNode {
243 protected:
244   DivModNode(Node* ctrl, Node* dividend, Node* divisor) : BinaryMultiNode(ctrl, dividend, divisor) {}
245 public:
246   virtual int Opcode() const;
247 
248   static DivModNode* make(Node* div_or_mod, BasicType bt, bool is_unsigned);
249 };
250 
251 //------------------------------DivModINode---------------------------------------
252 // Integer division with remainder result.
253 class DivModINode : public DivModNode {
254 public:
255   DivModINode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
256   virtual int Opcode() const;
257   virtual const Type *bottom_type() const { return TypeTuple::INT_PAIR; }
258   virtual Node *match(const ProjNode *proj, const Matcher *m, const RegMask* mask);
259 
260   // Make a divmod and associated projections from a div or mod.
261   static DivModINode* make(Node* div_or_mod);
262 };
263 
264 //------------------------------DivModLNode---------------------------------------
265 // Long division with remainder result.
266 class DivModLNode : public DivModNode {
267 public:
268   DivModLNode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
269   virtual int Opcode() const;
270   virtual const Type *bottom_type() const { return TypeTuple::LONG_PAIR; }
271   virtual Node *match(const ProjNode *proj, const Matcher *m, const RegMask* mask);
272 
273   // Make a divmod and associated projections from a div or mod.
274   static DivModLNode* make(Node* div_or_mod);
275 };
276 
277 
278 //------------------------------UDivModINode---------------------------------------
279 // Unsigend integer division with remainder result.
280 class UDivModINode : public DivModNode {
281 public:
282   UDivModINode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
283   virtual int Opcode() const;
284   virtual const Type *bottom_type() const { return TypeTuple::INT_PAIR; }
285   virtual Node* match(const ProjNode* proj, const Matcher* m, const RegMask* mask);
286 
287   // Make a divmod and associated projections from a div or mod.
288   static UDivModINode* make(Node* div_or_mod);
289 };
290 
291 //------------------------------UDivModLNode---------------------------------------
292 // Unsigned long division with remainder result.
293 class UDivModLNode : public DivModNode {
294 public:
295   UDivModLNode(Node* ctrl, Node* dividend, Node* divisor) : DivModNode(ctrl, dividend, divisor) {}
296   virtual int Opcode() const;
297   virtual const Type *bottom_type() const { return TypeTuple::LONG_PAIR; }
298   virtual Node* match(const ProjNode* proj, const Matcher* m, const RegMask* mask);
299 
300   // Make a divmod and associated projections from a div or mod.
301   static UDivModLNode* make(Node* div_or_mod);
302 };
303 
304 #endif // SHARE_OPTO_DIVNODE_HPP
< prev index next >