173
174 //------------------------------CmpNNode--------------------------------------
175 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
176 class CmpNNode : public CmpNode {
177 public:
178 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
179 virtual int Opcode() const;
180 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
181 virtual const Type *sub( const Type *, const Type * ) const;
182 };
183
184 //------------------------------CmpLNode---------------------------------------
185 // Compare 2 long values, returning condition codes (-1, 0 or 1).
186 class CmpLNode : public CmpNode {
187 public:
188 CmpLNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
189 virtual int Opcode() const;
190 virtual const Type *sub( const Type *, const Type * ) const;
191 };
192
193 //------------------------------CmpL3Node--------------------------------------
194 // Compare 2 long values, returning integer value (-1, 0 or 1).
195 class CmpL3Node : public CmpLNode {
196 public:
197 CmpL3Node( Node *in1, Node *in2 ) : CmpLNode(in1,in2) {
198 // Since it is not consumed by Bools, it is not really a Cmp.
199 init_class_id(Class_Sub);
200 }
201 virtual int Opcode() const;
202 virtual uint ideal_reg() const { return Op_RegI; }
203 };
204
205 //------------------------------CmpFNode---------------------------------------
206 // Compare 2 float values, returning condition codes (-1, 0 or 1).
207 // This implements the Java bytecode fcmpl, so unordered returns -1.
208 // Operands may not commute.
209 class CmpFNode : public CmpNode {
210 public:
211 CmpFNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
212 virtual int Opcode() const;
|
173
174 //------------------------------CmpNNode--------------------------------------
175 // Compare 2 narrow oop values, returning condition codes (-1, 0 or 1).
176 class CmpNNode : public CmpNode {
177 public:
178 CmpNNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
179 virtual int Opcode() const;
180 virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
181 virtual const Type *sub( const Type *, const Type * ) const;
182 };
183
184 //------------------------------CmpLNode---------------------------------------
185 // Compare 2 long values, returning condition codes (-1, 0 or 1).
186 class CmpLNode : public CmpNode {
187 public:
188 CmpLNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
189 virtual int Opcode() const;
190 virtual const Type *sub( const Type *, const Type * ) const;
191 };
192
193 //------------------------------CmpULNode---------------------------------------
194 // Compare 2 unsigned long values, returning condition codes (-1, 0 or 1).
195 class CmpULNode : public CmpNode {
196 public:
197 CmpULNode(Node* in1, Node* in2) : CmpNode(in1, in2) { }
198 virtual int Opcode() const;
199 virtual const Type* sub(const Type*, const Type*) const;
200 };
201
202 //------------------------------CmpL3Node--------------------------------------
203 // Compare 2 long values, returning integer value (-1, 0 or 1).
204 class CmpL3Node : public CmpLNode {
205 public:
206 CmpL3Node( Node *in1, Node *in2 ) : CmpLNode(in1,in2) {
207 // Since it is not consumed by Bools, it is not really a Cmp.
208 init_class_id(Class_Sub);
209 }
210 virtual int Opcode() const;
211 virtual uint ideal_reg() const { return Op_RegI; }
212 };
213
214 //------------------------------CmpFNode---------------------------------------
215 // Compare 2 float values, returning condition codes (-1, 0 or 1).
216 // This implements the Java bytecode fcmpl, so unordered returns -1.
217 // Operands may not commute.
218 class CmpFNode : public CmpNode {
219 public:
220 CmpFNode( Node *in1, Node *in2 ) : CmpNode(in1,in2) {}
221 virtual int Opcode() const;
|