Lines Matching refs:BinaryOperator
65 BinaryOperator *I = dyn_cast<BinaryOperator>(V); in simplifyValueKnownNonZero()
98 static Value *foldMulSelectToNegate(BinaryOperator &I, in foldMulSelectToNegate()
142 Instruction *InstCombinerImpl::visitMul(BinaryOperator &I) { in visitMul()
164 BinaryOperator *BO = BinaryOperator::CreateNeg(Op0, I.getName()); in visitMul()
180 BinaryOperator *Mul = cast<BinaryOperator>(I.getOperand(0)); in visitMul()
181 BinaryOperator *BO = BinaryOperator::CreateMul(NewOp, Shl); in visitMul()
193 BinaryOperator *Shl = BinaryOperator::CreateShl(NewOp, NewCst); in visitMul()
212 return BinaryOperator::CreateMul( in visitMul()
232 return BinaryOperator::CreateAdd(Builder.CreateMul(X, Op1), Mul); in visitMul()
242 return BinaryOperator::CreateMul(X, X); in visitMul()
245 return BinaryOperator::CreateMul(X, X); in visitMul()
252 return BinaryOperator::CreateMul(X, ConstantExpr::getNeg(Op1C)); in visitMul()
256 auto *NewMul = BinaryOperator::CreateMul(X, Y); in visitMul()
267 return BinaryOperator::CreateNeg(Builder.CreateMul(X, Y)); in visitMul()
273 BinaryOperator *Div = dyn_cast<BinaryOperator>(Op0); in visitMul()
277 Div = dyn_cast<BinaryOperator>(Op1); in visitMul()
290 return BinaryOperator::CreateNeg(X); in visitMul()
299 return BinaryOperator::CreateSub(XFreeze, Rem); in visitMul()
300 return BinaryOperator::CreateSub(Rem, XFreeze); in visitMul()
313 return BinaryOperator::CreateAnd(Op0, Op1); in visitMul()
319 BinaryOperator *BO = nullptr; in visitMul()
322 BO = BinaryOperator::CreateShl(Op1, Y); in visitMul()
325 BO = BinaryOperator::CreateShl(Op0, Y); in visitMul()
429 Instruction *InstCombinerImpl::foldFPSignBitOps(BinaryOperator &I) { in foldFPSignBitOps()
430 BinaryOperator::BinaryOps Opcode = I.getOpcode(); in foldFPSignBitOps()
440 return BinaryOperator::CreateWithCopiedFlags(Opcode, X, Y, &I); in foldFPSignBitOps()
445 return BinaryOperator::CreateWithCopiedFlags(Opcode, X, X, &I); in foldFPSignBitOps()
462 Instruction *InstCombinerImpl::visitFMul(BinaryOperator &I) { in visitFMul()
495 return BinaryOperator::CreateFMulFMF(X, ConstantExpr::getFNeg(C), &I); in visitFMul()
511 return BinaryOperator::CreateFDivFMF(CC1, X, &I); in visitFMul()
518 return BinaryOperator::CreateFMulFMF(X, CDivC1, &I); in visitFMul()
525 return BinaryOperator::CreateFDivFMF(X, C1DivC, &I); in visitFMul()
536 return BinaryOperator::CreateFAddFMF(XC, CC1, &I); in visitFMul()
544 return BinaryOperator::CreateFSubFMF(CC1, XC, &I); in visitFMul()
554 return BinaryOperator::CreateFDivFMF(NewFMul, Y, &I); in visitFMul()
576 return BinaryOperator::CreateFDivFMF(X, Y, &I); in visitFMul()
580 return BinaryOperator::CreateFDivFMF(X, Y, &I); in visitFMul()
590 return BinaryOperator::CreateFDivFMF(XX, Y, &I); in visitFMul()
595 return BinaryOperator::CreateFDivFMF(Y, XX, &I); in visitFMul()
645 return BinaryOperator::CreateFMulFMF(XX, Y, &I); in visitFMul()
650 return BinaryOperator::CreateFMulFMF(XX, Y, &I); in visitFMul()
670 return BinaryOperator::CreateFSubFMF(LogXTimesY, Y, &I); in visitFMul()
680 bool InstCombinerImpl::simplifyDivRemOfSelectWithZeroOp(BinaryOperator &I) { in simplifyDivRemOfSelectWithZeroOp()
780 Instruction *InstCombinerImpl::commonIDivTransforms(BinaryOperator &I) { in commonIDivTransforms()
817 return BinaryOperator::Create(I.getOpcode(), X, in commonIDivTransforms()
827 auto *NewDiv = BinaryOperator::Create(I.getOpcode(), X, in commonIDivTransforms()
835 auto *Mul = BinaryOperator::Create(Instruction::Mul, X, in commonIDivTransforms()
854 auto *BO = BinaryOperator::Create(I.getOpcode(), X, in commonIDivTransforms()
862 auto *Mul = BinaryOperator::Create(Instruction::Mul, X, in commonIDivTransforms()
902 return BinaryOperator::Create(I.getOpcode(), X, Op1); in commonIDivTransforms()
907 return BinaryOperator::CreateNSWShl(ConstantInt::get(Ty, 1), Y); in commonIDivTransforms()
909 return BinaryOperator::CreateNUWShl(ConstantInt::get(Ty, 1), Y); in commonIDivTransforms()
994 static Instruction *narrowUDivURem(BinaryOperator &I, in narrowUDivURem()
1029 Instruction *InstCombinerImpl::visitUDiv(BinaryOperator &I) { in visitUDiv()
1050 BinaryOperator *BO = BinaryOperator::CreateUDiv( in visitUDiv()
1083 return BinaryOperator::CreateUDiv(B, X); in visitUDiv()
1086 return BinaryOperator::CreateUDiv(A, X); in visitUDiv()
1099 Instruction *InstCombinerImpl::visitSDiv(BinaryOperator &I) { in visitSDiv()
1118 return BinaryOperator::CreateNeg(Op0); in visitSDiv()
1131 auto *AShr = BinaryOperator::CreateExactAShr( in visitSDiv()
1137 return BinaryOperator::CreateNeg(AShr, I.getName()); in visitSDiv()
1165 Instruction *BO = BinaryOperator::CreateSDiv(X, NegC); in visitSDiv()
1174 return BinaryOperator::CreateNSWNeg( in visitSDiv()
1193 auto *BO = BinaryOperator::CreateUDiv(Op0, Op1, I.getName()); in visitSDiv()
1204 return BinaryOperator::CreateNeg(Shr); in visitSDiv()
1212 auto *BO = BinaryOperator::CreateUDiv(Op0, Op1, I.getName()); in visitSDiv()
1222 static Instruction *foldFDivConstantDivisor(BinaryOperator &I) { in foldFDivConstantDivisor()
1230 return BinaryOperator::CreateFDivFMF(X, ConstantExpr::getFNeg(C), &I); in foldFDivConstantDivisor()
1249 return BinaryOperator::CreateFMulFMF(I.getOperand(0), RecipC, &I); in foldFDivConstantDivisor()
1253 static Instruction *foldFDivConstantDividend(BinaryOperator &I) { in foldFDivConstantDividend()
1261 return BinaryOperator::CreateFDivFMF(ConstantExpr::getFNeg(C), X, &I); in foldFDivConstantDividend()
1283 return BinaryOperator::CreateFDivFMF(NewC, X, &I); in foldFDivConstantDividend()
1287 static Instruction *foldFDivPowDivisor(BinaryOperator &I, in foldFDivPowDivisor()
1318 return BinaryOperator::CreateFMulFMF(Op0, Pow, &I); in foldFDivPowDivisor()
1328 return BinaryOperator::CreateFMulFMF(Op0, Pow, &I); in foldFDivPowDivisor()
1331 Instruction *InstCombinerImpl::visitFDiv(BinaryOperator &I) { in visitFDiv()
1371 return BinaryOperator::CreateFDivFMF(X, YZ, &I); in visitFDiv()
1377 return BinaryOperator::CreateFDivFMF(YZ, X, &I); in visitFDiv()
1386 return BinaryOperator::CreateFMulFMF(Y, Op0, &I); in visitFDiv()
1445 Instruction *InstCombinerImpl::commonIRemTransforms(BinaryOperator &I) { in commonIRemTransforms()
1496 Instruction *InstCombinerImpl::visitURem(BinaryOperator &I) { in visitURem()
1518 return BinaryOperator::CreateAnd(Op0, Add); in visitURem()
1549 Instruction *InstCombinerImpl::visitSRem(BinaryOperator &I) { in visitSRem()
1572 return BinaryOperator::CreateNSWNeg(Builder.CreateSRem(X, Y)); in visitSRem()
1580 return BinaryOperator::CreateURem(Op0, Op1, I.getName()); in visitSRem()
1621 Instruction *InstCombinerImpl::visitFRem(BinaryOperator &I) { in visitFRem()