reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
 3001     return BinaryOperator::CreateOr(Op0, Op1);
 3070     if (match(Op0, m_Add(m_Value(X), m_Constant(C))))
 3078     if (match(Op0, m_OneUse(m_Or(m_Not(m_Value(X)), m_Constant(C2))))) {
 3083     if (match(Op0, m_OneUse(m_And(m_Not(m_Value(X)), m_Constant(C2))))) {
 3093     cast<CmpInst>(Op0)->setPredicate(CmpInst::getInversePredicate(Pred));
 3094     return replaceInstUsesWith(I, Op0);
 3102       if (RHSC->isSignMask() && match(Op0, m_Sub(m_APInt(C), m_Value(X)))) {
 3107       if (RHSC->isSignMask() && match(Op0, m_Add(m_Value(X), m_APInt(C)))) {
 3114       if (match(Op0, m_Or(m_Value(X), m_APInt(C))) &&
 3117         Worklist.Add(cast<Instruction>(Op0));
 3126     if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
 3159   if (match(Op1, m_OneUse(m_c_Or(m_Value(X), m_Specific(Op0)))))
 3160     return BinaryOperator::CreateAnd(X, Builder.CreateNot(Op0));
 3163   if (match(Op0, m_OneUse(m_c_Or(m_Value(X), m_Specific(Op1)))))
 3168   if (match(Op1, m_OneUse(m_c_And(m_Value(X), m_Specific(Op0)))))
 3169     return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(X));
 3176       match(Op0, m_OneUse(m_c_And(m_Value(X), m_Specific(Op1)))))
 3193   if (match(Op0, m_And(m_Value(A), m_Value(B))) &&
 3197   if (match(Op0, m_Xor(m_Value(A), m_Value(B))) &&
 3203   if (match(Op0, m_c_And(m_Value(A), m_Not(m_Value(B)))) &&
 3220   if (Op0->hasNUses(2))
 3221     std::swap(Op0, Op1);
 3227       match(Op0, m_OneUse(m_c_Add(m_Specific(A), m_Specific(Op1))))) {
 3233     auto *Add = cast<BinaryOperator>(Op0);
 3251   if (match(Op1, m_AllOnes()) && Op0->hasOneUse()) {
 3253     SelectPatternFlavor SPF = matchSelectPattern(Op0, LHS, RHS).Flavor;