Lines Matching defs:IC

121     InstCombiner &IC,
135 CallInst *NewCall = IC.Builder.CreateCall(I, Args);
143 IC.replaceInstUsesWith(InstToReplace, NewCall);
147 auto RetValue = IC.eraseInstFromFunction(InstToReplace);
149 IC.eraseInstFromFunction(OldIntr);
157 IntrinsicInst &II, InstCombiner &IC) {
168 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
185 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
202 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
220 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) {
244 return modifyIntrinsicCall(II, *User, ImageDimIntr->Intr, IC,
306 II, II, II.getIntrinsicID(), IC, [&](auto &Args, auto &ArgTys) {
321 convertTo16Bit(*II.getOperand(OperandIndex), IC.Builder);
327 Args[ImageDimIntr->BiasIndex] = convertTo16Bit(*Bias, IC.Builder);
334 InstCombiner &IC) const {
346 SimplifyQuery SQ = IC.getSimplifyQuery().getWithInstruction(&I);
377 static APInt trimTrailingZerosInVector(InstCombiner &IC, Value *UseV,
430 static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
444 GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const {
454 return IC.replaceInstUsesWith(II, QNaN);
469 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getContext(), Val));
500 return IC.replaceOperand(II, 0, SrcCI->getArgOperand(0));
513 return IC.replaceInstUsesWith(II, QNaN);
534 return IC.replaceInstUsesWith(II, Src);
536 if (IC.getSimplifyQuery().isUndefValue(Src))
537 return IC.replaceInstUsesWith(II, ConstantFP::getNaN(Ty));
544 return IC.replaceInstUsesWith(II, C);
548 return IC.replaceInstUsesWith(II, ConstantFP::getZero(Ty));
556 return IC.replaceInstUsesWith(II, Quieted);
563 return IC.replaceInstUsesWith(II, FoldedValue);
567 return IC.replaceInstUsesWith(II, ConstantFP::getNaN(Ty));
583 return IC.replaceInstUsesWith(
591 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Exp));
595 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
616 return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType()));
619 if (IC.getSimplifyQuery().isUndefValue(Src1))
620 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), false));
623 if (IC.getSimplifyQuery().isUndefValue(Src0)) {
624 Value *CmpMask = IC.Builder.CreateICmpNE(
626 return IC.replaceInstUsesWith(II, CmpMask);
646 return IC.replaceInstUsesWith(II, Folded);
651 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
664 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
674 return IC.replaceInstUsesWith(II, Src);
685 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(Ty));
690 return IC.replaceOperand(
700 return IC.replaceOperand(
719 Value *Shl = IC.Builder.CreateShl(Src, IntSize - Offset - Width);
720 Value *RightShift = Signed ? IC.Builder.CreateAShr(Shl, IntSize - Width)
721 : IC.Builder.CreateLShr(Shl, IntSize - Width);
723 return IC.replaceInstUsesWith(II, RightShift);
726 Value *RightShift = Signed ? IC.Builder.CreateAShr(Src, Offset)
727 : IC.Builder.CreateLShr(Src, Offset);
730 return IC.replaceInstUsesWith(II, RightShift);
747 IC.replaceOperand(II, I + 2, UndefValue::get(Src->getType()));
772 V = IC.Builder.CreateMinNum(Src1, Src2);
774 V = IC.Builder.CreateMinNum(Src0, Src2);
776 V = IC.Builder.CreateMaxNum(Src0, Src1);
784 return IC.replaceInstUsesWith(II, V);
818 return IC.replaceInstUsesWith(
819 II, ConstantFP::get(IC.Builder.getContext(), Result));
833 Value *NewCall = IC.Builder.CreateIntrinsic(IID, {X->getType()},
860 return IC.replaceInstUsesWith(
861 II, IC.Builder.CreateSExt(CCmp, II.getType()));
874 CallInst *NewCall = IC.Builder.CreateCall(NewF, Args);
877 return IC.replaceInstUsesWith(II, NewCall);
905 IC.replaceOperand(II, 1, ConstantInt::getNullValue(Src1->getType()));
906 IC.replaceOperand(II, 2,
956 IntegerType *CmpTy = IC.Builder.getIntNTy(NewWidth);
958 SrcLHS = IC.Builder.CreateSExt(SrcLHS, CmpTy);
959 SrcRHS = IC.Builder.CreateSExt(SrcRHS, CmpTy);
961 SrcLHS = IC.Builder.CreateZExt(SrcLHS, CmpTy);
962 SrcRHS = IC.Builder.CreateZExt(SrcRHS, CmpTy);
972 CallInst *NewCall = IC.Builder.CreateCall(NewF, Args);
974 return IC.replaceInstUsesWith(II, NewCall);
982 return IC.replaceInstUsesWith(II, II.getArgOperand(1));
989 return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType()));
997 Value *Call = IC.Builder.CreateZExt(
998 IC.Builder.CreateIntrinsic(Intrinsic::amdgcn_ballot,
999 {IC.Builder.getInt32Ty()},
1003 return IC.replaceInstUsesWith(II, Call);
1012 return IC.replaceInstUsesWith(II, II.getArgOperand(0));
1020 return IC.eraseInstFromFunction(II);
1033 return IC.replaceOperand(II, 0, UndefValue::get(Old->getType()));
1060 return IC.replaceOperand(II, 0, UndefValue::get(VDstIn->getType()));
1065 return IC.replaceInstUsesWith(II, C);
1072 return IC.replaceInstUsesWith(II, C);
1086 return IC.replaceInstUsesWith(II, Src);
1092 return IC.replaceInstUsesWith(II, Src);
1099 return IC.replaceInstUsesWith(II, Src);
1114 return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType()));
1119 return IC.replaceInstUsesWith(II, QNaN);
1132 return IC.replaceInstUsesWith(II, Quieted);
1159 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getType(), Zero));
1175 return IC.replaceInstUsesWith(II, ConstantFP::get(Src->getType(), Result));
1186 return IC.replaceInstUsesWith(II, ConstantFP::getZero(II.getType()));
1190 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) {
1191 auto *FMul = IC.Builder.CreateFMulFMF(Op0, Op1, &II);
1193 return IC.replaceInstUsesWith(II, FMul);
1210 auto *FAdd = IC.Builder.CreateFAddFMF(Zero, Op2, &II);
1212 return IC.replaceInstUsesWith(II, FAdd);
1217 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) {
1227 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType()));
1230 return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType()));
1258 DemandedElts = trimTrailingZerosInVector(IC, II.getArgOperand(0), &II);
1263 if (simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, DMaskIdx,
1265 return IC.eraseInstFromFunction(II);
1273 return simplifyAMDGCNImageIntrinsic(ST, ImageDimIntr, II, IC);
1285 static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
1297 IRBuilderBase::InsertPointGuard Guard(IC.Builder);
1298 IC.Builder.SetInsertPoint(&II);
1347 IC.getDataLayout().getTypeSizeInBits(EltTy);
1351 Args[OffsetIdx] = IC.Builder.CreateAdd(Offset, OffsetAddVal);
1409 Args[0] = IC.Builder.CreateExtractElement(II.getOperand(0), EltMask[0]);
1411 Args[0] = IC.Builder.CreateShuffleVector(II.getOperand(0), EltMask);
1416 CallInst *NewCall = IC.Builder.CreateCall(NewIntrin, Args);
1422 return IC.Builder.CreateInsertElement(PoisonValue::get(IIVTy), NewCall,
1435 auto *Shuffle = IC.Builder.CreateShuffleVector(NewCall, EltMask);
1444 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts,
1462 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts);
1465 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, 0);