[Analysis][Transforms] Use commutable matchers instead of m_CombineOr in a few places. NFC

llvm-svn: 306204
This commit is contained in:
Craig Topper 2017-06-24 06:24:01 +00:00
parent c948178af8
commit 72ee6945af
3 changed files with 4 additions and 8 deletions

View File

@ -2688,16 +2688,14 @@ static Value *simplifyICmpWithBinOp(CmpInst::Predicate Pred, Value *LHS,
}
// icmp pred (and X, Y), X
if (LBO && match(LBO, m_CombineOr(m_And(m_Value(), m_Specific(RHS)),
m_And(m_Specific(RHS), m_Value())))) {
if (LBO && match(LBO, m_c_And(m_Value(), m_Specific(RHS)))) {
if (Pred == ICmpInst::ICMP_UGT)
return getFalse(ITy);
if (Pred == ICmpInst::ICMP_ULE)
return getTrue(ITy);
}
// icmp pred X, (and X, Y)
if (RBO && match(RBO, m_CombineOr(m_And(m_Value(), m_Specific(LHS)),
m_And(m_Specific(LHS), m_Value())))) {
if (RBO && match(RBO, m_c_And(m_Value(), m_Specific(LHS)))) {
if (Pred == ICmpInst::ICMP_UGE)
return getTrue(ITy);
if (Pred == ICmpInst::ICMP_ULT)

View File

@ -3198,8 +3198,7 @@ Instruction *InstCombiner::foldICmpBinOp(ICmpInst &I) {
if (BO0) {
// Transform A & (L - 1) `ult` L --> L != 0
auto LSubOne = m_Add(m_Specific(Op1), m_AllOnes());
auto BitwiseAnd =
m_CombineOr(m_And(m_Value(), LSubOne), m_And(LSubOne, m_Value()));
auto BitwiseAnd = m_c_And(m_Value(), LSubOne);
if (match(BO0, BitwiseAnd) && Pred == ICmpInst::ICMP_ULT) {
auto *Zero = Constant::getNullValue(BO0->getType());

View File

@ -88,8 +88,7 @@ RecurrenceDescriptor::lookThroughAnd(PHINode *Phi, Type *&RT,
// Matches either I & 2^x-1 or 2^x-1 & I. If we find a match, we update RT
// with a new integer type of the corresponding bit width.
if (match(J, m_CombineOr(m_And(m_Instruction(I), m_APInt(M)),
m_And(m_APInt(M), m_Instruction(I))))) {
if (match(J, m_c_And(m_Instruction(I), m_APInt(M)))) {
int32_t Bits = (*M + 1).exactLogBase2();
if (Bits > 0) {
RT = IntegerType::get(Phi->getContext(), Bits);