Lines Matching defs:IC
121 InstCombiner &IC,
133 CallInst *NewCall = IC.Builder.CreateIntrinsic(NewIntr, ArgTys, Args);
141 IC.replaceInstUsesWith(InstToReplace, NewCall);
145 auto *RetValue = IC.eraseInstFromFunction(InstToReplace);
147 IC.eraseInstFromFunction(OldIntr);
155 IntrinsicInst &II, InstCombiner &IC) {
166 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
183 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
200 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
218 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
242 return modifyIntrinsicCall(II, *User, ImageDimIntr->Intr, IC,
304 II, II, II.getIntrinsicID(), IC, [&](auto &Args, auto &ArgTys) {
319 convertTo16Bit(*II.getOperand(OperandIndex), IC.Builder);
325 Args[ImageDimIntr->BiasIndex] = convertTo16Bit(*Bias, IC.Builder);
332 InstCombiner &IC) const {
344 SimplifyQuery SQ = IC.getSimplifyQuery().getWithInstruction(&I);
372 static APInt trimTrailingZerosInVector(InstCombiner &IC, Value *UseV,
425 static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
456 bool GCNTTIImpl::simplifyDemandedLaneMaskArg(InstCombiner &IC,
463 if (IC.SimplifyDemandedBits(&II, LaneArgIdx, DemandedMask, Known))
485 GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const {
495 return IC.replaceInstUsesWith(II, QNaN);
510 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getContext(), Val));
541 return IC.replaceOperand(II, 0, SrcCI->getArgOperand(0));
554 return IC.replaceInstUsesWith(II, QNaN);
575 return IC.replaceInstUsesWith(II, Src);
577 if (IC.getSimplifyQuery().isUndefValue(Src))
578 return IC.replaceInstUsesWith(II, ConstantFP::getNaN(Ty));
585 return IC.replaceInstUsesWith(II, C);
589 return IC.replaceInstUsesWith(II, ConstantFP::getZero(Ty));
597 return IC.replaceInstUsesWith(II, Quieted);
604 return IC.replaceInstUsesWith(II, FoldedValue);
608 return IC.replaceInstUsesWith(II, ConstantFP::getNaN(Ty));
624 return IC.replaceInstUsesWith(
632 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Exp));
636 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
657 return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType()));
660 if (IC.getSimplifyQuery().isUndefValue(Src1))
661 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), false));
664 if (IC.getSimplifyQuery().isUndefValue(Src0)) {
665 Value *CmpMask = IC.Builder.CreateICmpNE(
667 return IC.replaceInstUsesWith(II, CmpMask);
700 V = IC.Builder.CreateInsertElement(V, Src0, (uint64_t)0);
701 V = IC.Builder.CreateInsertElement(V, Src1, (uint64_t)1);
702 return IC.replaceInstUsesWith(II, V);
716 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
726 return IC.replaceInstUsesWith(II, Src);
737 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(Ty));
742 return IC.replaceOperand(
752 return IC.replaceOperand(
771 Value *Shl = IC.Builder.CreateShl(Src, IntSize - Offset - Width);
772 Value *RightShift = Signed ? IC.Builder.CreateAShr(Shl, IntSize - Width)
773 : IC.Builder.CreateLShr(Shl, IntSize - Width);
775 return IC.replaceInstUsesWith(II, RightShift);
778 Value *RightShift = Signed ? IC.Builder.CreateAShr(Src, Offset)
779 : IC.Builder.CreateLShr(Src, Offset);
782 return IC.replaceInstUsesWith(II, RightShift);
799 IC.replaceOperand(II, I + 2, UndefValue::get(Src->getType()));
824 V = IC.Builder.CreateMinNum(Src1, Src2);
826 V = IC.Builder.CreateMinNum(Src0, Src2);
828 V = IC.Builder.CreateMaxNum(Src0, Src1);
836 return IC.replaceInstUsesWith(II, V);
870 return IC.replaceInstUsesWith(
871 II, ConstantFP::get(IC.Builder.getContext(), Result));
884 Value *NewCall = IC.Builder.CreateIntrinsic(
913 return IC.replaceInstUsesWith(
914 II, IC.Builder.CreateSExt(CCmp, II.getType()));
925 CallInst *NewCall = IC.Builder.CreateIntrinsic(Intrinsic::read_register,
929 return IC.replaceInstUsesWith(II, NewCall);
957 IC.replaceOperand(II, 1, ConstantInt::getNullValue(Src1->getType()));
958 IC.replaceOperand(II, 2,
1008 IntegerType *CmpTy = IC.Builder.getIntNTy(NewWidth);
1010 SrcLHS = IC.Builder.CreateSExt(SrcLHS, CmpTy);
1011 SrcRHS = IC.Builder.CreateSExt(SrcRHS, CmpTy);
1013 SrcLHS = IC.Builder.CreateZExt(SrcLHS, CmpTy);
1014 SrcRHS = IC.Builder.CreateZExt(SrcRHS, CmpTy);
1022 CallInst *NewCall = IC.Builder.CreateIntrinsic(
1025 return IC.replaceInstUsesWith(II, NewCall);
1033 return IC.replaceInstUsesWith(II, II.getArgOperand(1));
1040 return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType()));
1048 Value *Call = IC.Builder.CreateZExt(
1049 IC.Builder.CreateIntrinsic(Intrinsic::amdgcn_ballot,
1050 {IC.Builder.getInt32Ty()},
1054 return IC.replaceInstUsesWith(II, Call);
1060 return IC.replaceInstUsesWith(
1069 return IC.replaceInstUsesWith(II, II.getArgOperand(0));
1077 return IC.eraseInstFromFunction(II);
1090 return IC.replaceOperand(II, 0, UndefValue::get(Old->getType()));
1117 return IC.replaceOperand(II, 0, UndefValue::get(VDstIn->getType()));
1125 return IC.replaceInstUsesWith(II, Src.get());
1128 simplifyDemandedLaneMaskArg(IC, II, 1))
1134 if (simplifyDemandedLaneMaskArg(IC, II, 1))
1147 return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType()));
1152 return IC.replaceInstUsesWith(II, QNaN);
1165 return IC.replaceInstUsesWith(II, Quieted);
1192 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getType(), Zero));
1208 return IC.replaceInstUsesWith(II, ConstantFP::get(Src->getType(), Result));
1219 return IC.replaceInstUsesWith(II, ConstantFP::getZero(II.getType()));
1223 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) {
1224 auto *FMul = IC.Builder.CreateFMulFMF(Op0, Op1, &II);
1226 return IC.replaceInstUsesWith(II, FMul);
1243 auto *FAdd = IC.Builder.CreateFAddFMF(Zero, Op2, &II);
1245 return IC.replaceInstUsesWith(II, FAdd);
1250 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) {
1260 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
1263 return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType()));
1291 DemandedElts = trimTrailingZerosInVector(IC, II.getArgOperand(0), &II);
1296 if (simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, DMaskIdx,
1298 return IC.eraseInstFromFunction(II);
1306 return IC.replaceInstUsesWith(II, Src);
1341 Src0 = IC.Builder.CreateExtractVector(
1343 IC.Builder.getInt64(0));
1348 Src1 = IC.Builder.CreateExtractVector(
1350 IC.Builder.getInt64(0));
1361 CallInst *NewII = IC.Builder.CreateIntrinsic(
1364 return IC.replaceInstUsesWith(II, NewII);
1369 return simplifyAMDGCNImageIntrinsic(ST, ImageDimIntr, II, IC);
1381 static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
1393 IRBuilderBase::InsertPointGuard Guard(IC.Builder);
1394 IC.Builder.SetInsertPoint(&II);
1443 IC.getDataLayout().getTypeSizeInBits(EltTy);
1447 Args[OffsetIdx] = IC.Builder.CreateAdd(Offset, OffsetAddVal);
1505 Args[0] = IC.Builder.CreateExtractElement(II.getOperand(0), EltMask[0]);
1507 Args[0] = IC.Builder.CreateShuffleVector(II.getOperand(0), EltMask);
1511 IC.Builder.CreateIntrinsic(II.getIntrinsicID(), OverloadTys, Args);
1517 return IC.Builder.CreateInsertElement(PoisonValue::get(IIVTy), NewCall,
1530 auto *Shuffle = IC.Builder.CreateShuffleVector(NewCall, EltMask);
1539 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts,
1557 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts);
1560 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, 0);