Lines Matching refs:IC

121     InstCombiner &IC,  in modifyIntrinsicCall()  argument
135 CallInst *NewCall = IC.Builder.CreateCall(I, Args); in modifyIntrinsicCall()
143 IC.replaceInstUsesWith(InstToReplace, NewCall); in modifyIntrinsicCall()
147 auto RetValue = IC.eraseInstFromFunction(InstToReplace); in modifyIntrinsicCall()
149 IC.eraseInstFromFunction(OldIntr); in modifyIntrinsicCall()
157 IntrinsicInst &II, InstCombiner &IC) { in simplifyAMDGCNImageIntrinsic() argument
168 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
185 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
202 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
220 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
244 return modifyIntrinsicCall(II, *User, ImageDimIntr->Intr, IC, in simplifyAMDGCNImageIntrinsic()
306 II, II, II.getIntrinsicID(), IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
321 convertTo16Bit(*II.getOperand(OperandIndex), IC.Builder); in simplifyAMDGCNImageIntrinsic()
327 Args[ImageDimIntr->BiasIndex] = convertTo16Bit(*Bias, IC.Builder); in simplifyAMDGCNImageIntrinsic()
334 InstCombiner &IC) const { in canSimplifyLegacyMulToMul()
346 auto *TLI = &IC.getTargetLibraryInfo(); in canSimplifyLegacyMulToMul()
347 if (isKnownNeverInfOrNaN(Op0, IC.getDataLayout(), TLI, 0, in canSimplifyLegacyMulToMul()
348 &IC.getAssumptionCache(), &I, in canSimplifyLegacyMulToMul()
349 &IC.getDominatorTree()) && in canSimplifyLegacyMulToMul()
350 isKnownNeverInfOrNaN(Op1, IC.getDataLayout(), TLI, 0, in canSimplifyLegacyMulToMul()
351 &IC.getAssumptionCache(), &I, in canSimplifyLegacyMulToMul()
352 &IC.getDominatorTree())) { in canSimplifyLegacyMulToMul()
381 static APInt trimTrailingZerosInVector(InstCombiner &IC, Value *UseV, in trimTrailingZerosInVector() argument
434 static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC,
448 GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { in instCombineIntrinsic() argument
458 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
473 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getContext(), Val)); in instCombineIntrinsic()
504 return IC.replaceOperand(II, 0, SrcCI->getArgOperand(0)); in instCombineIntrinsic()
517 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
538 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
540 if (IC.getSimplifyQuery().isUndefValue(Src)) in instCombineIntrinsic()
541 return IC.replaceInstUsesWith(II, ConstantFP::getNaN(Ty)); in instCombineIntrinsic()
548 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
552 return IC.replaceInstUsesWith(II, ConstantFP::getZero(Ty)); in instCombineIntrinsic()
560 return IC.replaceInstUsesWith(II, Quieted); in instCombineIntrinsic()
567 return IC.replaceInstUsesWith(II, FoldedValue); in instCombineIntrinsic()
571 return IC.replaceInstUsesWith(II, ConstantFP::getNaN(Ty)); in instCombineIntrinsic()
587 return IC.replaceInstUsesWith( in instCombineIntrinsic()
595 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Exp)); in instCombineIntrinsic()
599 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
620 return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType())); in instCombineIntrinsic()
623 if (IC.getSimplifyQuery().isUndefValue(Src1)) in instCombineIntrinsic()
624 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), false)); in instCombineIntrinsic()
627 if (IC.getSimplifyQuery().isUndefValue(Src0)) { in instCombineIntrinsic()
628 Value *CmpMask = IC.Builder.CreateICmpNE( in instCombineIntrinsic()
630 return IC.replaceInstUsesWith(II, CmpMask); in instCombineIntrinsic()
650 return IC.replaceInstUsesWith(II, Folded); in instCombineIntrinsic()
655 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
668 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
678 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
689 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(Ty)); in instCombineIntrinsic()
694 return IC.replaceOperand( in instCombineIntrinsic()
704 return IC.replaceOperand( in instCombineIntrinsic()
723 Value *Shl = IC.Builder.CreateShl(Src, IntSize - Offset - Width); in instCombineIntrinsic()
724 Value *RightShift = Signed ? IC.Builder.CreateAShr(Shl, IntSize - Width) in instCombineIntrinsic()
725 : IC.Builder.CreateLShr(Shl, IntSize - Width); in instCombineIntrinsic()
727 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
730 Value *RightShift = Signed ? IC.Builder.CreateAShr(Src, Offset) in instCombineIntrinsic()
731 : IC.Builder.CreateLShr(Src, Offset); in instCombineIntrinsic()
734 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
751 IC.replaceOperand(II, I + 2, UndefValue::get(Src->getType())); in instCombineIntrinsic()
776 NewCall = IC.Builder.CreateMinNum(Src1, Src2); in instCombineIntrinsic()
778 NewCall = IC.Builder.CreateMinNum(Src0, Src2); in instCombineIntrinsic()
780 NewCall = IC.Builder.CreateMaxNum(Src0, Src1); in instCombineIntrinsic()
786 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
820 return IC.replaceInstUsesWith( in instCombineIntrinsic()
821 II, ConstantFP::get(IC.Builder.getContext(), Result)); in instCombineIntrinsic()
835 Value *NewCall = IC.Builder.CreateIntrinsic(IID, {X->getType()}, in instCombineIntrinsic()
861 return IC.replaceInstUsesWith( in instCombineIntrinsic()
862 II, IC.Builder.CreateSExt(CCmp, II.getType())); in instCombineIntrinsic()
875 CallInst *NewCall = IC.Builder.CreateCall(NewF, Args); in instCombineIntrinsic()
878 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
906 IC.replaceOperand(II, 1, ConstantInt::getNullValue(Src1->getType())); in instCombineIntrinsic()
907 IC.replaceOperand(II, 2, in instCombineIntrinsic()
957 IntegerType *CmpTy = IC.Builder.getIntNTy(NewWidth); in instCombineIntrinsic()
959 SrcLHS = IC.Builder.CreateSExt(SrcLHS, CmpTy); in instCombineIntrinsic()
960 SrcRHS = IC.Builder.CreateSExt(SrcRHS, CmpTy); in instCombineIntrinsic()
962 SrcLHS = IC.Builder.CreateZExt(SrcLHS, CmpTy); in instCombineIntrinsic()
963 SrcRHS = IC.Builder.CreateZExt(SrcRHS, CmpTy); in instCombineIntrinsic()
973 CallInst *NewCall = IC.Builder.CreateCall(NewF, Args); in instCombineIntrinsic()
975 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
983 return IC.replaceInstUsesWith(II, II.getArgOperand(1)); in instCombineIntrinsic()
990 return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType())); in instCombineIntrinsic()
1000 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
1008 return IC.eraseInstFromFunction(II); in instCombineIntrinsic()
1021 return IC.replaceOperand(II, 0, UndefValue::get(Old->getType())); in instCombineIntrinsic()
1048 return IC.replaceOperand(II, 0, UndefValue::get(VDstIn->getType())); in instCombineIntrinsic()
1053 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
1060 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
1074 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
1080 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
1087 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
1102 return IC.replaceInstUsesWith(II, ConstantFP::getZero(II.getType())); in instCombineIntrinsic()
1106 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) { in instCombineIntrinsic()
1107 auto *FMul = IC.Builder.CreateFMulFMF(Op0, Op1, &II); in instCombineIntrinsic()
1109 return IC.replaceInstUsesWith(II, FMul); in instCombineIntrinsic()
1126 auto *FAdd = IC.Builder.CreateFAddFMF(Zero, Op2, &II); in instCombineIntrinsic()
1128 return IC.replaceInstUsesWith(II, FAdd); in instCombineIntrinsic()
1133 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) { in instCombineIntrinsic()
1143 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
1146 return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType())); in instCombineIntrinsic()
1176 DemandedElts = trimTrailingZerosInVector(IC, II.getArgOperand(0), &II); in instCombineIntrinsic()
1181 if (simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, DMaskIdx, in instCombineIntrinsic()
1183 return IC.eraseInstFromFunction(II); in instCombineIntrinsic()
1191 return simplifyAMDGCNImageIntrinsic(ST, ImageDimIntr, II, IC); in instCombineIntrinsic()
1203 static Value *simplifyAMDGCNMemoryIntrinsicDemanded(InstCombiner &IC, in simplifyAMDGCNMemoryIntrinsicDemanded() argument
1215 IRBuilderBase::InsertPointGuard Guard(IC.Builder); in simplifyAMDGCNMemoryIntrinsicDemanded()
1216 IC.Builder.SetInsertPoint(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1265 IC.getDataLayout().getTypeSizeInBits(EltTy); in simplifyAMDGCNMemoryIntrinsicDemanded()
1269 Args[OffsetIdx] = IC.Builder.CreateAdd(Offset, OffsetAddVal); in simplifyAMDGCNMemoryIntrinsicDemanded()
1327 Args[0] = IC.Builder.CreateExtractElement(II.getOperand(0), EltMask[0]); in simplifyAMDGCNMemoryIntrinsicDemanded()
1329 Args[0] = IC.Builder.CreateShuffleVector(II.getOperand(0), EltMask); in simplifyAMDGCNMemoryIntrinsicDemanded()
1334 CallInst *NewCall = IC.Builder.CreateCall(NewIntrin, Args); in simplifyAMDGCNMemoryIntrinsicDemanded()
1340 return IC.Builder.CreateInsertElement(PoisonValue::get(IIVTy), NewCall, in simplifyAMDGCNMemoryIntrinsicDemanded()
1353 auto *Shuffle = IC.Builder.CreateShuffleVector(NewCall, EltMask); in simplifyAMDGCNMemoryIntrinsicDemanded()
1362 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts, in simplifyDemandedVectorEltsIntrinsic() argument
1383 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts); in simplifyDemandedVectorEltsIntrinsic()
1386 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, 0); in simplifyDemandedVectorEltsIntrinsic()