Lines Matching refs:IC
57 InstCombinerImpl &IC) { in foldSelectBinOpIdentity() argument
102 !cannotBeNegativeZero(Y, IC.getDataLayout(), &TLI)) in foldSelectBinOpIdentity()
109 return IC.replaceOperand(Sel, IsEq ? 1 : 2, Y); in foldSelectBinOpIdentity()
656 static Value *foldSelectICmpLshrAshr(const ICmpInst *IC, Value *TrueVal, in foldSelectICmpLshrAshr() argument
659 ICmpInst::Predicate Pred = IC->getPredicate(); in foldSelectICmpLshrAshr()
660 Value *CmpLHS = IC->getOperand(0); in foldSelectICmpLshrAshr()
661 Value *CmpRHS = IC->getOperand(1); in foldSelectICmpLshrAshr()
685 return Builder.CreateAShr(X, Y, IC->getName(), IsExact); in foldSelectICmpLshrAshr()
711 static Value *foldSelectICmpAndBinOp(const ICmpInst *IC, Value *TrueVal, in foldSelectICmpAndBinOp() argument
717 TrueVal->getType()->isVectorTy() != IC->getType()->isVectorTy()) in foldSelectICmpAndBinOp()
720 Value *CmpLHS = IC->getOperand(0); in foldSelectICmpAndBinOp()
721 Value *CmpRHS = IC->getOperand(1); in foldSelectICmpAndBinOp()
725 CmpInst::Predicate Pred = IC->getPredicate(); in foldSelectICmpAndBinOp()
726 if (IC->isEquality()) { in foldSelectICmpAndBinOp()
776 (IC->hasOneUse() + BinOp->hasOneUse())) in foldSelectICmpAndBinOp()
842 static Instruction *foldSelectZeroOrMul(SelectInst &SI, InstCombinerImpl &IC) { in foldSelectZeroOrMul() argument
878 auto *FrY = IC.InsertNewInstBefore(new FreezeInst(Y, Y->getName() + ".fr"), in foldSelectZeroOrMul()
880 IC.replaceOperand(*FalseValI, FalseValI->getOperand(0) == Y ? 0 : 1, FrY); in foldSelectZeroOrMul()
881 return IC.replaceInstUsesWith(SI, FalseValI); in foldSelectZeroOrMul()
1175 InstCombinerImpl &IC) { in canonicalizeSPF() argument
1194 IC.Builder.CreateBinaryIntrinsic(Intrinsic::abs, LHS, IntMinIsPoisonC); in canonicalizeSPF()
1197 return IC.Builder.CreateNeg(Abs); // Always without NSW flag! in canonicalizeSPF()
1219 return IC.Builder.CreateBinaryIntrinsic(IntrinsicID, LHS, RHS); in canonicalizeSPF()
1535 InstCombinerImpl &IC) { in tryToReuseConstantFromSelectInComparison() argument
1593 InstCombiner::BuilderTy::InsertPointGuard Guard(IC.Builder); in tryToReuseConstantFromSelectInComparison()
1594 IC.Builder.SetInsertPoint(&Sel); in tryToReuseConstantFromSelectInComparison()
1597 Value *NewCmp = IC.Builder.CreateICmp(Pred, X, FlippedStrictness->second, in tryToReuseConstantFromSelectInComparison()
1599 IC.replaceOperand(Sel, 0, NewCmp); in tryToReuseConstantFromSelectInComparison()
2154 InstCombinerImpl &IC) { in canonicalizeScalarSelectOfVecs() argument
2167 return IC.replaceOperand( in canonicalizeScalarSelectOfVecs()
2168 Sel, 0, IC.Builder.CreateVectorSplat(Ty->getElementCount(), Cond)); in canonicalizeScalarSelectOfVecs()
2578 static Instruction *foldSelectWithSRem(SelectInst &SI, InstCombinerImpl &IC, in foldSelectWithSRem() argument
2590 IC.isSignBitCheck(Pred, *C, TrueIfSigned))) in foldSelectWithSRem()
2611 IC.isKnownToBeAPowerOfTwo(Remainder, /*OrZero*/ true) && in foldSelectWithSRem()
2698 InstCombinerImpl &IC) { in foldSelectWithFCmpToFabs() argument
2717 Value *Fabs = IC.Builder.CreateUnaryIntrinsic(Intrinsic::fabs, X, &SI); in foldSelectWithFCmpToFabs()
2718 return IC.replaceInstUsesWith(SI, Fabs); in foldSelectWithFCmpToFabs()
2721 Value *Fabs = IC.Builder.CreateUnaryIntrinsic(Intrinsic::fabs, X, &SI); in foldSelectWithFCmpToFabs()
2722 return IC.replaceInstUsesWith(SI, Fabs); in foldSelectWithFCmpToFabs()
2764 Value *Fabs = IC.Builder.CreateUnaryIntrinsic(Intrinsic::fabs, X, &SI); in foldSelectWithFCmpToFabs()
2765 return IC.replaceInstUsesWith(SI, Fabs); in foldSelectWithFCmpToFabs()
2768 Value *Fabs = IC.Builder.CreateUnaryIntrinsic(Intrinsic::fabs, X, &SI); in foldSelectWithFCmpToFabs()
3346 static bool matchFMulByZeroIfResultEqZero(InstCombinerImpl &IC, Value *Cmp0, in matchFMulByZeroIfResultEqZero() argument
3357 return IC.fmulByZeroIsZero(MulRHS, FMF, &CtxI); in matchFMulByZeroIfResultEqZero()