mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 14:10:41 +00:00
Use CmpInst::Predicate instead of 'unsigned short' in some places. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255623 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d99f1b2161
commit
240b0e16f6
@ -874,20 +874,6 @@ public:
|
||||
/// This class is the base class for the comparison instructions.
|
||||
/// @brief Abstract base class of comparison instructions.
|
||||
class CmpInst : public Instruction {
|
||||
void *operator new(size_t, unsigned) = delete;
|
||||
CmpInst() = delete;
|
||||
|
||||
protected:
|
||||
CmpInst(Type *ty, Instruction::OtherOps op, unsigned short pred,
|
||||
Value *LHS, Value *RHS, const Twine &Name = "",
|
||||
Instruction *InsertBefore = nullptr);
|
||||
|
||||
CmpInst(Type *ty, Instruction::OtherOps op, unsigned short pred,
|
||||
Value *LHS, Value *RHS, const Twine &Name,
|
||||
BasicBlock *InsertAtEnd);
|
||||
|
||||
void anchor() override; // Out of line virtual method.
|
||||
|
||||
public:
|
||||
/// This enumeration lists the possible predicates for CmpInst subclasses.
|
||||
/// Values in the range 0-31 are reserved for FCmpInst, while values in the
|
||||
@ -929,6 +915,22 @@ public:
|
||||
BAD_ICMP_PREDICATE = ICMP_SLE + 1
|
||||
};
|
||||
|
||||
private:
|
||||
void *operator new(size_t, unsigned) = delete;
|
||||
CmpInst() = delete;
|
||||
|
||||
protected:
|
||||
CmpInst(Type *ty, Instruction::OtherOps op, Predicate pred,
|
||||
Value *LHS, Value *RHS, const Twine &Name = "",
|
||||
Instruction *InsertBefore = nullptr);
|
||||
|
||||
CmpInst(Type *ty, Instruction::OtherOps op, Predicate pred,
|
||||
Value *LHS, Value *RHS, const Twine &Name,
|
||||
BasicBlock *InsertAtEnd);
|
||||
|
||||
void anchor() override; // Out of line virtual method.
|
||||
|
||||
public:
|
||||
// allocate space for exactly two operands
|
||||
void *operator new(size_t s) {
|
||||
return User::operator new(s, 2);
|
||||
@ -939,7 +941,7 @@ public:
|
||||
/// The specified Instruction is allowed to be a dereferenced end iterator.
|
||||
/// @brief Create a CmpInst
|
||||
static CmpInst *Create(OtherOps Op,
|
||||
unsigned short predicate, Value *S1,
|
||||
Predicate predicate, Value *S1,
|
||||
Value *S2, const Twine &Name = "",
|
||||
Instruction *InsertBefore = nullptr);
|
||||
|
||||
@ -947,7 +949,7 @@ public:
|
||||
/// two operands. Also automatically insert this instruction to the end of
|
||||
/// the BasicBlock specified.
|
||||
/// @brief Create a CmpInst
|
||||
static CmpInst *Create(OtherOps Op, unsigned short predicate, Value *S1,
|
||||
static CmpInst *Create(OtherOps Op, Predicate predicate, Value *S1,
|
||||
Value *S2, const Twine &Name, BasicBlock *InsertAtEnd);
|
||||
|
||||
/// @brief Get the opcode casted to the right type
|
||||
@ -1058,23 +1060,23 @@ public:
|
||||
|
||||
/// @returns true if the predicate is unsigned, false otherwise.
|
||||
/// @brief Determine if the predicate is an unsigned operation.
|
||||
static bool isUnsigned(unsigned short predicate);
|
||||
static bool isUnsigned(Predicate predicate);
|
||||
|
||||
/// @returns true if the predicate is signed, false otherwise.
|
||||
/// @brief Determine if the predicate is an signed operation.
|
||||
static bool isSigned(unsigned short predicate);
|
||||
static bool isSigned(Predicate predicate);
|
||||
|
||||
/// @brief Determine if the predicate is an ordered operation.
|
||||
static bool isOrdered(unsigned short predicate);
|
||||
static bool isOrdered(Predicate predicate);
|
||||
|
||||
/// @brief Determine if the predicate is an unordered operation.
|
||||
static bool isUnordered(unsigned short predicate);
|
||||
static bool isUnordered(Predicate predicate);
|
||||
|
||||
/// Determine if the predicate is true when comparing a value with itself.
|
||||
static bool isTrueWhenEqual(unsigned short predicate);
|
||||
static bool isTrueWhenEqual(Predicate predicate);
|
||||
|
||||
/// Determine if the predicate is false when comparing a value with itself.
|
||||
static bool isFalseWhenEqual(unsigned short predicate);
|
||||
static bool isFalseWhenEqual(Predicate predicate);
|
||||
|
||||
/// @brief Methods for support type inquiry through isa, cast, and dyn_cast:
|
||||
static inline bool classof(const Instruction *I) {
|
||||
|
@ -1685,7 +1685,7 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred,
|
||||
// Otherwise, for integer compare, pick the same value as the non-undef
|
||||
// operand, and fold it to true or false.
|
||||
if (isIntegerPredicate)
|
||||
return ConstantInt::get(ResultTy, CmpInst::isTrueWhenEqual(pred));
|
||||
return ConstantInt::get(ResultTy, CmpInst::isTrueWhenEqual(Predicate));
|
||||
|
||||
// Choosing NaN for the undef will always make unordered comparison succeed
|
||||
// and ordered comparison fails.
|
||||
@ -1869,7 +1869,8 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred,
|
||||
} else {
|
||||
// Evaluate the relation between the two constants, per the predicate.
|
||||
int Result = -1; // -1 = unknown, 0 = known false, 1 = known true.
|
||||
switch (evaluateICmpRelation(C1, C2, CmpInst::isSigned(pred))) {
|
||||
switch (evaluateICmpRelation(C1, C2,
|
||||
CmpInst::isSigned((CmpInst::Predicate)pred))) {
|
||||
default: llvm_unreachable("Unknown relational!");
|
||||
case ICmpInst::BAD_ICMP_PREDICATE:
|
||||
break; // Couldn't determine anything about these constants.
|
||||
@ -1950,8 +1951,10 @@ Constant *llvm::ConstantFoldCompareInstruction(unsigned short pred,
|
||||
|
||||
// If the left hand side is an extension, try eliminating it.
|
||||
if (ConstantExpr *CE1 = dyn_cast<ConstantExpr>(C1)) {
|
||||
if ((CE1->getOpcode() == Instruction::SExt && ICmpInst::isSigned(pred)) ||
|
||||
(CE1->getOpcode() == Instruction::ZExt && !ICmpInst::isSigned(pred))){
|
||||
if ((CE1->getOpcode() == Instruction::SExt &&
|
||||
ICmpInst::isSigned((ICmpInst::Predicate)pred)) ||
|
||||
(CE1->getOpcode() == Instruction::ZExt &&
|
||||
!ICmpInst::isSigned((ICmpInst::Predicate)pred))){
|
||||
Constant *CE1Op0 = CE1->getOperand(0);
|
||||
Constant *CE1Inverse = ConstantExpr::getTrunc(CE1, CE1Op0->getType());
|
||||
if (CE1Inverse == CE1Op0) {
|
||||
|
@ -3021,7 +3021,7 @@ Instruction *ConstantExpr::getAsInstruction() {
|
||||
case Instruction::ICmp:
|
||||
case Instruction::FCmp:
|
||||
return CmpInst::Create((Instruction::OtherOps)getOpcode(),
|
||||
getPredicate(), Ops[0], Ops[1]);
|
||||
(CmpInst::Predicate)getPredicate(), Ops[0], Ops[1]);
|
||||
|
||||
default:
|
||||
assert(getNumOperands() == 2 && "Must be binary operator?");
|
||||
|
@ -3282,9 +3282,8 @@ AddrSpaceCastInst::AddrSpaceCastInst(
|
||||
|
||||
void CmpInst::anchor() {}
|
||||
|
||||
CmpInst::CmpInst(Type *ty, OtherOps op, unsigned short predicate,
|
||||
Value *LHS, Value *RHS, const Twine &Name,
|
||||
Instruction *InsertBefore)
|
||||
CmpInst::CmpInst(Type *ty, OtherOps op, Predicate predicate, Value *LHS,
|
||||
Value *RHS, const Twine &Name, Instruction *InsertBefore)
|
||||
: Instruction(ty, op,
|
||||
OperandTraits<CmpInst>::op_begin(this),
|
||||
OperandTraits<CmpInst>::operands(this),
|
||||
@ -3295,9 +3294,8 @@ CmpInst::CmpInst(Type *ty, OtherOps op, unsigned short predicate,
|
||||
setName(Name);
|
||||
}
|
||||
|
||||
CmpInst::CmpInst(Type *ty, OtherOps op, unsigned short predicate,
|
||||
Value *LHS, Value *RHS, const Twine &Name,
|
||||
BasicBlock *InsertAtEnd)
|
||||
CmpInst::CmpInst(Type *ty, OtherOps op, Predicate predicate, Value *LHS,
|
||||
Value *RHS, const Twine &Name, BasicBlock *InsertAtEnd)
|
||||
: Instruction(ty, op,
|
||||
OperandTraits<CmpInst>::op_begin(this),
|
||||
OperandTraits<CmpInst>::operands(this),
|
||||
@ -3309,8 +3307,7 @@ CmpInst::CmpInst(Type *ty, OtherOps op, unsigned short predicate,
|
||||
}
|
||||
|
||||
CmpInst *
|
||||
CmpInst::Create(OtherOps Op, unsigned short predicate,
|
||||
Value *S1, Value *S2,
|
||||
CmpInst::Create(OtherOps Op, Predicate predicate, Value *S1, Value *S2,
|
||||
const Twine &Name, Instruction *InsertBefore) {
|
||||
if (Op == Instruction::ICmp) {
|
||||
if (InsertBefore)
|
||||
@ -3330,7 +3327,7 @@ CmpInst::Create(OtherOps Op, unsigned short predicate,
|
||||
}
|
||||
|
||||
CmpInst *
|
||||
CmpInst::Create(OtherOps Op, unsigned short predicate, Value *S1, Value *S2,
|
||||
CmpInst::Create(OtherOps Op, Predicate predicate, Value *S1, Value *S2,
|
||||
const Twine &Name, BasicBlock *InsertAtEnd) {
|
||||
if (Op == Instruction::ICmp) {
|
||||
return new ICmpInst(*InsertAtEnd, CmpInst::Predicate(predicate),
|
||||
@ -3531,7 +3528,7 @@ CmpInst::Predicate CmpInst::getSignedPredicate(Predicate pred) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isUnsigned(unsigned short predicate) {
|
||||
bool CmpInst::isUnsigned(Predicate predicate) {
|
||||
switch (predicate) {
|
||||
default: return false;
|
||||
case ICmpInst::ICMP_ULT: case ICmpInst::ICMP_ULE: case ICmpInst::ICMP_UGT:
|
||||
@ -3539,7 +3536,7 @@ bool CmpInst::isUnsigned(unsigned short predicate) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isSigned(unsigned short predicate) {
|
||||
bool CmpInst::isSigned(Predicate predicate) {
|
||||
switch (predicate) {
|
||||
default: return false;
|
||||
case ICmpInst::ICMP_SLT: case ICmpInst::ICMP_SLE: case ICmpInst::ICMP_SGT:
|
||||
@ -3547,7 +3544,7 @@ bool CmpInst::isSigned(unsigned short predicate) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isOrdered(unsigned short predicate) {
|
||||
bool CmpInst::isOrdered(Predicate predicate) {
|
||||
switch (predicate) {
|
||||
default: return false;
|
||||
case FCmpInst::FCMP_OEQ: case FCmpInst::FCMP_ONE: case FCmpInst::FCMP_OGT:
|
||||
@ -3556,7 +3553,7 @@ bool CmpInst::isOrdered(unsigned short predicate) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isUnordered(unsigned short predicate) {
|
||||
bool CmpInst::isUnordered(Predicate predicate) {
|
||||
switch (predicate) {
|
||||
default: return false;
|
||||
case FCmpInst::FCMP_UEQ: case FCmpInst::FCMP_UNE: case FCmpInst::FCMP_UGT:
|
||||
@ -3565,7 +3562,7 @@ bool CmpInst::isUnordered(unsigned short predicate) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isTrueWhenEqual(unsigned short predicate) {
|
||||
bool CmpInst::isTrueWhenEqual(Predicate predicate) {
|
||||
switch(predicate) {
|
||||
default: return false;
|
||||
case ICMP_EQ: case ICMP_UGE: case ICMP_ULE: case ICMP_SGE: case ICMP_SLE:
|
||||
@ -3573,7 +3570,7 @@ bool CmpInst::isTrueWhenEqual(unsigned short predicate) {
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isFalseWhenEqual(unsigned short predicate) {
|
||||
bool CmpInst::isFalseWhenEqual(Predicate predicate) {
|
||||
switch(predicate) {
|
||||
case ICMP_NE: case ICMP_UGT: case ICMP_ULT: case ICMP_SGT: case ICMP_SLT:
|
||||
case FCMP_FALSE: case FCMP_ONE: case FCMP_OGT: case FCMP_OLT: return true;
|
||||
|
@ -612,7 +612,8 @@ struct CmpModifier: public Modifier {
|
||||
}
|
||||
|
||||
Value *V = CmpInst::Create(fp ? Instruction::FCmp : Instruction::ICmp,
|
||||
op, Val0, Val1, "Cmp", BB->getTerminator());
|
||||
(CmpInst::Predicate)op, Val0, Val1, "Cmp",
|
||||
BB->getTerminator());
|
||||
return PT->push_back(V);
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user