Add new SetCondInst::isRelational/isEquality methods. Rename

Instruction::isRelational to Instruction::isComparison.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30444 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-09-17 19:14:47 +00:00
parent e81f725b3a
commit a5b07404f7
5 changed files with 20 additions and 9 deletions

View File

@ -141,10 +141,10 @@ public:
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.

View File

@ -454,7 +454,18 @@ public:
///
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) {

View File

@ -1212,7 +1212,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode,
// 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),

View File

@ -1419,7 +1419,7 @@ Constant *ConstantExpr::getTy(const Type *ReqTy, unsigned Opcode,
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...
@ -1462,7 +1462,7 @@ Constant *ConstantExpr::get(unsigned Opcode, Constant *C1, Constant *C2) {
}
#endif
if (Instruction::isRelational(Opcode))
if (Instruction::isComparison(Opcode))
return getTy(Type::BoolTy, Opcode, C1, C2);
else
return getTy(C1->getType(), Opcode, C1, C2);

View File

@ -200,9 +200,9 @@ bool Instruction::isCommutative(unsigned op) {
}
}
/// 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: