bool isCommutative() const { return isCommutative(getOpcode()); }
static bool isCommutative(unsigned op);
- /// isRelational - Return true if the instruction is a Set* instruction:
+ /// isComparison - Return true if the instruction is a Set* instruction:
///
- bool isRelational() const { return isRelational(getOpcode()); }
- static bool isRelational(unsigned op);
+ bool isComparison() const { return isComparison(getOpcode()); }
+ static bool isComparison(unsigned op);
/// isTrappingInstruction - Return true if the instruction may trap.
///
static BinaryOps getSwappedCondition(BinaryOps Opcode);
-
+ /// isEquality - Return true if this comparison is an ==/!= comparison.
+ ///
+ bool isEquality() const {
+ return getOpcode() == SetEQ || getOpcode() == SetNE;
+ }
+
+ /// isRelational - Return true if this comparison is a </>/<=/>= comparison.
+ ///
+ bool isRelational() const {
+ return !isEquality();
+ }
+
// Methods for support type inquiry through isa, cast, and dyn_cast:
static inline bool classof(const SetCondInst *) { return true; }
static inline bool classof(const Instruction *I) {
// If we successfully folded the expression, return it now.
if (C) return C;
- if (SetCondInst::isRelational(Opcode)) {
+ if (SetCondInst::isComparison(Opcode)) {
if (isa<UndefValue>(V1) || isa<UndefValue>(V2))
return UndefValue::get(Type::BoolTy);
switch (evaluateRelation(const_cast<Constant*>(V1),
assert(C1->getType() == C2->getType() &&
"Operand types in binary constant expression should match");
- if (ReqTy == C1->getType() || (Instruction::isRelational(Opcode) &&
+ if (ReqTy == C1->getType() || (Instruction::isComparison(Opcode) &&
ReqTy == Type::BoolTy))
if (Constant *FC = ConstantFoldBinaryInstruction(Opcode, C1, C2))
return FC; // Fold a few common cases...
}
#endif
- if (Instruction::isRelational(Opcode))
+ if (Instruction::isComparison(Opcode))
return getTy(Type::BoolTy, Opcode, C1, C2);
else
return getTy(C1->getType(), Opcode, C1, C2);
}
}
-/// isRelational - Return true if the instruction is a Set* instruction:
+/// isComparison - Return true if the instruction is a Set* instruction:
///
-bool Instruction::isRelational(unsigned op) {
+bool Instruction::isComparison(unsigned op) {
switch (op) {
case SetEQ:
case SetNE: