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

References

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
 3181   if (match(&I, m_c_Xor(m_OneUse(m_Xor(m_Value(A), m_Value(B))),
 3182                         m_OneUse(m_c_Or(m_Deferred(A), m_Value(C))))))
 3184           Builder.CreateAnd(Builder.CreateNot(A), C), B);
 3187   if (match(&I, m_c_Xor(m_OneUse(m_Xor(m_Value(A), m_Value(B))),
 3190           Builder.CreateAnd(Builder.CreateNot(B), C), A);
 3193   if (match(Op0, m_And(m_Value(A), m_Value(B))) &&
 3194       match(Op1, m_c_Xor(m_Specific(A), m_Specific(B))))
 3195     return BinaryOperator::CreateOr(A, B);
 3197   if (match(Op0, m_Xor(m_Value(A), m_Value(B))) &&
 3198       match(Op1, m_c_And(m_Specific(A), m_Specific(B))))
 3199     return BinaryOperator::CreateOr(A, B);
 3203   if (match(Op0, m_c_And(m_Value(A), m_Not(m_Value(B)))) &&
 3204       match(Op1, m_Not(m_Specific(A))))
 3205     return BinaryOperator::CreateNot(Builder.CreateAnd(A, B));
 3225   if (match(Op1, m_AShr(m_Value(A), m_APInt(ShAmt))) &&
 3227       match(Op0, m_OneUse(m_c_Add(m_Specific(A), m_Specific(Op1))))) {
 3231     Value *Cmp = Builder.CreateICmpSLT(A, ConstantInt::getNullValue(Ty));
 3234     Value *Neg = Builder.CreateNeg(A, "", Add->hasNoUnsignedWrap(),
 3236     return SelectInst::Create(Cmp, Neg, A);