Lines Matching refs:II
104 IntrinsicInst &II, InstCombiner &IC) { in simplifyAMDGCNImageIntrinsic() argument
114 Value *Coord = II.getOperand(OperandIndex); in simplifyAMDGCNImageIntrinsic()
139 Type *CoordType = FloatCoord ? Type::getHalfTy(II.getContext()) in simplifyAMDGCNImageIntrinsic()
140 : Type::getInt16Ty(II.getContext()); in simplifyAMDGCNImageIntrinsic()
143 if (!Intrinsic::getIntrinsicSignature(II.getCalledFunction(), ArgTys)) in simplifyAMDGCNImageIntrinsic()
150 Intrinsic::getDeclaration(II.getModule(), II.getIntrinsicID(), ArgTys); in simplifyAMDGCNImageIntrinsic()
152 SmallVector<Value *, 8> Args(II.arg_operands()); in simplifyAMDGCNImageIntrinsic()
159 convertTo16Bit(*II.getOperand(OperandIndex), IC.Builder); in simplifyAMDGCNImageIntrinsic()
163 NewCall->takeName(&II); in simplifyAMDGCNImageIntrinsic()
164 NewCall->copyMetadata(II); in simplifyAMDGCNImageIntrinsic()
166 NewCall->copyFastMathFlags(&II); in simplifyAMDGCNImageIntrinsic()
167 return IC.replaceInstUsesWith(II, NewCall); in simplifyAMDGCNImageIntrinsic()
192 GCNTTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { in instCombineIntrinsic()
193 Intrinsic::ID IID = II.getIntrinsicID(); in instCombineIntrinsic()
196 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
200 Type *Ty = II.getType(); in instCombineIntrinsic()
202 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
205 if (II.isStrictFP()) in instCombineIntrinsic()
217 return IC.replaceInstUsesWith(II, ConstantFP::get(II.getContext(), Val)); in instCombineIntrinsic()
223 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
227 Type *Ty = II.getType(); in instCombineIntrinsic()
229 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
236 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
244 II, ConstantFP::get(II.getContext(), Significand)); in instCombineIntrinsic()
251 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Exp)); in instCombineIntrinsic()
255 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
278 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
279 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
283 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
287 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
288 ConstantInt::get(II.getType(), false)); in instCombineIntrinsic()
297 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), true)); in instCombineIntrinsic()
301 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), false)); in instCombineIntrinsic()
307 FCmp->takeName(&II); in instCombineIntrinsic()
308 return IC.replaceInstUsesWith(II, FCmp); in instCombineIntrinsic()
316 FCmp->takeName(&II); in instCombineIntrinsic()
317 return IC.replaceInstUsesWith(II, FCmp); in instCombineIntrinsic()
324 II, 1, ConstantInt::get(Src1->getType(), Mask & ~(S_NAN | Q_NAN))); in instCombineIntrinsic()
330 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
336 II.getCalledFunction(), in instCombineIntrinsic()
339 NewCall->takeName(&II); in instCombineIntrinsic()
340 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
360 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), Result)); in instCombineIntrinsic()
363 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
364 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
368 II.getType()->getScalarType()->getFltSemantics(); in instCombineIntrinsic()
376 ConstantVector::get({ConstantFP::get(II.getContext(), Val0), in instCombineIntrinsic()
377 ConstantFP::get(II.getContext(), Val1)}); in instCombineIntrinsic()
378 return IC.replaceInstUsesWith(II, Folded); in instCombineIntrinsic()
383 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
392 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
393 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
396 return IC.replaceInstUsesWith(II, UndefValue::get(II.getType())); in instCombineIntrinsic()
404 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
406 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
410 Type *Ty = II.getType(); in instCombineIntrinsic()
413 ConstantInt *CWidth = dyn_cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
417 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(Ty)); in instCombineIntrinsic()
423 II, 2, ConstantInt::get(CWidth->getType(), Width & (IntSize - 1))); in instCombineIntrinsic()
428 ConstantInt *COffset = dyn_cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
433 II, 1, in instCombineIntrinsic()
454 RightShift->takeName(&II); in instCombineIntrinsic()
455 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
461 RightShift->takeName(&II); in instCombineIntrinsic()
462 return IC.replaceInstUsesWith(II, RightShift); in instCombineIntrinsic()
466 ConstantInt *En = cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
476 Value *Src = II.getArgOperand(I + 2); in instCombineIntrinsic()
478 IC.replaceOperand(II, I + 2, UndefValue::get(Src->getType())); in instCombineIntrinsic()
485 return &II; in instCombineIntrinsic()
494 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
495 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
496 Value *Src2 = II.getArgOperand(2); in instCombineIntrinsic()
511 NewCall->copyFastMathFlags(&II); in instCombineIntrinsic()
512 NewCall->takeName(&II); in instCombineIntrinsic()
513 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
536 II.setArgOperand(0, Src0); in instCombineIntrinsic()
537 II.setArgOperand(1, Src1); in instCombineIntrinsic()
538 II.setArgOperand(2, Src2); in instCombineIntrinsic()
539 return &II; in instCombineIntrinsic()
548 II, ConstantFP::get(IC.Builder.getContext(), Result)); in instCombineIntrinsic()
557 const ConstantInt *CC = cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
567 Value *Src0 = II.getArgOperand(0); in instCombineIntrinsic()
568 Value *Src1 = II.getArgOperand(1); in instCombineIntrinsic()
575 II, ConstantExpr::getSExt(CCmp, II.getType())); in instCombineIntrinsic()
584 II.getModule(), Intrinsic::read_register, II.getType()); in instCombineIntrinsic()
585 Metadata *MDArgs[] = {MDString::get(II.getContext(), "exec")}; in instCombineIntrinsic()
586 MDNode *MD = MDNode::get(II.getContext(), MDArgs); in instCombineIntrinsic()
587 Value *Args[] = {MetadataAsValue::get(II.getContext(), MD)}; in instCombineIntrinsic()
591 NewCall->takeName(&II); in instCombineIntrinsic()
592 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
598 II.setArgOperand(0, Src1); in instCombineIntrinsic()
599 II.setArgOperand(1, Src0); in instCombineIntrinsic()
600 II.setArgOperand( in instCombineIntrinsic()
602 return &II; in instCombineIntrinsic()
620 IC.replaceOperand(II, 1, ConstantInt::getNullValue(Src1->getType())); in instCombineIntrinsic()
621 IC.replaceOperand(II, 2, in instCombineIntrinsic()
623 return &II; in instCombineIntrinsic()
684 II.getModule(), NewIID, {II.getType(), SrcLHS->getType()}); in instCombineIntrinsic()
688 NewCall->takeName(&II); in instCombineIntrinsic()
689 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
695 if (auto *Src = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
698 return IC.replaceInstUsesWith(II, Constant::getNullValue(II.getType())); in instCombineIntrinsic()
704 if (II.getType()->isIntegerTy(32)) in instCombineIntrinsic()
706 else if (!II.getType()->isIntegerTy(64)) in instCombineIntrinsic()
710 II.getModule(), Intrinsic::read_register, II.getType()); in instCombineIntrinsic()
711 Metadata *MDArgs[] = {MDString::get(II.getContext(), RegName)}; in instCombineIntrinsic()
712 MDNode *MD = MDNode::get(II.getContext(), MDArgs); in instCombineIntrinsic()
713 Value *Args[] = {MetadataAsValue::get(II.getContext(), MD)}; in instCombineIntrinsic()
717 NewCall->takeName(&II); in instCombineIntrinsic()
718 return IC.replaceInstUsesWith(II, NewCall); in instCombineIntrinsic()
725 if (!isa<Constant>(II.getArgOperand(0))) in instCombineIntrinsic()
728 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
731 const ConstantInt *C = dyn_cast<ConstantInt>(II.getArgOperand(0)); in instCombineIntrinsic()
736 return IC.eraseInstFromFunction(II); in instCombineIntrinsic()
739 Value *Old = II.getArgOperand(0); in instCombineIntrinsic()
741 auto *BC = cast<ConstantInt>(II.getArgOperand(5)); in instCombineIntrinsic()
742 auto *RM = cast<ConstantInt>(II.getArgOperand(3)); in instCombineIntrinsic()
743 auto *BM = cast<ConstantInt>(II.getArgOperand(4)); in instCombineIntrinsic()
749 return IC.replaceOperand(II, 0, UndefValue::get(Old->getType())); in instCombineIntrinsic()
754 Value *VDstIn = II.getArgOperand(0); in instCombineIntrinsic()
758 ConstantInt *FetchInvalid = cast<ConstantInt>(II.getArgOperand(4)); in instCombineIntrinsic()
759 ConstantInt *BoundCtrl = cast<ConstantInt>(II.getArgOperand(5)); in instCombineIntrinsic()
763 return IC.replaceOperand(II, 0, UndefValue::get(VDstIn->getType())); in instCombineIntrinsic()
768 if (Constant *C = dyn_cast<Constant>(II.getArgOperand(0))) { in instCombineIntrinsic()
769 return IC.replaceInstUsesWith(II, C); in instCombineIntrinsic()
774 Value *Src = II.getArgOperand(0); in instCombineIntrinsic()
776 if (SrcInst && SrcInst->getParent() != II.getParent()) in instCombineIntrinsic()
783 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
789 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
795 PatternMatch::m_Specific(II.getArgOperand(1))))) { in instCombineIntrinsic()
796 return IC.replaceInstUsesWith(II, Src); in instCombineIntrinsic()
805 Type *Ty = II.getType(); in instCombineIntrinsic()
806 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
807 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
812 return IC.replaceInstUsesWith(II, QNaN); in instCombineIntrinsic()
827 return IC.replaceInstUsesWith(II, Op0); in instCombineIntrinsic()
832 if (II.isStrictFP()) in instCombineIntrinsic()
840 return IC.replaceInstUsesWith(II, Quieted); in instCombineIntrinsic()
846 return IC.replaceInstUsesWith(II, Op0); in instCombineIntrinsic()
852 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
853 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
860 return IC.replaceInstUsesWith(II, ConstantFP::getNullValue(II.getType())); in instCombineIntrinsic()
865 auto *FMul = IC.Builder.CreateFMulFMF(Op0, Op1, &II); in instCombineIntrinsic()
866 FMul->takeName(&II); in instCombineIntrinsic()
867 return IC.replaceInstUsesWith(II, FMul); in instCombineIntrinsic()
872 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
873 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
874 Value *Op2 = II.getArgOperand(2); in instCombineIntrinsic()
883 auto *Zero = ConstantFP::getNullValue(II.getType()); in instCombineIntrinsic()
884 auto *FAdd = IC.Builder.CreateFAddFMF(Zero, Op2, &II); in instCombineIntrinsic()
885 FAdd->takeName(&II); in instCombineIntrinsic()
886 return IC.replaceInstUsesWith(II, FAdd); in instCombineIntrinsic()
892 II.setCalledOperand(Intrinsic::getDeclaration( in instCombineIntrinsic()
893 II.getModule(), Intrinsic::fma, II.getType())); in instCombineIntrinsic()
894 return &II; in instCombineIntrinsic()
900 AMDGPU::getImageDimIntrinsicInfo(II.getIntrinsicID())) { in instCombineIntrinsic()
901 return simplifyAMDGCNImageIntrinsic(ST, ImageDimIntr, II, IC); in instCombineIntrinsic()
913 IntrinsicInst &II, in simplifyAMDGCNMemoryIntrinsicDemanded() argument
917 auto *IIVTy = cast<FixedVectorType>(II.getType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
923 IC.Builder.SetInsertPoint(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
926 SmallVector<Value *, 16> Args(II.args()); in simplifyAMDGCNMemoryIntrinsicDemanded()
943 switch (II.getIntrinsicID()) { in simplifyAMDGCNMemoryIntrinsicDemanded()
968 auto *Offset = II.getArgOperand(OffsetIdx); in simplifyAMDGCNMemoryIntrinsicDemanded()
970 IC.getDataLayout().getTypeSizeInBits(II.getType()->getScalarType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
980 ConstantInt *DMask = cast<ConstantInt>(II.getArgOperand(DMaskIdx)); in simplifyAMDGCNMemoryIntrinsicDemanded()
1003 return UndefValue::get(II.getType()); in simplifyAMDGCNMemoryIntrinsicDemanded()
1007 II.setArgOperand(DMaskIdx, Args[DMaskIdx]); in simplifyAMDGCNMemoryIntrinsicDemanded()
1014 if (!Intrinsic::getIntrinsicSignature(II.getCalledFunction(), OverloadTys)) in simplifyAMDGCNMemoryIntrinsicDemanded()
1017 Module *M = II.getParent()->getParent()->getParent(); in simplifyAMDGCNMemoryIntrinsicDemanded()
1024 Intrinsic::getDeclaration(M, II.getIntrinsicID(), OverloadTys); in simplifyAMDGCNMemoryIntrinsicDemanded()
1027 NewCall->takeName(&II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1028 NewCall->copyMetadata(II); in simplifyAMDGCNMemoryIntrinsicDemanded()
1031 return IC.Builder.CreateInsertElement(UndefValue::get(II.getType()), in simplifyAMDGCNMemoryIntrinsicDemanded()
1051 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts, in simplifyDemandedVectorEltsIntrinsic() argument
1055 switch (II.getIntrinsicID()) { in simplifyDemandedVectorEltsIntrinsic()
1066 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts); in simplifyDemandedVectorEltsIntrinsic()
1068 if (getAMDGPUImageDMaskIntrinsic(II.getIntrinsicID())) { in simplifyDemandedVectorEltsIntrinsic()
1069 return simplifyAMDGCNMemoryIntrinsicDemanded(IC, II, DemandedElts, 0); in simplifyDemandedVectorEltsIntrinsic()