Lines Matching refs:BinaryOperator

59     BinaryOperator *Sh0, const SimplifyQuery &SQ,  in reassociateShiftAmtsOfTwoSameDirectionShifts()
142 BinaryOperator *NewShift = BinaryOperator::Create(ShiftOpcode, X, NewShAmt); in reassociateShiftAmtsOfTwoSameDirectionShifts()
184 dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift, in dropRedundantMaskingOfLeftShiftInput()
316 auto *NewShift = BinaryOperator::Create(OuterShift->getOpcode(), X, in dropRedundantMaskingOfLeftShiftInput()
322 return BinaryOperator::Create(Instruction::And, NewShift, NewMask); in dropRedundantMaskingOfLeftShiftInput()
329 static Instruction *foldShiftOfShiftedLogic(BinaryOperator &I, in foldShiftOfShiftedLogic()
332 auto *LogicInst = dyn_cast<BinaryOperator>(I.getOperand(0)); in foldShiftOfShiftedLogic()
367 return BinaryOperator::Create(LogicInst->getOpcode(), NewShift1, NewShift2); in foldShiftOfShiftedLogic()
370 Instruction *InstCombinerImpl::commonShiftTransforms(BinaryOperator &I) { in commonShiftTransforms()
382 return BinaryOperator::Create(I.getOpcode(), Op0, NewExt); in commonShiftTransforms()
410 return BinaryOperator::Create(I.getOpcode(), NewC, A); in commonShiftTransforms()
443 BinaryOperator *NewShiftOp = in commonShiftTransforms()
444 BinaryOperator::Create(I.getOpcode(), NewC, A); in commonShiftTransforms()
581 static Value *foldShiftedShift(BinaryOperator *InnerShift, unsigned OuterShAmt, in foldShiftedShift()
671 return foldShiftedShift(cast<BinaryOperator>(I), NumBits, isLeftShift, in getShiftedValue()
692 auto *Neg = BinaryOperator::CreateNeg(I->getOperand(0)); in getShiftedValue()
696 auto *And = BinaryOperator::CreateAnd(Neg, in getShiftedValue()
706 static bool canShiftBinOpWithConstantRHS(BinaryOperator &Shift, in canShiftBinOpWithConstantRHS()
707 BinaryOperator *BO) { in canShiftBinOpWithConstantRHS()
724 BinaryOperator &I) { in FoldShiftByConstant()
730 return BinaryOperator::Create( in FoldShiftByConstant()
765 if (auto *Op0BO = dyn_cast<BinaryOperator>(Op0)) { in FoldShiftByConstant()
778 return BinaryOperator::Create(Op0BO->getOpcode(), NewShift, NewRHS); in FoldShiftByConstant()
792 BinaryOperator *TBO; in FoldShiftByConstant()
809 BinaryOperator *FBO; in FoldShiftByConstant()
829 Instruction *InstCombinerImpl::visitShl(BinaryOperator &I) { in visitShl()
866 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask)); in visitShl()
876 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitShl()
884 auto *NewShr = BinaryOperator::Create( in visitShl()
885 cast<BinaryOperator>(Op0)->getOpcode(), X, ShiftDiff); in visitShl()
897 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitShl()
902 return BinaryOperator::CreateAnd(NewShl, ConstantInt::get(Ty, Mask)); in visitShl()
907 auto *OldShr = cast<BinaryOperator>(Op0); in visitShl()
909 BinaryOperator::Create(OldShr->getOpcode(), X, ShiftDiff); in visitShl()
913 return BinaryOperator::CreateAnd(NewShr, ConstantInt::get(Ty, Mask)); in visitShl()
918 BinaryOperator *Shr; in visitShl()
934 return BinaryOperator::CreateAnd(Trunc, ConstantInt::get(Ty, Mask)); in visitShl()
942 return BinaryOperator::CreateShl(X, ConstantInt::get(Ty, AmtSum)); in visitShl()
961 BinaryOperator *Op0BO; in visitShl()
987 return BinaryOperator::CreateAnd(B, Mask); in visitShl()
999 return BinaryOperator::Create(Op0BO->getOpcode(), M, YS); in visitShl()
1007 return BinaryOperator::CreateSub(NewLHS, NewShift); in visitShl()
1031 return BinaryOperator::CreateAnd(Mask, X); in visitShl()
1040 return BinaryOperator::CreateMul(X, ConstantExpr::getShl(C2, C1)); in visitShl()
1052 return BinaryOperator::CreateLShr( in visitShl()
1058 Instruction *InstCombinerImpl::visitLShr(BinaryOperator &I) { in visitLShr()
1095 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) { in visitLShr()
1097 auto *NewLShr = BinaryOperator::CreateLShr(X, ShiftDiff); in visitLShr()
1105 return BinaryOperator::CreateAnd(NewLShr, ConstantInt::get(Ty, Mask)); in visitLShr()
1110 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) { in visitLShr()
1112 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitLShr()
1120 return BinaryOperator::CreateAnd(NewShl, ConstantInt::get(Ty, Mask)); in visitLShr()
1126 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask)); in visitLShr()
1142 return BinaryOperator::CreateAnd(NewAdd, Mask); in visitLShr()
1195 return BinaryOperator::CreateAnd(Signbit, X); in visitLShr()
1204 return BinaryOperator::CreateLShr(X, ConstantInt::get(Ty, AmtSum)); in visitLShr()
1226 return BinaryOperator::CreateAnd(Trunc, ConstantInt::get(Ty, MaskC)); in visitLShr()
1238 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, *MulC - 2)); in visitLShr()
1249 BinaryOperator::CreateNUWMul(X, ConstantInt::get(Ty, NewMulC)); in visitLShr()
1250 BinaryOperator *OrigMul = cast<BinaryOperator>(Op0); in visitLShr()
1274 return BinaryOperator::CreateShl(NewZExt, ShiftDiff); in visitLShr()
1292 return BinaryOperator::CreateAnd(Mask, X); in visitLShr()
1300 BinaryOperator &OldAShr) { in foldVariableSignZeroExtensionOfVariableHighBitExtract()
1358 BinaryOperator::Create(OldAShr.getOpcode(), X, NumLowBitsToSkip); in foldVariableSignZeroExtensionOfVariableHighBitExtract()
1367 Instruction *InstCombinerImpl::visitAShr(BinaryOperator &I) { in visitAShr()
1402 auto *NewAShr = BinaryOperator::CreateAShr(X, ShiftDiff); in visitAShr()
1409 auto *NewShl = BinaryOperator::Create(Instruction::Shl, X, ShiftDiff); in visitAShr()
1421 return BinaryOperator::CreateAShr(X, ConstantInt::get(Ty, AmtSum)); in visitAShr()
1465 return BinaryOperator::CreateNeg(X); in visitAShr()
1473 return BinaryOperator::CreateLShr(Op0, Op1); in visitAShr()
1480 return BinaryOperator::CreateNot(NewAShr); in visitAShr()