[llvm-commits] [llvm] r54030 - in /llvm/trunk: include/llvm/Constants.h lib/Analysis/ConstantFolding.cpp lib/VMCore/Constants.cpp
Nate Begeman
natebegeman at mac.com
Fri Jul 25 10:35:37 PDT 2008
Author: sampo
Date: Fri Jul 25 12:35:37 2008
New Revision: 54030
URL: http://llvm.org/viewvc/llvm-project?rev=54030&view=rev
Log:
Fix minor issues with VICmp/VFCmp constant expressions
Modified:
llvm/trunk/include/llvm/Constants.h
llvm/trunk/lib/Analysis/ConstantFolding.cpp
llvm/trunk/lib/VMCore/Constants.cpp
Modified: llvm/trunk/include/llvm/Constants.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Constants.h?rev=54030&r1=54029&r2=54030&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Constants.h (original)
+++ llvm/trunk/include/llvm/Constants.h Fri Jul 25 12:35:37 2008
@@ -565,7 +565,7 @@
static Constant *getTy(const Type *Ty, unsigned Opcode,
Constant *C1, Constant *C2);
static Constant *getCompareTy(unsigned short pred, Constant *C1,
- Constant *C2);
+ Constant *C2, bool isVecCmp = false);
static Constant *getSelectTy(const Type *Ty,
Constant *C1, Constant *C2, Constant *C3);
static Constant *getGetElementPtrTy(const Type *Ty, Constant *C,
@@ -677,7 +677,8 @@
///
static Constant *get(unsigned Opcode, Constant *C1, Constant *C2);
- /// @brief Return an ICmp or FCmp comparison operator constant expression.
+ /// @brief Return an ICmp, FCmp, VICmp, or VFCmp comparison operator constant
+ /// expression.
static Constant *getCompare(unsigned short pred, Constant *C1, Constant *C2);
/// ConstantExpr::get* - Return some common constants without having to
Modified: llvm/trunk/lib/Analysis/ConstantFolding.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ConstantFolding.cpp?rev=54030&r1=54029&r2=54030&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ConstantFolding.cpp (original)
+++ llvm/trunk/lib/Analysis/ConstantFolding.cpp Fri Jul 25 12:35:37 2008
@@ -358,6 +358,8 @@
return 0;
case Instruction::ICmp:
case Instruction::FCmp:
+ case Instruction::VICmp:
+ case Instruction::VFCmp:
assert(0 &&"This function is invalid for compares: no predicate specified");
case Instruction::PtrToInt:
// If the input is a inttoptr, eliminate the pair. This requires knowing
@@ -473,7 +475,7 @@
}
}
}
- return ConstantExpr::getCompare(Predicate, Ops[0], Ops[1]);
+ return ConstantExpr::getCompare(Predicate, Ops[0], Ops[1]);
}
Modified: llvm/trunk/lib/VMCore/Constants.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/Constants.cpp?rev=54030&r1=54029&r2=54030&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/Constants.cpp (original)
+++ llvm/trunk/lib/VMCore/Constants.cpp Fri Jul 25 12:35:37 2008
@@ -2003,21 +2003,24 @@
}
Constant *ConstantExpr::getCompareTy(unsigned short predicate,
- Constant *C1, Constant *C2) {
+ Constant *C1, Constant *C2,
+ bool isVecCmp) {
switch (predicate) {
default: assert(0 && "Invalid CmpInst predicate");
- case FCmpInst::FCMP_FALSE: case FCmpInst::FCMP_OEQ: case FCmpInst::FCMP_OGT:
- case FCmpInst::FCMP_OGE: case FCmpInst::FCMP_OLT: case FCmpInst::FCMP_OLE:
- case FCmpInst::FCMP_ONE: case FCmpInst::FCMP_ORD: case FCmpInst::FCMP_UNO:
- case FCmpInst::FCMP_UEQ: case FCmpInst::FCMP_UGT: case FCmpInst::FCMP_UGE:
- case FCmpInst::FCMP_ULT: case FCmpInst::FCMP_ULE: case FCmpInst::FCMP_UNE:
- case FCmpInst::FCMP_TRUE:
- return getFCmp(predicate, C1, C2);
- case ICmpInst::ICMP_EQ: case ICmpInst::ICMP_NE: case ICmpInst::ICMP_UGT:
- case ICmpInst::ICMP_UGE: case ICmpInst::ICMP_ULT: case ICmpInst::ICMP_ULE:
- case ICmpInst::ICMP_SGT: case ICmpInst::ICMP_SGE: case ICmpInst::ICMP_SLT:
- case ICmpInst::ICMP_SLE:
- return getICmp(predicate, C1, C2);
+ case CmpInst::FCMP_FALSE: case CmpInst::FCMP_OEQ: case CmpInst::FCMP_OGT:
+ case CmpInst::FCMP_OGE: case CmpInst::FCMP_OLT: case CmpInst::FCMP_OLE:
+ case CmpInst::FCMP_ONE: case CmpInst::FCMP_ORD: case CmpInst::FCMP_UNO:
+ case CmpInst::FCMP_UEQ: case CmpInst::FCMP_UGT: case CmpInst::FCMP_UGE:
+ case CmpInst::FCMP_ULT: case CmpInst::FCMP_ULE: case CmpInst::FCMP_UNE:
+ case CmpInst::FCMP_TRUE:
+ return isVecCmp ? getVFCmp(predicate, C1, C2)
+ : getFCmp(predicate, C1, C2);
+ case CmpInst::ICMP_EQ: case CmpInst::ICMP_NE: case CmpInst::ICMP_UGT:
+ case CmpInst::ICMP_UGE: case CmpInst::ICMP_ULT: case CmpInst::ICMP_ULE:
+ case CmpInst::ICMP_SGT: case CmpInst::ICMP_SGE: case CmpInst::ICMP_SLT:
+ case CmpInst::ICMP_SLE:
+ return isVecCmp ? getVICmp(predicate, C1, C2)
+ : getICmp(predicate, C1, C2);
}
}
More information about the llvm-commits
mailing list