Lines Matching refs:BinaryOperator
24 Instruction *InstCombiner::commonShiftTransforms(BinaryOperator &I) { in commonShiftTransforms()
49 return BinaryOperator::Create( in commonShiftTransforms()
195 static Value *foldShiftedShift(BinaryOperator *InnerShift, unsigned OuterShAmt, in foldShiftedShift()
291 return foldShiftedShift(cast<BinaryOperator>(I), NumBits, isLeftShift, in getShiftedValue()
315 static bool canShiftBinOpWithConstantRHS(BinaryOperator &Shift, in canShiftBinOpWithConstantRHS()
316 BinaryOperator *BO, in canShiftBinOpWithConstantRHS()
348 BinaryOperator &I) { in FoldShiftByConstant()
424 if (BinaryOperator *Op0BO = dyn_cast<BinaryOperator>(Op0)) { in FoldShiftByConstant()
450 return BinaryOperator::CreateAnd(X, Mask); in FoldShiftByConstant()
464 return BinaryOperator::Create(Op0BO->getOpcode(), YS, XM); in FoldShiftByConstant()
485 return BinaryOperator::CreateAnd(X, Mask); in FoldShiftByConstant()
499 return BinaryOperator::Create(Op0BO->getOpcode(), XM, YS); in FoldShiftByConstant()
519 return BinaryOperator::Create(Op0BO->getOpcode(), NewShift, in FoldShiftByConstant()
535 return BinaryOperator::CreateSub(NewRHS, NewShift); in FoldShiftByConstant()
548 BinaryOperator *TBO; in FoldShiftByConstant()
567 BinaryOperator *FBO; in FoldShiftByConstant()
590 Instruction *InstCombiner::visitShl(BinaryOperator &I) { in visitShl()
622 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask)); in visitShl()
633 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitShl()
641 auto *NewShr = BinaryOperator::Create( in visitShl()
642 cast<BinaryOperator>(Op0)->getOpcode(), X, ShiftDiff); in visitShl()
653 return BinaryOperator::CreateShl(X, ConstantInt::get(Ty, AmtSum)); in visitShl()
676 return BinaryOperator::CreateAnd(Mask, X); in visitShl()
685 return BinaryOperator::CreateShl(ConstantExpr::getShl(C2, C1), X); in visitShl()
689 return BinaryOperator::CreateMul(X, ConstantExpr::getShl(C2, C1)); in visitShl()
695 Instruction *InstCombiner::visitLShr(BinaryOperator &I) { in visitLShr()
732 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) { in visitLShr()
734 auto *NewLShr = BinaryOperator::CreateLShr(X, ShiftDiff); in visitLShr()
741 return BinaryOperator::CreateAnd(NewLShr, ConstantInt::get(Ty, Mask)); in visitLShr()
746 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) { in visitLShr()
748 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitLShr()
755 return BinaryOperator::CreateAnd(NewShl, ConstantInt::get(Ty, Mask)); in visitLShr()
760 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask)); in visitLShr()
802 return BinaryOperator::CreateLShr(X, ConstantInt::get(Ty, AmtSum)); in visitLShr()
818 return BinaryOperator::CreateAnd(Mask, X); in visitLShr()
824 Instruction *InstCombiner::visitAShr(BinaryOperator &I) { in visitAShr()
859 auto *NewAShr = BinaryOperator::CreateAShr(X, ShiftDiff); in visitAShr()
866 auto *NewShl = BinaryOperator::Create(Instruction::Shl, X, ShiftDiff); in visitAShr()
878 return BinaryOperator::CreateAShr(X, ConstantInt::get(Ty, AmtSum)); in visitAShr()
900 return BinaryOperator::CreateLShr(Op0, Op1); in visitAShr()