Lines Matching refs:Op0

159   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);  in visitMul()  local
164 BinaryOperator *BO = BinaryOperator::CreateNeg(Op0, I.getName()); in visitMul()
208 if (Op0->hasOneUse() && match(Op1, m_NegatedPower2())) { in visitMul()
211 if (Value *NegOp0 = Negator::Negate(/*IsNegation*/ true, Op0, *this)) in visitMul()
227 if (match(Op0, m_OneUse(m_Add(m_Value(X), m_Constant(C1))))) { in visitMul()
238 if (Op0 == Op1) { in visitMul()
240 SelectPatternFlavor SPF = matchSelectPattern(Op0, X, Y).Flavor; in visitMul()
244 if (match(Op0, m_Intrinsic<Intrinsic::abs>(m_Value(X)))) in visitMul()
251 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Constant(Op1C))) in visitMul()
255 if (match(Op0, m_Neg(m_Value(X))) && match(Op1, m_Neg(m_Value(Y)))) { in visitMul()
258 cast<OverflowingBinaryOperator>(Op0)->hasNoSignedWrap() && in visitMul()
273 BinaryOperator *Div = dyn_cast<BinaryOperator>(Op0); in visitMul()
276 Y = Op0; in visitMul()
311 (match(Op0, m_And(m_Value(), m_One())) && in visitMul()
313 return BinaryOperator::CreateAnd(Op0, Op1); in visitMul()
321 if (match(Op0, m_Shl(m_One(), m_Value(Y)))) { in visitMul()
323 ShlNSW = cast<ShlOperator>(Op0)->hasNoSignedWrap(); in visitMul()
325 BO = BinaryOperator::CreateShl(Op0, Y); in visitMul()
340 if (((match(Op0, m_ZExt(m_Value(X))) && match(Op1, m_ZExt(m_Value(Y)))) || in visitMul()
341 (match(Op0, m_SExt(m_Value(X))) && match(Op1, m_SExt(m_Value(Y))))) && in visitMul()
343 (Op0->hasOneUse() || Op1->hasOneUse() || X == Y)) { in visitMul()
350 if (((match(Op0, m_SExt(m_Value(X))) && match(Op1, m_ZExt(m_Value(Y)))) || in visitMul()
351 (match(Op0, m_ZExt(m_Value(X))) && match(Op1, m_SExt(m_Value(Y))))) && in visitMul()
353 (Op0->hasOneUse() || Op1->hasOneUse())) { in visitMul()
360 if (match(Op0, m_ZExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) in visitMul()
363 return SelectInst::Create(X, Op0, ConstantInt::getNullValue(Ty)); in visitMul()
368 if (match(Op0, m_SExt(m_Value(X))) && X->getType()->isIntOrIntVectorTy(1)) { in visitMul()
375 if (match(Op0, m_OneUse(m_AShr(m_Value(X), m_APInt(C)))) && in visitMul()
416 if (!I.hasNoSignedWrap() && willNotOverflowSignedMul(Op0, Op1, I)) { in visitMul()
421 if (!I.hasNoUnsignedWrap() && willNotOverflowUnsignedMul(Op0, Op1, I)) { in visitMul()
434 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldFPSignBitOps() local
439 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_FNeg(m_Value(Y)))) in foldFPSignBitOps()
444 if (Op0 == Op1 && match(Op0, m_FAbs(m_Value(X)))) in foldFPSignBitOps()
449 if (match(Op0, m_FAbs(m_Value(X))) && match(Op1, m_FAbs(m_Value(Y))) && in foldFPSignBitOps()
450 (Op0->hasOneUse() || Op1->hasOneUse())) { in foldFPSignBitOps()
487 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitFMul() local
489 return UnaryOperator::CreateFNegFMF(Op0, &I); in visitFMul()
494 if (match(Op0, m_FNeg(m_Value(X))) && match(Op1, m_Constant(C))) in visitFMul()
498 if (Value *V = SimplifySelectsFeedingBinaryOp(I, Op0, Op1)) in visitFMul()
506 if (match(Op0, m_OneUse(m_FDiv(m_Constant(C1), m_Value(X))))) { in visitFMul()
513 if (match(Op0, m_FDiv(m_Value(X), m_Constant(C1)))) { in visitFMul()
524 if (C1DivC && Op0->hasOneUse() && C1DivC->isNormalFP()) in visitFMul()
531 if (match(Op0, m_OneUse(m_FAdd(m_Value(X), m_Constant(C1))))) { in visitFMul()
539 if (match(Op0, m_OneUse(m_FSub(m_Constant(C1), m_Value(X))))) { in visitFMul()
560 if (I.hasNoNaNs() && match(Op0, m_OneUse(m_Sqrt(m_Value(X)))) && in visitFMul()
574 match(Op0, (m_FDiv(m_SpecificFP(1.0), m_Value(Y)))) && in visitFMul()
579 match(Y, m_Sqrt(m_Value(X))) && Op0 == X) in visitFMul()
584 if (I.hasNoNaNs() && I.hasNoSignedZeros() && Op0 == Op1 && in visitFMul()
585 Op0->hasNUses(2)) { in visitFMul()
588 if (match(Op0, m_FDiv(m_Value(X), m_Sqrt(m_Value(Y))))) { in visitFMul()
593 if (match(Op0, m_FDiv(m_Sqrt(m_Value(Y)), m_Value(X)))) { in visitFMul()
601 if (match(Op0, m_Intrinsic<Intrinsic::pow>(m_Value(X), m_Value(Y))) && in visitFMul()
609 if (match(Op0, m_Intrinsic<Intrinsic::powi>(m_Value(X), m_Value(Y))) && in visitFMul()
619 if (match(Op0, m_Intrinsic<Intrinsic::exp>(m_Value(X))) && in visitFMul()
627 if (match(Op0, m_Intrinsic<Intrinsic::exp2>(m_Value(X))) && in visitFMul()
642 if (match(Op0, m_OneUse(m_c_FMul(m_Specific(Op1), m_Value(Y)))) && in visitFMul()
647 if (match(Op1, m_OneUse(m_c_FMul(m_Specific(Op0), m_Value(Y)))) && in visitFMul()
648 Op0 != Y) { in visitFMul()
649 Value *XX = Builder.CreateFMulFMF(Op0, Op0, &I); in visitFMul()
657 if (match(Op0, m_OneUse(m_Intrinsic<Intrinsic::log2>( in visitFMul()
659 Log2 = cast<IntrinsicInst>(Op0); in visitFMul()
665 Y = Op0; in visitFMul()
784 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in commonIDivTransforms() local
800 if (match(Op0, m_ImmConstant()) && in commonIDivTransforms()
813 if ((IsSigned && match(Op0, m_SDiv(m_Value(X), m_APInt(C1)))) || in commonIDivTransforms()
814 (!IsSigned && match(Op0, m_UDiv(m_Value(X), m_APInt(C1))))) { in commonIDivTransforms()
821 if ((IsSigned && match(Op0, m_NSWMul(m_Value(X), m_APInt(C1)))) || in commonIDivTransforms()
822 (!IsSigned && match(Op0, m_NUWMul(m_Value(X), m_APInt(C1))))) { in commonIDivTransforms()
837 auto *OBO = cast<OverflowingBinaryOperator>(Op0); in commonIDivTransforms()
844 if ((IsSigned && match(Op0, m_NSWShl(m_Value(X), m_APInt(C1))) && in commonIDivTransforms()
846 (!IsSigned && match(Op0, m_NUWShl(m_Value(X), m_APInt(C1))) && in commonIDivTransforms()
864 auto *OBO = cast<OverflowingBinaryOperator>(Op0); in commonIDivTransforms()
876 if (match(Op0, m_One())) { in commonIDivTransforms()
883 Value *Inc = Builder.CreateAdd(F1, Op0); in commonIDivTransforms()
889 return new ZExtInst(Builder.CreateICmpEQ(Op1, Op0), Ty); in commonIDivTransforms()
899 if (match(Op0, m_Sub(m_Value(X), m_Value(Z)))) // (X - Z) / Y; Y = Op1 in commonIDivTransforms()
906 if (IsSigned && match(Op0, m_NSWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
908 if (!IsSigned && match(Op0, m_NUWShl(m_Specific(Op1), m_Value(Y)))) in commonIDivTransforms()
912 if (match(Op1, m_c_Mul(m_Specific(Op0), m_Value(Y)))) { in commonIDivTransforms()
1041 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitUDiv() local
1044 if (match(Op0, m_LShr(m_Value(X), m_APInt(C1))) && match(Op1, m_APInt(C2))) { in visitUDiv()
1049 bool IsExact = I.isExact() && match(Op0, m_Exact(m_Value())); in visitUDiv()
1062 Value *Cmp = Builder.CreateICmpUGE(Op0, Op1); in visitUDiv()
1067 Value *Cmp = Builder.CreateICmpEQ(Op0, ConstantInt::getAllOnesValue(Ty)); in visitUDiv()
1080 if (match(Op0, m_NUWMul(m_Value(A), m_Value(B)))) { in visitUDiv()
1093 I, Builder.CreateLShr(Op0, Res, I.getName(), I.isExact())); in visitUDiv()
1111 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitSDiv() local
1118 return BinaryOperator::CreateNeg(Op0); in visitSDiv()
1122 return new ZExtInst(Builder.CreateICmpEQ(Op0, Op1), Ty); in visitSDiv()
1132 Op0, ConstantExpr::getExactLogBase2(cast<Constant>(Op1)), I.getName()); in visitSDiv()
1146 if (match(Op0, m_OneUse(m_SExt(m_Value(Op0Src)))) && in visitSDiv()
1163 match(Op0, m_NSWSub(m_Zero(), m_Value(X)))) { in visitSDiv()
1190 if (MaskedValueIsZero(Op0, Mask, 0, &I)) { in visitSDiv()
1193 auto *BO = BinaryOperator::CreateUDiv(Op0, Op1, I.getName()); in visitSDiv()
1203 Value *Shr = Builder.CreateLShr(Op0, CNegLog2, I.getName(), I.isExact()); in visitSDiv()
1212 auto *BO = BinaryOperator::CreateUDiv(Op0, Op1, I.getName()); in visitSDiv()
1289 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in foldFDivPowDivisor() local
1318 return BinaryOperator::CreateFMulFMF(Op0, Pow, &I); in foldFDivPowDivisor()
1328 return BinaryOperator::CreateFMulFMF(Op0, Pow, &I); in foldFDivPowDivisor()
1354 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitFDiv() local
1355 if (isa<Constant>(Op0)) in visitFDiv()
1361 if (SelectInst *SI = dyn_cast<SelectInst>(Op0)) in visitFDiv()
1367 if (match(Op0, m_OneUse(m_FDiv(m_Value(X), m_Value(Y)))) && in visitFDiv()
1374 (!isa<Constant>(Y) || !isa<Constant>(Op0))) { in visitFDiv()
1376 Value *YZ = Builder.CreateFMulFMF(Y, Op0, &I); in visitFDiv()
1386 return BinaryOperator::CreateFMulFMF(Y, Op0, &I); in visitFDiv()
1389 if (I.hasAllowReassoc() && Op0->hasOneUse() && Op1->hasOneUse()) { in visitFDiv()
1393 bool IsTan = match(Op0, m_Intrinsic<Intrinsic::sin>(m_Value(X))) && in visitFDiv()
1396 !IsTan && match(Op0, m_Intrinsic<Intrinsic::cos>(m_Value(X))) && in visitFDiv()
1405 cast<CallBase>(Op0)->getCalledFunction()->getAttributes(); in visitFDiv()
1419 match(Op1, m_c_FMul(m_Specific(Op0), m_Value(Y)))) { in visitFDiv()
1449 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in commonIRemTransforms() local
1462 if (match(Op0, m_ImmConstant()) && in commonIRemTransforms()
1470 if (Instruction *Op0I = dyn_cast<Instruction>(Op0)) { in commonIRemTransforms()
1511 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitURem() local
1518 return BinaryOperator::CreateAnd(Op0, Add); in visitURem()
1522 if (match(Op0, m_One())) { in visitURem()
1530 Value *F0 = Builder.CreateFreeze(Op0, Op0->getName() + ".fr"); in visitURem()
1542 Value *Cmp = Builder.CreateICmpEQ(Op0, ConstantInt::getAllOnesValue(Ty)); in visitURem()
1543 return SelectInst::Create(Cmp, ConstantInt::getNullValue(Ty), Op0); in visitURem()
1561 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitSRem() local
1578 MaskedValueIsZero(Op0, Mask, 0, &I)) { in visitSRem()
1580 return BinaryOperator::CreateURem(Op0, Op1, I.getName()); in visitSRem()