diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2007-09-06 02:40:25 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2007-09-06 02:40:25 +0000 |
commit | 0c5c47944a9fbfc9739918ac2cbd4d87aa5a2678 (patch) | |
tree | 9af04e60969641f9a495499805b08214353268c9 /llvm/lib | |
parent | b0b066eaaa4c77a8f50deca513d094f49922d2a8 (diff) | |
download | bcm5719-llvm-0c5c47944a9fbfc9739918ac2cbd4d87aa5a2678.tar.gz bcm5719-llvm-0c5c47944a9fbfc9739918ac2cbd4d87aa5a2678.zip |
Use isTrueWhenEqual. Thanks Chris!
llvm-svn: 41741
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 58eb3bc2750..4902fb710ad 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -1663,16 +1663,22 @@ Value *InstCombiner::SimplifyDemandedVectorElts(Value *V, uint64_t DemandedElts, return MadeChange ? I : 0; } -/// @returns true if the specified compare instruction is +/// @returns true if the specified compare predicate is /// true when both operands are equal... -/// @brief Determine if the ICmpInst returns true if both operands are equal -static bool isTrueWhenEqual(ICmpInst &ICI) { - ICmpInst::Predicate pred = ICI.getPredicate(); +/// @brief Determine if the icmp Predicate is true when both operands are equal +static bool isTrueWhenEqual(ICmpInst::Predicate pred) { return pred == ICmpInst::ICMP_EQ || pred == ICmpInst::ICMP_UGE || pred == ICmpInst::ICMP_SGE || pred == ICmpInst::ICMP_ULE || pred == ICmpInst::ICMP_SLE; } +/// @returns true if the specified compare instruction is +/// true when both operands are equal... +/// @brief Determine if the ICmpInst returns true when both operands are equal +static bool isTrueWhenEqual(ICmpInst &ICI) { + return isTrueWhenEqual(ICI.getPredicate()); +} + /// AssociativeOpt - Perform an optimization on an associative operator. This /// function is designed to check a chain of associative operators for a /// potential to apply a certain optimization. Since the optimization may be @@ -4562,10 +4568,9 @@ Instruction *InstCombiner::FoldGEPICmp(User *GEPLHS, Value *RHS, if (NumDifferences == 0) // SAME GEP? return ReplaceInstUsesWith(I, // No comparison is needed here. - ConstantInt::get(Type::Int1Ty, - Cond == ICmpInst::ICMP_EQ || - Cond == ICmpInst::ICMP_ULE || Cond == ICmpInst::ICMP_UGE || - Cond == ICmpInst::ICMP_SLE || Cond == ICmpInst::ICMP_SGE)); + ConstantInt::get(Type::Int1Ty, + isTrueWhenEqual(Cond))); + else if (NumDifferences == 1) { Value *LHSV = GEPLHS->getOperand(DiffOperand); Value *RHSV = GEPRHS->getOperand(DiffOperand); |