Lines Matching defs:IC

452                                                     InstCombinerImpl &IC) {
468 Result = IC.Builder.CreateLaunderInvariantGroup(StrippedInvariantGroupsArg);
470 Result = IC.Builder.CreateStripInvariantGroup(StrippedInvariantGroupsArg);
476 Result = IC.Builder.CreateAddrSpaceCast(Result, II.getType());
481 static Instruction *foldCttzCtlz(IntrinsicInst &II, InstCombinerImpl &IC) {
504 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(II.getType()));
511 return IC.replaceOperand(II, 1, IC.Builder.getTrue());
519 return IC.replaceOperand(II, 0, X);
523 return IC.replaceOperand(II, 0, X);
527 auto *Zext = IC.Builder.CreateZExt(X, II.getType());
529 IC.Builder.CreateBinaryIntrinsic(Intrinsic::cttz, Zext, Op1);
530 return IC.replaceInstUsesWith(II, CttzZext);
536 auto *Cttz = IC.Builder.CreateBinaryIntrinsic(Intrinsic::cttz, X,
537 IC.Builder.getTrue());
538 auto *ZextCttz = IC.Builder.CreateZExt(Cttz, II.getType());
539 return IC.replaceInstUsesWith(II, ZextCttz);
547 return IC.replaceOperand(II, 0, X);
550 return IC.replaceOperand(II, 0, X);
556 IC.Builder.CreateBinaryIntrinsic(Intrinsic::cttz, C, Op1);
564 IC.Builder.CreateBinaryIntrinsic(Intrinsic::cttz, C, Op1);
579 IC.Builder.CreateBinaryIntrinsic(Intrinsic::ctlz, C, Op1);
587 IC.Builder.CreateBinaryIntrinsic(Intrinsic::ctlz, C, Op1);
592 KnownBits Known = IC.computeKnownBits(Op0, 0, &II);
606 return IC.replaceInstUsesWith(II, C);
613 isKnownNonZero(Op0, IC.getSimplifyQuery().getWithInstruction(&II))) {
615 return IC.replaceOperand(II, 1, IC.Builder.getTrue());
631 static Instruction *foldCtpop(IntrinsicInst &II, InstCombinerImpl &IC) {
642 return IC.replaceOperand(II, 0, X);
648 return IC.replaceOperand(II, 0, X);
655 auto *Cttz = IC.Builder.CreateCall(F, {X, IC.Builder.getFalse()});
657 return IC.replaceInstUsesWith(II, IC.Builder.CreateSub(Bw, Cttz));
665 return CallInst::Create(F, {X, IC.Builder.getFalse()});
671 Value *NarrowPop = IC.Builder.CreateUnaryIntrinsic(Intrinsic::ctpop, X);
676 IC.computeKnownBits(Op0, Known, 0, &II);
690 if (IC.isKnownToBeAPowerOfTwo(Op0, /* OrZero */ true))
692 IC.Builder.CreateICmp(ICmpInst::ICMP_NE, Op0,
768 removeTriviallyEmptyRange(IntrinsicInst &EndI, InstCombinerImpl &IC,
781 IC.eraseInstFromFunction(*I);
782 IC.eraseInstFromFunction(EndI);