Lines Matching refs:II

157                              IntrinsicInst &II, InstCombiner &IC) {  in simplifyAMDGCNImageIntrinsic()  argument
162 dyn_cast<ConstantFP>(II.getOperand(ImageDimIntr->LodIndex))) { in simplifyAMDGCNImageIntrinsic()
168 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
179 dyn_cast<ConstantInt>(II.getOperand(ImageDimIntr->MipIndex))) { in simplifyAMDGCNImageIntrinsic()
185 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
196 dyn_cast<ConstantFP>(II.getOperand(ImageDimIntr->BiasIndex))) { in simplifyAMDGCNImageIntrinsic()
202 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
214 dyn_cast<ConstantInt>(II.getOperand(ImageDimIntr->OffsetIndex))) { in simplifyAMDGCNImageIntrinsic()
220 II, II, NewImageDimIntr->Intr, IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
238 if (II.hasOneUse()) { in simplifyAMDGCNImageIntrinsic()
239 Instruction *User = II.user_back(); in simplifyAMDGCNImageIntrinsic()
244 return modifyIntrinsicCall(II, *User, ImageDimIntr->Intr, IC, in simplifyAMDGCNImageIntrinsic()
269 Value *Coord = II.getOperand(OperandIndex); in simplifyAMDGCNImageIntrinsic()
291 Value *Bias = II.getOperand(ImageDimIntr->BiasIndex); in simplifyAMDGCNImageIntrinsic()
302 Type *CoordType = FloatCoord ? Type::getHalfTy(II.getContext()) in simplifyAMDGCNImageIntrinsic()
303 : Type::getInt16Ty(II.getContext()); in simplifyAMDGCNImageIntrinsic()
306 II, II, II.getIntrinsicID(), IC, [&](auto &Args, auto &ArgTys) { in simplifyAMDGCNImageIntrinsic()
313 ArgTys[ImageDimIntr->BiasTyArg] = Type::getHalfTy(II.getContext()); in simplifyAMDGCNImageIntrinsic()
321 convertTo16Bit(*II.getOperand(OperandIndex), IC.Builder); in simplifyAMDGCNImageIntrinsic()
326 Value *Bias = II.getOperand(ImageDimIntr->BiasIndex); in simplifyAMDGCNImageIntrinsic()
435 IntrinsicInst &II,
448 GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { in instCombineIntrinsic()
449 Intrinsic::ID IID = II.getIntrinsicID(); in instCombineIntrinsic()
452 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
456 Type *Ty = II.getType(); in instCombineIntrinsic()
458 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
461 if (II.isStrictFP()) in instCombineIntrinsic()
473 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getContext(), Val)); in instCombineIntrinsic()
476 FastMathFlags FMF = cast<FPMathOperator>(II).getFastMathFlags(); in instCombineIntrinsic()
501 II.setFastMathFlags(InnerFMF); in instCombineIntrinsic()
503 II.setCalledFunction(NewDecl); in instCombineIntrinsic()
504 return IC.replaceOperand(II, 0, SrcCI->getArgOperand(0)); in instCombineIntrinsic()
511 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
515 Type *Ty = II.getType(); in instCombineIntrinsic()
517 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
523 II.getModule(), Intrinsic::sqrt, {II.getType()}); in instCombineIntrinsic()
524 II.setCalledFunction(NewDecl); in instCombineIntrinsic()
525 return &II; in instCombineIntrinsic()
534 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
535 Type *Ty = II.getType(); in instCombineIntrinsic()
538 return IC.replaceInstUsesWith(II, 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()
555 if (II.isStrictFP()) 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()
580 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
588 II, ConstantFP::get(II.getContext(), Significand)); 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()
605 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
606 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
609 II.setCalledOperand(Intrinsic::getDeclaration( in instCombineIntrinsic()
610 II.getModule(), Intrinsic::is_fpclass, Src0->getType())); in instCombineIntrinsic()
613 II.setArgOperand(1, ConstantInt::get(Src1->getType(), in instCombineIntrinsic()
615 return &II; in instCombineIntrinsic()
620 return IC.replaceInstUsesWith(II, PoisonValue::get(II.getType())); in instCombineIntrinsic()
624 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), false)); in instCombineIntrinsic()
630 return IC.replaceInstUsesWith(II, CmpMask); in instCombineIntrinsic()
635 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
636 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
640 II.getType()->getScalarType()->getFltSemantics(); in instCombineIntrinsic()
648 ConstantVector::get({ConstantFP::get(II.getContext(), Val0), in instCombineIntrinsic()
649 ConstantFP::get(II.getContext(), Val1)}); in instCombineIntrinsic()
650 return IC.replaceInstUsesWith(II, Folded); in instCombineIntrinsic()
655 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
664 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
665 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
668 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
676 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
678 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
682 Type *Ty = II.getType(); in instCombineIntrinsic()
685 ConstantInt *CWidth = dyn_cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
689 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(Ty)); in instCombineIntrinsic()
695 II, 2, ConstantInt::get(CWidth->getType(), Width & (IntSize - 1))); in instCombineIntrinsic()
700 ConstantInt *COffset = dyn_cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
705 II, 1, in instCombineIntrinsic()
726 RightShift->takeName(&II); in instCombineIntrinsic()
727 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
733 RightShift->takeName(&II); in instCombineIntrinsic()
734 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
739 ConstantInt *En = cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
749 Value *Src = II.getArgOperand(I + 2); in instCombineIntrinsic()
751 IC.replaceOperand(II, I + 2, UndefValue::get(Src->getType())); in instCombineIntrinsic()
758 return &II; in instCombineIntrinsic()
767 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
768 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
769 Value *Src2 = II.getArgOperand(2); in instCombineIntrinsic()
784 NewCall->copyFastMathFlags(&II); in instCombineIntrinsic()
785 NewCall->takeName(&II); in instCombineIntrinsic()
786 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
809 II.setArgOperand(0, Src0); in instCombineIntrinsic()
810 II.setArgOperand(1, Src1); in instCombineIntrinsic()
811 II.setArgOperand(2, Src2); in instCombineIntrinsic()
812 return &II; in instCombineIntrinsic()
821 II, ConstantFP::get(IC.Builder.getContext(), Result)); in instCombineIntrinsic()
836 {X, Y, Z}, &II, II.getName()); in instCombineIntrinsic()
837 return new FPExtInst(NewCall, II.getType()); in instCombineIntrinsic()
844 const ConstantInt *CC = cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
854 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
855 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
862 II, IC.Builder.CreateSExt(CCmp, II.getType())); in instCombineIntrinsic()
871 II.getModule(), Intrinsic::read_register, II.getType()); in instCombineIntrinsic()
872 Metadata *MDArgs[] = {MDString::get(II.getContext(), "exec")}; in instCombineIntrinsic()
873 MDNode *MD = MDNode::get(II.getContext(), MDArgs); in instCombineIntrinsic()
874 Value *Args[] = {MetadataAsValue::get(II.getContext(), MD)}; in instCombineIntrinsic()
877 NewCall->takeName(&II); in instCombineIntrinsic()
878 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
884 II.setArgOperand(0, Src1); in instCombineIntrinsic()
885 II.setArgOperand(1, Src0); in instCombineIntrinsic()
886 II.setArgOperand( in instCombineIntrinsic()
888 return &II; in instCombineIntrinsic()
906 IC.replaceOperand(II, 1, ConstantInt::getNullValue(Src1->getType())); in instCombineIntrinsic()
907 IC.replaceOperand(II, 2, in instCombineIntrinsic()
909 return &II; in instCombineIntrinsic()
970 II.getModule(), NewIID, {II.getType(), SrcLHS->getType()}); in instCombineIntrinsic()
974 NewCall->takeName(&II); in instCombineIntrinsic()
975 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
983 return IC.replaceInstUsesWith(II, II.getArgOperand(1)); in instCombineIntrinsic()
987 if (auto *Src = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
990 return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType())); in instCombineIntrinsic()
997 if (!isa<Constant>(II.getArgOperand(0))) in instCombineIntrinsic()
1000 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
1003 const ConstantInt *C = dyn_cast<ConstantInt>(II.getArgOperand(0)); in instCombineIntrinsic()
1008 return IC.eraseInstFromFunction(II); in instCombineIntrinsic()
1011 Value *Old = II.getArgOperand(0); in instCombineIntrinsic()
1013 auto *BC = cast<ConstantInt>(II.getArgOperand(5)); in instCombineIntrinsic()
1014 auto *RM = cast<ConstantInt>(II.getArgOperand(3)); in instCombineIntrinsic()
1015 auto *BM = cast<ConstantInt>(II.getArgOperand(4)); in instCombineIntrinsic()
1021 return IC.replaceOperand(II, 0, UndefValue::get(Old->getType())); in instCombineIntrinsic()
1028 Value *VDstIn = II.getArgOperand(0); in instCombineIntrinsic()
1043 ConstantInt *FetchInvalid = cast<ConstantInt>(II.getArgOperand(FiIdx)); in instCombineIntrinsic()
1044 ConstantInt *BoundCtrl = cast<ConstantInt>(II.getArgOperand(BcIdx)); in instCombineIntrinsic()
1048 return IC.replaceOperand(II, 0, UndefValue::get(VDstIn->getType())); in instCombineIntrinsic()
1052 if (Constant *C = dyn_cast<Constant>(II.getArgOperand(0))) { in instCombineIntrinsic()
1053 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
1059 if (Constant *C = dyn_cast<Constant>(II.getArgOperand(0))) { in instCombineIntrinsic()
1060 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
1065 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
1067 if (SrcInst && SrcInst->getParent() != II.getParent()) in instCombineIntrinsic()
1074 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
1080 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
1086 PatternMatch::m_Specific(II.getArgOperand(1))))) { in instCombineIntrinsic()
1087 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
1094 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1095 Value *Op1 = II.getArgOperand(1); 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()
1108 FMul->takeName(&II); in instCombineIntrinsic()
1109 return IC.replaceInstUsesWith(II, FMul); in instCombineIntrinsic()
1114 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1115 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1116 Value *Op2 = II.getArgOperand(2); in instCombineIntrinsic()
1125 auto *Zero = ConstantFP::getZero(II.getType()); in instCombineIntrinsic()
1126 auto *FAdd = IC.Builder.CreateFAddFMF(Zero, Op2, &II); in instCombineIntrinsic()
1127 FAdd->takeName(&II); in instCombineIntrinsic()
1128 return IC.replaceInstUsesWith(II, FAdd); in instCombineIntrinsic()
1133 if (canSimplifyLegacyMulToMul(II, Op0, Op1, IC)) { in instCombineIntrinsic()
1134 II.setCalledOperand(Intrinsic::getDeclaration( in instCombineIntrinsic()
1135 II.getModule(), Intrinsic::fma, II.getType())); in instCombineIntrinsic()
1136 return &II; in instCombineIntrinsic()
1142 if (isa<UndefValue>(II.getArgOperand(0))) in instCombineIntrinsic()
1143 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
1145 if (isa<ConstantPointerNull>(II.getArgOperand(0))) in instCombineIntrinsic()
1146 return IC.replaceInstUsesWith(II, ConstantInt::getFalse(II.getType())); in instCombineIntrinsic()
1169 if (!isa<FixedVectorType>(II.getArgOperand(0)->getType())) in instCombineIntrinsic()
1174 DemandedElts = defaultComponentBroadcast(II.getArgOperand(0)); in instCombineIntrinsic()
1176 DemandedElts = trimTrailingZerosInVector(IC, II.getArgOperand(0), &II); in instCombineIntrinsic()
1180 int DMaskIdx = getAMDGPUImageDMaskIntrinsic(II.getIntrinsicID()) ? 1 : -1; in instCombineIntrinsic()
1181 if (simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, DMaskIdx, in instCombineIntrinsic()
1183 return IC.eraseInstFromFunction(II); in instCombineIntrinsic()
1190 AMDGPU::getImageDimIntrinsicInfo(II.getIntrinsicID())) { in instCombineIntrinsic()
1191 return simplifyAMDGCNImageIntrinsic(ST, ImageDimIntr, II, IC); in instCombineIntrinsic()
1204 IntrinsicInst &II, in simplifyAMDGCNMemoryIntrinsicDemanded() argument
1208 auto *IIVTy = cast<FixedVectorType>(IsLoad ? II.getType() in simplifyAMDGCNMemoryIntrinsicDemanded()
1209 : II.getOperand(0)->getType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1216 IC.Builder.SetInsertPoint(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1219 SmallVector<Value *, 16> Args(II.args()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1236 switch (II.getIntrinsicID()) { in simplifyAMDGCNMemoryIntrinsicDemanded()
1306 II.setArgOperand(DMaskIdx, Args[DMaskIdx]); in simplifyAMDGCNMemoryIntrinsicDemanded()
1313 if (!Intrinsic::getIntrinsicSignature(II.getCalledFunction(), OverloadTys)) 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()
1333 II.getModule(), II.getIntrinsicID(), OverloadTys); in simplifyAMDGCNMemoryIntrinsicDemanded()
1335 NewCall->takeName(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1336 NewCall->copyMetadata(II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1362 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts, in simplifyDemandedVectorEltsIntrinsic() argument
1366 switch (II.getIntrinsicID()) { in simplifyDemandedVectorEltsIntrinsic()
1383 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts); in simplifyDemandedVectorEltsIntrinsic()
1385 if (getAMDGPUImageDMaskIntrinsic(II.getIntrinsicID())) { in simplifyDemandedVectorEltsIntrinsic()
1386 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, 0); in simplifyDemandedVectorEltsIntrinsic()