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

References

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
 3010   if (match(&I, m_Not(m_OneUse(m_c_And(m_Not(m_Value(X)), m_Value(Y)))))) {
 3012     return BinaryOperator::CreateOr(X, NotY);
 3016   if (match(&I, m_Not(m_OneUse(m_c_Or(m_Not(m_Value(X)), m_Value(Y)))))) {
 3018     return BinaryOperator::CreateAnd(X, NotY);
 3045     if (match(NotVal, m_Sub(m_Value(X), m_Value(Y))))
 3046       if (isa<Constant>(X) || NotVal->hasOneUse())
 3047         return BinaryOperator::CreateAdd(Builder.CreateNot(X), Y);
 3050     if (match(NotVal, m_AShr(m_Not(m_Value(X)), m_Value(Y))))
 3051       return BinaryOperator::CreateAShr(X, Y);
 3070     if (match(Op0, m_Add(m_Value(X), m_Constant(C))))
 3071       return BinaryOperator::CreateSub(ConstantExpr::getNeg(AddOne(C)), X);
 3078     if (match(Op0, m_OneUse(m_Or(m_Not(m_Value(X)), m_Constant(C2))))) {
 3080       Value *And = Builder.CreateAnd(X, ConstantExpr::getNot(C2));
 3083     if (match(Op0, m_OneUse(m_And(m_Not(m_Value(X)), m_Constant(C2))))) {
 3085       Value *Or = Builder.CreateOr(X, ConstantExpr::getNot(C2));
 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)))))
 3164     return BinaryOperator::CreateAnd(X, Builder.CreateNot(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)))))
 3177     return BinaryOperator::CreateAnd(Op1, Builder.CreateNot(X));
 3257       if (match(LHS, m_Not(m_Value(X))) && !isFreeToInvert(X, X->hasOneUse())) {
 3257       if (match(LHS, m_Not(m_Value(X))) && !isFreeToInvert(X, X->hasOneUse())) {
 3257       if (match(LHS, m_Not(m_Value(X))) && !isFreeToInvert(X, X->hasOneUse())) {
 3260             Builder.CreateICmp(getInverseMinMaxPred(SPF), X, NotY), X, NotY);
 3260             Builder.CreateICmp(getInverseMinMaxPred(SPF), X, NotY), X, NotY);