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

References

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
 2497   if (match(Op0, m_And(m_Value(A), m_Value(C))) &&
 2557     if (Op0->hasOneUse() || Op1->hasOneUse()) {
 2579   if (match(Op0, m_Xor(m_Value(A), m_Value(B))))
 2581       return BinaryOperator::CreateOr(Op0, C);
 2584   if (match(Op0, m_Xor(m_Xor(m_Value(A), m_Value(C)), m_Value(B))))
 2589   if (match(Op0, m_And(m_Or(m_Specific(Op1), m_Value(C)), m_Value(A))))
 2597   if (match(Op0, m_Xor(m_Value(), m_Value()))) {
 2598     std::swap(Op0, Op1);
 2606     if (Op0 == A || Op0 == B)
 2606     if (Op0 == A || Op0 == B)
 2609     if (match(Op0, m_And(m_Specific(A), m_Specific(B))) ||
 2610         match(Op0, m_And(m_Specific(B), m_Specific(A))))
 2613     if (Op1->hasOneUse() && match(A, m_Not(m_Specific(Op0)))) {
 2615       return BinaryOperator::CreateOr(Not, Op0);
 2617     if (Op1->hasOneUse() && match(B, m_Not(m_Specific(Op0)))) {
 2619       return BinaryOperator::CreateOr(Not, Op0);
 2627       if ((Op0 == B->getOperand(0) || Op0 == B->getOperand(1)) &&
 2627       if ((Op0 == B->getOperand(0) || Op0 == B->getOperand(1)) &&
 2630         Value *NotOp = Op0 == B->getOperand(0) ? B->getOperand(1) :
 2633         return BinaryOperator::CreateOr(Not, Op0);
 2637     std::swap(Op0, Op1);
 2640     ICmpInst *LHS = dyn_cast<ICmpInst>(Op0);
 2657     if (RHS && match(Op0, m_OneUse(m_Or(m_Value(X), m_Value(Y))))) {
 2679   if (match(Op0, m_OneUse(m_SExt(m_Value(A)))) &&
 2684     return SelectInst::Create(A, ConstantInt::getSigned(I.getType(), -1), Op0);
 2692   if (Op0->hasOneUse() && !isa<ConstantInt>(Op1) &&
 2693       match(Op0, m_Or(m_Value(A), m_ConstantInt(CI)))) {
 2695     Inner->takeName(Op0);
 2704     if (Op0->hasOneUse() && Op1->hasOneUse() &&
 2705         match(Op0, m_Select(m_Value(X), m_Value(A), m_Value(B))) &&