Lines Matching refs:II

154                              IntrinsicInst &II, InstCombiner &IC) {  in simplifyAMDGCNImageIntrinsic()  argument
159 dyn_cast<ConstantFP>(II.getOperand(ImageDimIntr->LodIndex))) { in simplifyAMDGCNImageIntrinsic()
165 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
176 dyn_cast<ConstantInt>(II.getOperand(ImageDimIntr->MipIndex))) { in simplifyAMDGCNImageIntrinsic()
182 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
193 dyn_cast<ConstantFP>(II.getOperand(ImageDimIntr->BiasIndex))) { in simplifyAMDGCNImageIntrinsic()
199 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
211 dyn_cast<ConstantInt>(II.getOperand(ImageDimIntr->OffsetIndex))) { in simplifyAMDGCNImageIntrinsic()
217 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
235 if (II.hasOneUse()) { in simplifyAMDGCNImageIntrinsic()
236 Instruction *User = II.user_back(); in simplifyAMDGCNImageIntrinsic()
241 return modifyIntrinsicCall(II, *User, ImageDimIntr->Intr, IC, in simplifyAMDGCNImageIntrinsic()
266 Value *Coord = II.getOperand(OperandIndex); in simplifyAMDGCNImageIntrinsic()
288 Value *Bias = II.getOperand(ImageDimIntr->BiasIndex); in simplifyAMDGCNImageIntrinsic()
299 Type *CoordType = FloatCoord ? Type::getHalfTy(II.getContext()) in simplifyAMDGCNImageIntrinsic()
300 : Type::getInt16Ty(II.getContext()); in simplifyAMDGCNImageIntrinsic()
303 II, II, II.getIntrinsicID(), IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
310 ArgTys[ImageDimIntr->BiasTyArg] = Type::getHalfTy(II.getContext()); in simplifyAMDGCNImageIntrinsic()
318 convertTo16Bit(*II.getOperand(OperandIndex), IC.Builder); in simplifyAMDGCNImageIntrinsic()
323 Value *Bias = II.getOperand(ImageDimIntr->BiasIndex); in simplifyAMDGCNImageIntrinsic()
351 GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { in instCombineIntrinsic()
352 Intrinsic::ID IID = II.getIntrinsicID(); in instCombineIntrinsic()
355 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
359 Type *Ty = II.getType(); in instCombineIntrinsic()
361 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
364 if (II.isStrictFP()) in instCombineIntrinsic()
376 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getContext(), Val)); in instCombineIntrinsic()
382 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
386 Type *Ty = II.getType(); in instCombineIntrinsic()
388 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
395 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
403 II, ConstantFP::get(II.getContext(), Significand)); in instCombineIntrinsic()
410 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Exp)); in instCombineIntrinsic()
414 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
437 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
438 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
442 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
446 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
447 ConstantInt::get(II.getType(), false)); in instCombineIntrinsic()
456 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), true)); in instCombineIntrinsic()
460 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), false)); in instCombineIntrinsic()
466 FCmp->takeName(&II); in instCombineIntrinsic()
467 return IC.replaceInstUsesWith(II, FCmp); in instCombineIntrinsic()
475 FCmp->takeName(&II); in instCombineIntrinsic()
476 return IC.replaceInstUsesWith(II, FCmp); in instCombineIntrinsic()
483 II, 1, ConstantInt::get(Src1->getType(), Mask & ~(S_NAN | Q_NAN))); in instCombineIntrinsic()
489 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
495 II.getCalledFunction(), in instCombineIntrinsic()
498 NewCall->takeName(&II); in instCombineIntrinsic()
499 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
519 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Result)); in instCombineIntrinsic()
522 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
523 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
527 II.getType()->getScalarType()->getFltSemantics(); in instCombineIntrinsic()
535 ConstantVector::get({ConstantFP::get(II.getContext(), Val0), in instCombineIntrinsic()
536 ConstantFP::get(II.getContext(), Val1)}); in instCombineIntrinsic()
537 return IC.replaceInstUsesWith(II, Folded); in instCombineIntrinsic()
542 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
551 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
552 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
555 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
563 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
565 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
569 Type *Ty = II.getType(); in instCombineIntrinsic()
572 ConstantInt *CWidth = dyn_cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
576 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(Ty)); in instCombineIntrinsic()
582 II, 2, ConstantInt::get(CWidth->getType(), Width & (IntSize - 1))); in instCombineIntrinsic()
587 ConstantInt *COffset = dyn_cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
592 II, 1, in instCombineIntrinsic()
613 RightShift->takeName(&II); in instCombineIntrinsic()
614 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
620 RightShift->takeName(&II); in instCombineIntrinsic()
621 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
626 ConstantInt *En = cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
636 Value *Src = II.getArgOperand(I + 2); in instCombineIntrinsic()
638 IC.replaceOperand(II, I + 2, UndefValue::get(Src->getType())); in instCombineIntrinsic()
645 return &II; in instCombineIntrinsic()
654 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
655 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
656 Value *Src2 = II.getArgOperand(2); in instCombineIntrinsic()
671 NewCall->copyFastMathFlags(&II); in instCombineIntrinsic()
672 NewCall->takeName(&II); in instCombineIntrinsic()
673 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
696 II.setArgOperand(0, Src0); in instCombineIntrinsic()
697 II.setArgOperand(1, Src1); in instCombineIntrinsic()
698 II.setArgOperand(2, Src2); in instCombineIntrinsic()
699 return &II; in instCombineIntrinsic()
708 II, ConstantFP::get(IC.Builder.getContext(), Result)); in instCombineIntrinsic()
717 const ConstantInt *CC = cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
727 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
728 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
735 II, ConstantExpr::getSExt(CCmp, II.getType())); in instCombineIntrinsic()
744 II.getModule(), Intrinsic::read_register, II.getType()); in instCombineIntrinsic()
745 Metadata *MDArgs[] = {MDString::get(II.getContext(), "exec")}; in instCombineIntrinsic()
746 MDNode *MD = MDNode::get(II.getContext(), MDArgs); in instCombineIntrinsic()
747 Value *Args[] = {MetadataAsValue::get(II.getContext(), MD)}; in instCombineIntrinsic()
750 NewCall->takeName(&II); in instCombineIntrinsic()
751 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
757 II.setArgOperand(0, Src1); in instCombineIntrinsic()
758 II.setArgOperand(1, Src0); in instCombineIntrinsic()
759 II.setArgOperand( in instCombineIntrinsic()
761 return &II; in instCombineIntrinsic()
779 IC.replaceOperand(II, 1, ConstantInt::getNullValue(Src1->getType())); in instCombineIntrinsic()
780 IC.replaceOperand(II, 2, in instCombineIntrinsic()
782 return &II; in instCombineIntrinsic()
843 II.getModule(), NewIID, {II.getType(), SrcLHS->getType()}); in instCombineIntrinsic()
847 NewCall->takeName(&II); in instCombineIntrinsic()
848 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
854 if (auto *Src = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
857 return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType())); in instCombineIntrinsic()
863 if (II.getType()->isIntegerTy(32)) in instCombineIntrinsic()
865 else if (!II.getType()->isIntegerTy(64)) in instCombineIntrinsic()
869 II.getModule(), Intrinsic::read_register, II.getType()); in instCombineIntrinsic()
870 Metadata *MDArgs[] = {MDString::get(II.getContext(), RegName)}; in instCombineIntrinsic()
871 MDNode *MD = MDNode::get(II.getContext(), MDArgs); in instCombineIntrinsic()
872 Value *Args[] = {MetadataAsValue::get(II.getContext(), MD)}; in instCombineIntrinsic()
875 NewCall->takeName(&II); in instCombineIntrinsic()
876 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
883 if (!isa<Constant>(II.getArgOperand(0))) in instCombineIntrinsic()
886 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
889 const ConstantInt *C = dyn_cast<ConstantInt>(II.getArgOperand(0)); in instCombineIntrinsic()
894 return IC.eraseInstFromFunction(II); in instCombineIntrinsic()
897 Value *Old = II.getArgOperand(0); in instCombineIntrinsic()
899 auto *BC = cast<ConstantInt>(II.getArgOperand(5)); in instCombineIntrinsic()
900 auto *RM = cast<ConstantInt>(II.getArgOperand(3)); in instCombineIntrinsic()
901 auto *BM = cast<ConstantInt>(II.getArgOperand(4)); in instCombineIntrinsic()
907 return IC.replaceOperand(II, 0, UndefValue::get(Old->getType())); in instCombineIntrinsic()
912 Value *VDstIn = II.getArgOperand(0); in instCombineIntrinsic()
916 ConstantInt *FetchInvalid = cast<ConstantInt>(II.getArgOperand(4)); in instCombineIntrinsic()
917 ConstantInt *BoundCtrl = cast<ConstantInt>(II.getArgOperand(5)); in instCombineIntrinsic()
921 return IC.replaceOperand(II, 0, UndefValue::get(VDstIn->getType())); in instCombineIntrinsic()
925 if (Constant *C = dyn_cast<Constant>(II.getArgOperand(0))) { in instCombineIntrinsic()
926 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
932 if (Constant *C = dyn_cast<Constant>(II.getArgOperand(0))) { in instCombineIntrinsic()
933 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
938 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
940 if (SrcInst && SrcInst->getParent() != II.getParent()) in instCombineIntrinsic()
947 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
953 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
959 PatternMatch::m_Specific(II.getArgOperand(1))))) { in instCombineIntrinsic()
960 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
969 Type *Ty = II.getType(); in instCombineIntrinsic()
970 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
971 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
976 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
991 return IC.replaceInstUsesWith(II, Op0); in instCombineIntrinsic()
996 if (II.isStrictFP()) in instCombineIntrinsic()
1004 return IC.replaceInstUsesWith(II, Quieted); in instCombineIntrinsic()
1010 return IC.replaceInstUsesWith(II, Op0); in instCombineIntrinsic()
1016 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1017 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1024 return IC.replaceInstUsesWith(II, ConstantFP::getNullValue(II.getType())); in instCombineIntrinsic()
1029 auto *FMul = IC.Builder.CreateFMulFMF(Op0, Op1, &II); in instCombineIntrinsic()
1030 FMul->takeName(&II); in instCombineIntrinsic()
1031 return IC.replaceInstUsesWith(II, FMul); in instCombineIntrinsic()
1036 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1037 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1038 Value *Op2 = II.getArgOperand(2); in instCombineIntrinsic()
1047 auto *Zero = ConstantFP::getNullValue(II.getType()); in instCombineIntrinsic()
1048 auto *FAdd = IC.Builder.CreateFAddFMF(Zero, Op2, &II); in instCombineIntrinsic()
1049 FAdd->takeName(&II); in instCombineIntrinsic()
1050 return IC.replaceInstUsesWith(II, FAdd); in instCombineIntrinsic()
1056 II.setCalledOperand(Intrinsic::getDeclaration( in instCombineIntrinsic()
1057 II.getModule(), Intrinsic::fma, II.getType())); in instCombineIntrinsic()
1058 return &II; in instCombineIntrinsic()
1064 if (isa<UndefValue>(II.getArgOperand(0))) in instCombineIntrinsic()
1065 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
1067 if (isa<ConstantPointerNull>(II.getArgOperand(0))) in instCombineIntrinsic()
1068 return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType())); in instCombineIntrinsic()
1073 AMDGPU::getImageDimIntrinsicInfo(II.getIntrinsicID())) { in instCombineIntrinsic()
1074 return simplifyAMDGCNImageIntrinsic(ST, ImageDimIntr, II, IC); in instCombineIntrinsic()
1086 IntrinsicInst &II, in simplifyAMDGCNMemoryIntrinsicDemanded() argument
1090 auto *IIVTy = cast<FixedVectorType>(II.getType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1096 IC.Builder.SetInsertPoint(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1099 SmallVector<Value *, 16> Args(II.args()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1116 switch (II.getIntrinsicID()) { in simplifyAMDGCNMemoryIntrinsicDemanded()
1141 auto *Offset = II.getArgOperand(OffsetIdx); in simplifyAMDGCNMemoryIntrinsicDemanded()
1143 IC.getDataLayout().getTypeSizeInBits(II.getType()->getScalarType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1153 ConstantInt *DMask = cast<ConstantInt>(II.getArgOperand(DMaskIdx)); in simplifyAMDGCNMemoryIntrinsicDemanded()
1176 return UndefValue::get(II.getType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1180 II.setArgOperand(DMaskIdx, Args[DMaskIdx]); in simplifyAMDGCNMemoryIntrinsicDemanded()
1187 if (!Intrinsic::getIntrinsicSignature(II.getCalledFunction(), OverloadTys)) in simplifyAMDGCNMemoryIntrinsicDemanded()
1190 Module *M = II.getParent()->getParent()->getParent(); in simplifyAMDGCNMemoryIntrinsicDemanded()
1197 Intrinsic::getDeclaration(M, II.getIntrinsicID(), OverloadTys); in simplifyAMDGCNMemoryIntrinsicDemanded()
1200 NewCall->takeName(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1201 NewCall->copyMetadata(II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1204 return IC.Builder.CreateInsertElement(UndefValue::get(II.getType()), in simplifyAMDGCNMemoryIntrinsicDemanded()
1224 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts, in simplifyDemandedVectorEltsIntrinsic() argument
1228 switch (II.getIntrinsicID()) { in simplifyDemandedVectorEltsIntrinsic()
1239 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts); in simplifyDemandedVectorEltsIntrinsic()
1241 if (getAMDGPUImageDMaskIntrinsic(II.getIntrinsicID())) { in simplifyDemandedVectorEltsIntrinsic()
1242 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, 0); in simplifyDemandedVectorEltsIntrinsic()