Lines Matching refs:BinaryOperator
60 BinaryOperator *Sh0, const SimplifyQuery &SQ, in reassociateShiftAmtsOfTwoSameDirectionShifts()
143 BinaryOperator *NewShift = BinaryOperator::Create(ShiftOpcode, X, NewShAmt); in reassociateShiftAmtsOfTwoSameDirectionShifts()
185 dropRedundantMaskingOfLeftShiftInput(BinaryOperator *OuterShift, in dropRedundantMaskingOfLeftShiftInput()
317 auto *NewShift = BinaryOperator::Create(OuterShift->getOpcode(), X, in dropRedundantMaskingOfLeftShiftInput()
323 return BinaryOperator::Create(Instruction::And, NewShift, NewMask); in dropRedundantMaskingOfLeftShiftInput()
330 static Instruction *foldShiftOfShiftedLogic(BinaryOperator &I, in foldShiftOfShiftedLogic()
333 auto *LogicInst = dyn_cast<BinaryOperator>(I.getOperand(0)); in foldShiftOfShiftedLogic()
349 BinaryOperator *BO; in foldShiftOfShiftedLogic()
369 return BinaryOperator::Create(LogicInst->getOpcode(), NewShift1, NewShift2); in foldShiftOfShiftedLogic()
372 Instruction *InstCombinerImpl::commonShiftTransforms(BinaryOperator &I) { in commonShiftTransforms()
380 return BinaryOperator::Create(I.getOpcode(), Op0, NewExt); in commonShiftTransforms()
408 return BinaryOperator::Create( in commonShiftTransforms()
531 static Value *foldShiftedShift(BinaryOperator *InnerShift, unsigned OuterShAmt, in foldShiftedShift()
621 return foldShiftedShift(cast<BinaryOperator>(I), NumBits, isLeftShift, in getShiftedValue()
645 static bool canShiftBinOpWithConstantRHS(BinaryOperator &Shift, in canShiftBinOpWithConstantRHS()
646 BinaryOperator *BO) { in canShiftBinOpWithConstantRHS()
663 BinaryOperator &I) { in FoldShiftByConstant()
732 if (BinaryOperator *Op0BO = dyn_cast<BinaryOperator>(Op0)) { in FoldShiftByConstant()
755 return BinaryOperator::CreateAnd(X, Mask); in FoldShiftByConstant()
769 return BinaryOperator::Create(Op0BO->getOpcode(), YS, XM); in FoldShiftByConstant()
787 return BinaryOperator::CreateAnd(X, Mask); in FoldShiftByConstant()
801 return BinaryOperator::Create(Op0BO->getOpcode(), XM, YS); in FoldShiftByConstant()
820 return BinaryOperator::Create(Op0BO->getOpcode(), NewShift, in FoldShiftByConstant()
836 return BinaryOperator::CreateSub(NewRHS, NewShift); in FoldShiftByConstant()
849 BinaryOperator *TBO; in FoldShiftByConstant()
868 BinaryOperator *FBO; in FoldShiftByConstant()
891 Instruction *InstCombinerImpl::visitShl(BinaryOperator &I) { in visitShl()
928 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask)); in visitShl()
938 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitShl()
946 auto *NewShr = BinaryOperator::Create( in visitShl()
947 cast<BinaryOperator>(Op0)->getOpcode(), X, ShiftDiff); in visitShl()
959 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitShl()
964 return BinaryOperator::CreateAnd(NewShl, ConstantInt::get(Ty, Mask)); in visitShl()
969 auto *OldShr = cast<BinaryOperator>(Op0); in visitShl()
971 BinaryOperator::Create(OldShr->getOpcode(), X, ShiftDiff); in visitShl()
975 return BinaryOperator::CreateAnd(NewShr, ConstantInt::get(Ty, Mask)); in visitShl()
984 return BinaryOperator::CreateShl(X, ConstantInt::get(Ty, AmtSum)); in visitShl()
1007 return BinaryOperator::CreateAnd(Mask, X); in visitShl()
1016 return BinaryOperator::CreateShl(ConstantExpr::getShl(C2, C1), X); in visitShl()
1020 return BinaryOperator::CreateMul(X, ConstantExpr::getShl(C2, C1)); in visitShl()
1032 return BinaryOperator::CreateLShr( in visitShl()
1038 Instruction *InstCombinerImpl::visitLShr(BinaryOperator &I) { in visitLShr()
1075 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) { in visitLShr()
1077 auto *NewLShr = BinaryOperator::CreateLShr(X, ShiftDiff); in visitLShr()
1084 return BinaryOperator::CreateAnd(NewLShr, ConstantInt::get(Ty, Mask)); in visitLShr()
1089 if (cast<BinaryOperator>(Op0)->hasNoUnsignedWrap()) { in visitLShr()
1091 auto *NewShl = BinaryOperator::CreateShl(X, ShiftDiff); in visitLShr()
1098 return BinaryOperator::CreateAnd(NewShl, ConstantInt::get(Ty, Mask)); in visitLShr()
1103 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, Mask)); in visitLShr()
1154 return BinaryOperator::CreateAnd(Signbit, X); in visitLShr()
1163 return BinaryOperator::CreateLShr(X, ConstantInt::get(Ty, AmtSum)); in visitLShr()
1174 return BinaryOperator::CreateAnd(X, ConstantInt::get(Ty, *MulC - 2)); in visitLShr()
1189 return BinaryOperator::CreateAnd(Mask, X); in visitLShr()
1197 BinaryOperator &OldAShr) { in foldVariableSignZeroExtensionOfVariableHighBitExtract()
1255 BinaryOperator::Create(OldAShr.getOpcode(), X, NumLowBitsToSkip); in foldVariableSignZeroExtensionOfVariableHighBitExtract()
1264 Instruction *InstCombinerImpl::visitAShr(BinaryOperator &I) { in visitAShr()
1299 auto *NewAShr = BinaryOperator::CreateAShr(X, ShiftDiff); in visitAShr()
1306 auto *NewShl = BinaryOperator::Create(Instruction::Shl, X, ShiftDiff); in visitAShr()
1318 return BinaryOperator::CreateAShr(X, ConstantInt::get(Ty, AmtSum)); in visitAShr()
1354 return BinaryOperator::CreateLShr(Op0, Op1); in visitAShr()
1362 return BinaryOperator::CreateNot(NewAShr); in visitAShr()