Lines Matching refs:BinaryOperator

84 static Value *SimplifyBSwap(BinaryOperator &I,  in SimplifyBSwap()
1163 BinaryOperator &Logic, in foldAndOrOfICmpsWithConstEq()
1207 BinaryOperator &And) { in foldAndOfICmps()
1485 static Instruction *reassociateFCmps(BinaryOperator &BO, in reassociateFCmps()
1499 BinaryOperator *BO1; in reassociateFCmps()
1524 return BinaryOperator::Create(Opcode, NewFCmp, BO11); in reassociateFCmps()
1530 static Instruction *matchDeMorgansLaws(BinaryOperator &I, in matchDeMorgansLaws()
1545 return BinaryOperator::CreateNot(AndOr); in matchDeMorgansLaws()
1568 static Instruction *foldLogicCastConstant(BinaryOperator &Logic, CastInst *Cast, in foldLogicCastConstant()
1607 Instruction *InstCombinerImpl::foldCastedBitwiseLogic(BinaryOperator &I) { in foldCastedBitwiseLogic()
1673 static Instruction *foldAndToXor(BinaryOperator &I, in foldAndToXor()
1685 return BinaryOperator::CreateXor(A, B); in foldAndToXor()
1694 return BinaryOperator::CreateNot(Builder.CreateXor(A, B)); in foldAndToXor()
1699 static Instruction *foldOrToXor(BinaryOperator &I, in foldOrToXor()
1712 return BinaryOperator::CreateNot(Builder.CreateXor(A, B)); in foldOrToXor()
1720 return BinaryOperator::CreateNot(Builder.CreateAnd(A, B)); in foldOrToXor()
1728 return BinaryOperator::CreateXor(A, B); in foldOrToXor()
1742 Instruction *InstCombinerImpl::narrowMaskedBinOp(BinaryOperator &And) { in narrowMaskedBinOp()
1768 Instruction::BinaryOps Opc = cast<BinaryOperator>(Op0)->getOpcode(); in narrowMaskedBinOp()
1784 Instruction *InstCombinerImpl::visitAnd(BinaryOperator &I) { in visitAnd()
1832 return BinaryOperator::CreateXor(And, NewC); in visitAnd()
1846 return BinaryOperator::CreateOr(And, ConstantInt::get(Ty, Together)); in visitAnd()
1853 BinaryOperator::BinaryOps BinOp = cast<BinaryOperator>(Op0)->getOpcode(); in visitAnd()
1858 return BinaryOperator::Create(BinOp, X, NewRHS); in visitAnd()
1864 return BinaryOperator::Create(BinOp, NewLHS, Y); in visitAnd()
1876 return BinaryOperator::CreateLShr(Sext, ShAmtC); in visitAnd()
1887 return BinaryOperator::CreateAnd(X, Op1); in visitAnd()
1896 return BinaryOperator::CreateXor(NewAnd, Op1); in visitAnd()
1906 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) { in visitAnd()
1957 return BinaryOperator::CreateAnd(SExt, SanitizedSignMask); in visitAnd()
1986 return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(B)); in visitAnd()
1989 return BinaryOperator::CreateAnd(Op1, Builder.CreateNot(B)); in visitAnd()
1993 return BinaryOperator::CreateAnd(Op0, B); in visitAnd()
1996 return BinaryOperator::CreateAnd(Op1, B); in visitAnd()
2002 return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(C)); in visitAnd()
2008 return BinaryOperator::CreateAnd(Op1, Builder.CreateNot(C)); in visitAnd()
2016 return BinaryOperator::CreateAnd(A, B); in visitAnd()
2024 return BinaryOperator::CreateAnd(A, B); in visitAnd()
2119 BinaryOperator *Or0, *Or1; in matchFunnelShift()
2131 if (Or0->getOpcode() == BinaryOperator::LShr) { in matchFunnelShift()
2136 assert(Or0->getOpcode() == BinaryOperator::Shl && in matchFunnelShift()
2137 Or1->getOpcode() == BinaryOperator::LShr && in matchFunnelShift()
2365 BinaryOperator &Or) { in foldOrOfICmps()
2630 Instruction *InstCombinerImpl::visitOr(BinaryOperator &I) { in visitOr()
2691 return BinaryOperator::CreateXor(Or, ConstantInt::get(I.getType(), *CV)); in visitOr()
2710 return BinaryOperator::CreateAnd(A, in visitOr()
2718 return BinaryOperator::CreateAnd(B, in visitOr()
2729 return BinaryOperator::CreateAnd(V2, in visitOr()
2739 return BinaryOperator::CreateOr(Builder.CreateAnd(X, C1), B); in visitOr()
2742 return BinaryOperator::CreateOr(Builder.CreateAnd(X, C2), A); in visitOr()
2746 return BinaryOperator::CreateXor(Builder.CreateAnd(X, C1), B); in visitOr()
2749 return BinaryOperator::CreateXor(Builder.CreateAnd(X, C2), A); in visitOr()
2780 return BinaryOperator::CreateOr(Op0, C); in visitOr()
2785 return BinaryOperator::CreateOr(Op1, C); in visitOr()
2789 return BinaryOperator::CreateOr(Op1, Builder.CreateAnd(A, C)); in visitOr()
2806 return BinaryOperator::CreateOr(A, B); in visitOr()
2810 return BinaryOperator::CreateOr(A, B); in visitOr()
2814 return BinaryOperator::CreateOr(Not, Op0); in visitOr()
2818 return BinaryOperator::CreateOr(Not, Op0); in visitOr()
2825 if (BinaryOperator *B = dyn_cast<BinaryOperator>(A)) in visitOr()
2832 return BinaryOperator::CreateOr(Not, Op0); in visitOr()
2895 return BinaryOperator::CreateOr(Inner, CI); in visitOr()
2952 return BinaryOperator::CreateAnd(NotNullA, NotNullB); in visitOr()
2968 return BinaryOperator::CreateLShr(Constant::getAllOnesValue(Ty), Sub); in visitOr()
2982 static Instruction *foldXorToXor(BinaryOperator &I, in foldXorToXor()
2997 return BinaryOperator::CreateXor(A, B); in foldXorToXor()
3005 return BinaryOperator::CreateXor(A, B); in foldXorToXor()
3013 return BinaryOperator::CreateXor(A, B); in foldXorToXor()
3028 return BinaryOperator::CreateNot(Builder.CreateXor(A, B)); in foldXorToXor()
3034 BinaryOperator &I) { in foldXorOfICmps()
3144 static Instruction *visitMaskedMerge(BinaryOperator &I, in visitMaskedMerge()
3159 return BinaryOperator::CreateXor(NewA, X); in visitMaskedMerge()
3171 return BinaryOperator::CreateOr(LHS, RHS); in visitMaskedMerge()
3183 static Instruction *sinkNotIntoXor(BinaryOperator &I, in sinkNotIntoXor()
3200 return BinaryOperator::CreateXor(NotX, Y, I.getName() + ".demorgan"); in sinkNotIntoXor()
3205 static Instruction *canonicalizeAbs(BinaryOperator &Xor, in canonicalizeAbs()
3228 auto *Add = cast<BinaryOperator>(Op0); in canonicalizeAbs()
3241 bool InstCombinerImpl::sinkNotIntoOtherHandOfAndOrOr(BinaryOperator &I) { in sinkNotIntoOtherHandOfAndOrOr()
3268 BinaryOperator::Create(NewOpc, X, NotY, I.getName() + ".not"); in sinkNotIntoOtherHandOfAndOrOr()
3281 Instruction *InstCombinerImpl::visitXor(BinaryOperator &I) { in visitXor()
3317 return BinaryOperator::CreateOr(Op0, Op1); in visitXor()
3328 return BinaryOperator::CreateOr(X, NotY); in visitXor()
3334 return BinaryOperator::CreateAnd(X, NotY); in visitXor()
3341 BinaryOperator *NotVal; in visitXor()
3355 return BinaryOperator::CreateOr(NotX, NotY); in visitXor()
3356 return BinaryOperator::CreateAnd(NotX, NotY); in visitXor()
3365 return BinaryOperator::CreateAnd(DecX, NotY); in visitXor()
3370 return BinaryOperator::CreateAShr(X, Y); in visitXor()
3385 return BinaryOperator::CreateLShr(ConstantExpr::getNot(C), Y); in visitXor()
3395 return BinaryOperator::CreateAShr(ConstantExpr::getNot(C), Y); in visitXor()
3400 return BinaryOperator::CreateSub(ConstantExpr::getNot(C), X); in visitXor()
3406 return BinaryOperator::CreateAdd(Builder.CreateNot(X), Y); in visitXor()
3410 return BinaryOperator::CreateWithCopiedFlags(Instruction::Sub, X, Y, in visitXor()
3421 return BinaryOperator::CreateXor(And, ConstantExpr::getNot(C1)); in visitXor()
3426 return BinaryOperator::CreateXor(Or, ConstantExpr::getNot(C1)); in visitXor()
3444 return BinaryOperator::CreateSub(ConstantInt::get(Ty, *C + *RHSC), X); in visitXor()
3448 return BinaryOperator::CreateAdd(X, ConstantInt::get(Ty, *C + *RHSC)); in visitXor()
3453 return BinaryOperator::CreateXor(X, ConstantInt::get(Ty, *C ^ *RHSC)); in visitXor()
3461 return BinaryOperator::CreateShl(NotX, ConstantInt::get(Ty, *C)); in visitXor()
3467 return BinaryOperator::CreateLShr(NotX, ConstantInt::get(Ty, *C)); in visitXor()
3491 return BinaryOperator::CreateXor(Opnd0, ConstantInt::get(Ty, FoldConst)); in visitXor()
3501 return BinaryOperator::CreateAnd(X, Builder.CreateNot(Op0)); in visitXor()
3505 return BinaryOperator::CreateAnd(X, Builder.CreateNot(Op1)); in visitXor()
3510 return BinaryOperator::CreateAnd(Op0, Builder.CreateNot(X)); in visitXor()
3518 return BinaryOperator::CreateAnd(Op1, Builder.CreateNot(X)); in visitXor()
3524 return BinaryOperator::CreateXor( in visitXor()
3530 return BinaryOperator::CreateXor( in visitXor()
3536 return BinaryOperator::CreateOr(A, B); in visitXor()
3540 return BinaryOperator::CreateOr(A, B); in visitXor()
3546 return BinaryOperator::CreateNot(Builder.CreateAnd(A, B)); in visitXor()
3550 return BinaryOperator::CreateOr(A, B); in visitXor()
3563 return BinaryOperator::CreateAnd(Builder.CreateXor(B, C), NotA); in visitXor()
3681 return BinaryOperator::CreateXor(Builder.CreateXor(X, Y), C1); in visitXor()