Lines Matching refs:Op0
1281 Value *Op0 = BO.getOperand(0), *Op1 = BO.getOperand(1), *X; in reassociateFCmps() local
1284 std::swap(Op0, Op1); in reassociateFCmps()
1290 if (!match(Op0, m_FCmp(Pred, m_Value(X), m_AnyZeroFP())) || Pred != NanPred || in reassociateFCmps()
1309 NewFCmpInst->copyIRFlags(Op0); in reassociateFCmps()
1328 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in matchDeMorgansLaws() local
1330 if (match(Op0, m_OneUse(m_Not(m_Value(A)))) && in matchDeMorgansLaws()
1345 if (match(Op0, m_OneUse(m_c_BinOp(Opcode, m_Value(A), m_Not(m_Value(B))))) && in matchDeMorgansLaws()
1414 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldCastedBitwiseLogic() local
1415 CastInst *Cast0 = dyn_cast<CastInst>(Op0); in foldCastedBitwiseLogic()
1479 Value *Op0 = I.getOperand(0); in foldAndToXor() local
1494 if (Op0->hasOneUse() || Op1->hasOneUse()) in foldAndToXor()
1505 Value *Op0 = I.getOperand(0); in foldOrToXor() local
1512 if (Op0->hasOneUse() || Op1->hasOneUse()) in foldOrToXor()
1513 if (match(Op0, m_And(m_Value(A), m_Value(B))) && in foldOrToXor()
1520 if (Op0->hasOneUse() || Op1->hasOneUse()) in foldOrToXor()
1521 if (match(Op0, m_Xor(m_Value(A), m_Value(B))) && in foldOrToXor()
1529 if (match(Op0, m_c_And(m_Value(A), m_Not(m_Value(B)))) && in foldOrToXor()
1551 Value *Op0 = And.getOperand(0), *Op1 = And.getOperand(1); in narrowMaskedBinOp() local
1553 if (!match(Op0, m_OneUse(m_Add(m_Specific(Op1), m_Constant(C)))) && in narrowMaskedBinOp()
1554 !match(Op0, m_OneUse(m_Mul(m_Specific(Op1), m_Constant(C)))) && in narrowMaskedBinOp()
1555 !match(Op0, m_OneUse(m_LShr(m_Specific(Op1), m_Constant(C)))) && in narrowMaskedBinOp()
1556 !match(Op0, m_OneUse(m_Shl(m_Specific(Op1), m_Constant(C)))) && in narrowMaskedBinOp()
1557 !match(Op0, m_OneUse(m_Sub(m_Constant(C), m_Specific(Op1))))) in narrowMaskedBinOp()
1571 Instruction::BinaryOps Opc = cast<BinaryOperator>(Op0)->getOpcode(); in narrowMaskedBinOp()
1595 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldComplexAndOrPatterns() local
1622 if (matchNotOrAnd(Op0, m_Value(A), m_Value(B), m_Value(C), X)) { in foldComplexAndOrPatterns()
1661 if (Opcode == Instruction::Or && Op0->hasOneUse() && in foldComplexAndOrPatterns()
1678 if (match(Op0, in foldComplexAndOrPatterns()
1682 match(Op0, m_OneUse(m_c_BinOp( in foldComplexAndOrPatterns()
1763 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitAnd() local
1766 if (match(Op0, m_OneUse(m_LogicalShift(m_One(), m_Value(X)))) && in visitAnd()
1787 if (match(Op0, m_OneUse(m_Xor(m_Value(X), m_APInt(XorC))))) { in visitAnd()
1791 And->takeName(Op0); in visitAnd()
1796 if (match(Op0, m_OneUse(m_Or(m_Value(X), m_APInt(OrC))))) { in visitAnd()
1805 And->takeName(Op0); in visitAnd()
1811 if (match(Op0, m_OneUse(m_SExt(m_AShr(m_Value(X), m_APInt(ShiftC))))) && in visitAnd()
1824 if (match(Op0, m_AShr(m_Value(X), m_APInt(ShiftC))) && ShiftC->ult(Width) && in visitAnd()
1829 if (match(Op0, m_Add(m_Value(X), m_APInt(AddC)))) { in visitAnd()
1841 if (Op0->hasOneUse() && C->isPowerOf2() && (*AddC & (*C - 1)) == 0) { in visitAnd()
1863 if (match(Op0, m_OneUse(m_BinOp(BO))) && isNarrowableBinOpcode(BO)) { in visitAnd()
1910 if (match(Op0, m_OneUse(m_Xor(m_Value(X), m_Value(Y)))) || in visitAnd()
1911 match(Op0, m_OneUse(m_Or(m_Value(X), m_Value(Y))))) { in visitAnd()
1913 BinaryOperator::BinaryOps BinOp = cast<BinaryOperator>(Op0)->getOpcode(); in visitAnd()
1933 match(Op0, m_OneUse(m_LogicalShift(m_Power2(ShiftC), m_Value(X))))) { in visitAnd()
1937 cast<BinaryOperator>(Op0)->getOpcode() == Instruction::Shl; in visitAnd()
1950 if (match(Op0, m_OneUse(m_LShr(m_Shl(m_ImmConstant(C1), m_Value(X)), in visitAnd()
1966 if (match(Op0, m_OneUse(m_Shl(m_LShr(m_ImmConstant(C1), m_Value(X)), in visitAnd()
2008 if (auto *SI0 = dyn_cast<SelectInst>(Op0)) { in visitAnd()
2015 foldAndOrOfSelectUsingImpliedCond(Op0, *SI1, /* IsAnd */ true)) in visitAnd()
2029 if (match(Op1, m_OneUse(m_c_Xor(m_Specific(Op0), m_Value(B))))) in visitAnd()
2030 return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(B)); in visitAnd()
2032 if (match(Op0, m_OneUse(m_c_Xor(m_Specific(Op1), m_Value(B))))) in visitAnd()
2036 if (match(Op1, m_Not(m_c_Xor(m_Specific(Op0), m_Value(B))))) in visitAnd()
2037 return BinaryOperator::CreateAnd(Op0, B); in visitAnd()
2039 if (match(Op0, m_Not(m_c_Xor(m_Specific(Op1), m_Value(B))))) in visitAnd()
2043 if (match(Op0, m_Xor(m_Value(A), m_Value(B)))) in visitAnd()
2046 return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(C)); in visitAnd()
2049 if (match(Op0, m_Xor(m_Xor(m_Value(A), m_Value(C)), m_Value(B)))) in visitAnd()
2051 if (Op0->hasOneUse() || isFreeToInvert(C, C->hasOneUse())) in visitAnd()
2059 match(Op0, m_c_Or(m_Specific(A), m_Specific(B)))) in visitAnd()
2066 if (match(Op0, m_c_Xor(m_Not(m_Value(A)), m_Value(B))) && in visitAnd()
2074 if (match(Op0, m_c_Or(m_Not(m_Value(A)), m_Value(B))) && in visitAnd()
2083 match(Op0, m_c_Xor(m_Specific(A), m_Specific(B)))) in visitAnd()
2088 ICmpInst *LHS = dyn_cast<ICmpInst>(Op0); in visitAnd()
2113 if (RHS && match(Op0, m_OneUse(m_LogicalAnd(m_Value(X), m_Value(Y))))) { in visitAnd()
2114 bool IsLogical = isa<SelectInst>(Op0); in visitAnd()
2152 if (match(Op0, m_OneUse(m_SExt(m_Value(A)))) && in visitAnd()
2157 return SelectInst::Create(A, Op0, Constant::getNullValue(Ty)); in visitAnd()
2309 Value *Op0 = Or.getOperand(0), *Op1 = Or.getOperand(1); in matchOrConcat() local
2318 if (!isa<ZExtInst>(Op0)) in matchOrConcat()
2319 std::swap(Op0, Op1); in matchOrConcat()
2324 if (!match(Op0, m_OneUse(m_ZExt(m_Value(LowerSrc)))) || in matchOrConcat()
2733 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitOr() local
2736 if (auto *SI0 = dyn_cast<SelectInst>(Op0)) { in visitOr()
2743 foldAndOrOfSelectUsingImpliedCond(Op0, *SI1, /* IsAnd */ false)) in visitOr()
2775 haveNoCommonBitsSet(Op0, Op1, DL)) { in visitOr()
2782 if (match(Op0, m_And(m_Value(A), m_Value(C))) && in visitOr()
2836 if (Op0->hasOneUse() || Op1->hasOneUse()) { in visitOr()
2858 if (match(Op0, m_Xor(m_Value(A), m_Value(B)))) in visitOr()
2860 return BinaryOperator::CreateOr(Op0, C); in visitOr()
2863 if (match(Op0, m_Xor(m_Xor(m_Value(A), m_Value(C)), m_Value(B)))) in visitOr()
2868 if (match(Op0, m_c_Xor(m_c_And(m_Value(A), m_Specific(Op1)), m_Value(C)))) in visitOr()
2872 if (match(Op1, m_c_Xor(m_c_And(m_Value(A), m_Specific(Op0)), m_Value(C)))) in visitOr()
2873 return BinaryOperator::CreateOr(Op0, C); in visitOr()
2876 if (match(Op0, m_And(m_Or(m_Specific(Op1), m_Value(C)), m_Value(A)))) in visitOr()
2884 if (match(Op0, m_Xor(m_Value(), m_Value()))) { in visitOr()
2885 std::swap(Op0, Op1); in visitOr()
2895 if (Op0 == A || Op0 == B) in visitOr()
2898 if (match(Op0, m_And(m_Specific(A), m_Specific(B))) || in visitOr()
2899 match(Op0, m_And(m_Specific(B), m_Specific(A)))) in visitOr()
2902 if ((Op0->hasOneUse() || Op1->hasOneUse()) && in visitOr()
2903 (match(Op0, m_Not(m_Specific(A))) || match(Op0, m_Not(m_Specific(B))))) in visitOr()
2906 if (Op1->hasOneUse() && match(A, m_Not(m_Specific(Op0)))) { in visitOr()
2908 return BinaryOperator::CreateOr(Not, Op0); in visitOr()
2910 if (Op1->hasOneUse() && match(B, m_Not(m_Specific(Op0)))) { in visitOr()
2912 return BinaryOperator::CreateOr(Not, Op0); in visitOr()
2920 if ((Op0 == B->getOperand(0) || Op0 == B->getOperand(1)) && in visitOr()
2923 Value *NotOp = Op0 == B->getOperand(0) ? B->getOperand(1) : in visitOr()
2926 return BinaryOperator::CreateOr(Not, Op0); in visitOr()
2930 std::swap(Op0, Op1); in visitOr()
2933 ICmpInst *LHS = dyn_cast<ICmpInst>(Op0); in visitOr()
2959 if (RHS && match(Op0, m_OneUse(m_LogicalOr(m_Value(X), m_Value(Y))))) { in visitOr()
2960 bool IsLogical = isa<SelectInst>(Op0); in visitOr()
2997 if (match(Op0, m_OneUse(m_SExt(m_Value(A)))) && in visitOr()
3002 return SelectInst::Create(A, ConstantInt::getAllOnesValue(Ty), Op0); in visitOr()
3010 if (Op0->hasOneUse() && !match(Op1, m_ConstantInt()) && in visitOr()
3011 match(Op0, m_Or(m_Value(A), m_ConstantInt(CI)))) { in visitOr()
3013 Inner->takeName(Op0); in visitOr()
3022 if (Op0->hasOneUse() && Op1->hasOneUse() && in visitOr()
3023 match(Op0, m_Select(m_Value(X), m_Value(A), m_Value(B))) && in visitOr()
3132 Value *Op0 = I.getOperand(0); in foldXorToXor() local
3163 if (!Op0->hasOneUse() && !Op1->hasOneUse()) in foldXorToXor()
3171 if ((match(Op0, m_Or(m_Value(A), m_Value(B))) && in foldXorToXor()
3173 (match(Op0, m_And(m_Value(A), m_Value(B))) && in foldXorToXor()
3371 Value *Op0 = Xor.getOperand(0), *Op1 = Xor.getOperand(1); in canonicalizeAbs() local
3372 if (Op0->hasNUses(2)) in canonicalizeAbs()
3373 std::swap(Op0, Op1); in canonicalizeAbs()
3380 match(Op0, m_OneUse(m_c_Add(m_Specific(A), m_Specific(Op1))))) { in canonicalizeAbs()
3386 auto *Add = cast<BinaryOperator>(Op0); in canonicalizeAbs()
3650 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitXor() local
3654 return BinaryOperator::CreateOr(Op0, Op1); in visitXor()
3664 if (match(Op0, m_OneUse(m_Or(m_Value(X), m_ImmConstant(C2)))) && in visitXor()
3676 if (match(Op0, m_OneUse(m_Or(m_Not(m_Value(X)), m_Constant(C2))))) { in visitXor()
3681 if (match(Op0, m_OneUse(m_And(m_Not(m_Value(X)), m_Constant(C2))))) { in visitXor()
3692 if (match(Op0, m_OneUse(m_TruncOrSelf( in visitXor()
3709 if (RHSC->isSignMask() && match(Op0, m_Sub(m_APInt(C), m_Value(X)))) in visitXor()
3713 if (RHSC->isSignMask() && match(Op0, m_Add(m_Value(X), m_APInt(C)))) in visitXor()
3717 if (match(Op0, m_Or(m_Value(X), m_APInt(C))) && in visitXor()
3724 if (match(Op0, m_OneUse(m_Shl(m_Value(X), m_APInt(C)))) && in visitXor()
3730 if (match(Op0, m_OneUse(m_LShr(m_Value(X), m_APInt(C)))) && in visitXor()
3747 match(Op0, m_LShr(m_Xor(m_Value(X), m_ConstantInt(C1)), in visitXor()
3749 Op0->hasOneUse()) { in visitXor()
3755 Opnd0->takeName(Op0); in visitXor()
3765 if (match(Op1, m_OneUse(m_c_Or(m_Value(X), m_Specific(Op0))))) in visitXor()
3766 return BinaryOperator::CreateAnd(X, Builder.CreateNot(Op0)); in visitXor()
3769 if (match(Op0, m_OneUse(m_c_Or(m_Value(X), m_Specific(Op1))))) in visitXor()
3774 if (match(Op1, m_OneUse(m_c_And(m_Value(X), m_Specific(Op0))))) in visitXor()
3775 return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(X)); in visitXor()
3782 match(Op0, m_OneUse(m_c_And(m_Value(X), m_Specific(Op1))))) in visitXor()
3799 if (match(Op0, m_And(m_Value(A), m_Value(B))) && in visitXor()
3803 if (match(Op0, m_Xor(m_Value(A), m_Value(B))) && in visitXor()
3809 if (match(Op0, m_c_And(m_Value(A), m_Not(m_Value(B)))) && in visitXor()
3818 if (match(Op0, m_OneUse(m_c_Or(m_Not(m_Specific(Op1)), m_Value(B))))) in visitXor()
3822 if (match(Op1, m_OneUse(m_c_Or(m_Not(m_Specific(Op0)), m_Value(B))))) in visitXor()
3823 return BinaryOperator::CreateNot(Builder.CreateAnd(Op0, B)); in visitXor()
3828 if (match(Op0, m_OneUse(m_Or(m_Value(A), m_Value(B)))) && in visitXor()