Lines Matching refs:II
56 static Instruction *simplifyX86MaskedLoad(IntrinsicInst &II, InstCombiner &IC) { in simplifyX86MaskedLoad() argument
57 Value *Ptr = II.getOperand(0); in simplifyX86MaskedLoad()
58 Value *Mask = II.getOperand(1); in simplifyX86MaskedLoad()
59 Constant *ZeroVec = Constant::getNullValue(II.getType()); in simplifyX86MaskedLoad()
63 return IC.replaceInstUsesWith(II, ZeroVec); in simplifyX86MaskedLoad()
71 PointerType *VecPtrTy = PointerType::get(II.getType(), AddrSpace); in simplifyX86MaskedLoad()
76 II.getType(), PtrCast, Align(1), BoolMask, ZeroVec); in simplifyX86MaskedLoad()
77 return IC.replaceInstUsesWith(II, NewMaskedLoad); in simplifyX86MaskedLoad()
86 static bool simplifyX86MaskedStore(IntrinsicInst &II, InstCombiner &IC) { in simplifyX86MaskedStore() argument
87 Value *Ptr = II.getOperand(0); in simplifyX86MaskedStore()
88 Value *Mask = II.getOperand(1); in simplifyX86MaskedStore()
89 Value *Vec = II.getOperand(2); in simplifyX86MaskedStore()
93 IC.eraseInstFromFunction(II); in simplifyX86MaskedStore()
99 if (II.getIntrinsicID() == Intrinsic::x86_sse2_maskmov_dqu) in simplifyX86MaskedStore()
112 IC.eraseInstFromFunction(II); in simplifyX86MaskedStore()
119 static Value *simplifyX86immShift(const IntrinsicInst &II, in simplifyX86immShift() argument
125 switch (II.getIntrinsicID()) { in simplifyX86immShift()
200 Value *Vec = II.getArgOperand(0); in simplifyX86immShift()
201 Value *Amt = II.getArgOperand(1); in simplifyX86immShift()
214 llvm::computeKnownBits(Amt, II.getModule()->getDataLayout()); in simplifyX86immShift()
238 Amt, DemandedLower, II.getModule()->getDataLayout()); in simplifyX86immShift()
240 Amt, DemandedUpper, II.getModule()->getDataLayout()); in simplifyX86immShift()
301 static Value *simplifyX86varShift(const IntrinsicInst &II, in simplifyX86varShift() argument
306 switch (II.getIntrinsicID()) { in simplifyX86varShift()
348 Value *Vec = II.getArgOperand(0); in simplifyX86varShift()
349 Value *Amt = II.getArgOperand(1); in simplifyX86varShift()
350 auto *VT = cast<FixedVectorType>(II.getType()); in simplifyX86varShift()
358 llvm::computeKnownBits(Amt, II.getModule()->getDataLayout()); in simplifyX86varShift()
437 static Value *simplifyX86pack(IntrinsicInst &II, in simplifyX86pack() argument
439 Value *Arg0 = II.getArgOperand(0); in simplifyX86pack()
440 Value *Arg1 = II.getArgOperand(1); in simplifyX86pack()
441 Type *ResTy = II.getType(); in simplifyX86pack()
503 static Value *simplifyX86movmsk(const IntrinsicInst &II, in simplifyX86movmsk() argument
505 Value *Arg = II.getArgOperand(0); in simplifyX86movmsk()
506 Type *ResTy = II.getType(); in simplifyX86movmsk()
532 static Value *simplifyX86addcarry(const IntrinsicInst &II, in simplifyX86addcarry() argument
534 Value *CarryIn = II.getArgOperand(0); in simplifyX86addcarry()
535 Value *Op1 = II.getArgOperand(1); in simplifyX86addcarry()
536 Value *Op2 = II.getArgOperand(2); in simplifyX86addcarry()
537 Type *RetTy = II.getType(); in simplifyX86addcarry()
559 static Value *simplifyX86insertps(const IntrinsicInst &II, in simplifyX86insertps() argument
561 auto *CInt = dyn_cast<ConstantInt>(II.getArgOperand(2)); in simplifyX86insertps()
565 auto *VecTy = cast<FixedVectorType>(II.getType()); in simplifyX86insertps()
589 Value *V1 = II.getArgOperand(1); in simplifyX86insertps()
594 if ((II.getArgOperand(0) == II.getArgOperand(1)) || in simplifyX86insertps()
613 return Builder.CreateShuffleVector(II.getArgOperand(0), V1, ShuffleMask); in simplifyX86insertps()
618 static Value *simplifyX86extrq(IntrinsicInst &II, Value *Op0, in simplifyX86extrq() argument
622 Type *IntTy64 = Type::getInt64Ty(II.getContext()); in simplifyX86extrq()
656 return UndefValue::get(II.getType()); in simplifyX86extrq()
665 Type *IntTy8 = Type::getInt8Ty(II.getContext()); in simplifyX86extrq()
679 return Builder.CreateBitCast(SV, II.getType()); in simplifyX86extrq()
692 if (II.getIntrinsicID() == Intrinsic::x86_sse4a_extrq) { in simplifyX86extrq()
694 Module *M = II.getModule(); in simplifyX86extrq()
709 static Value *simplifyX86insertq(IntrinsicInst &II, Value *Op0, Value *Op1, in simplifyX86insertq() argument
733 return UndefValue::get(II.getType()); in simplifyX86insertq()
742 Type *IntTy8 = Type::getInt8Ty(II.getContext()); in simplifyX86insertq()
758 return Builder.CreateBitCast(SV, II.getType()); in simplifyX86insertq()
779 Type *IntTy64 = Type::getInt64Ty(II.getContext()); in simplifyX86insertq()
787 if (II.getIntrinsicID() == Intrinsic::x86_sse4a_insertq) { in simplifyX86insertq()
788 Type *IntTy8 = Type::getInt8Ty(II.getContext()); in simplifyX86insertq()
793 Module *M = II.getModule(); in simplifyX86insertq()
802 static Value *simplifyX86pshufb(const IntrinsicInst &II, in simplifyX86pshufb() argument
804 auto *V = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86pshufb()
808 auto *VecTy = cast<FixedVectorType>(II.getType()); in simplifyX86pshufb()
841 auto V1 = II.getArgOperand(0); in simplifyX86pshufb()
847 static Value *simplifyX86vpermilvar(const IntrinsicInst &II, in simplifyX86vpermilvar() argument
849 auto *V = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86vpermilvar()
853 auto *VecTy = cast<FixedVectorType>(II.getType()); in simplifyX86vpermilvar()
889 auto V1 = II.getArgOperand(0); in simplifyX86vpermilvar()
894 static Value *simplifyX86vpermv(const IntrinsicInst &II, in simplifyX86vpermv() argument
896 auto *V = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86vpermv()
900 auto *VecTy = cast<FixedVectorType>(II.getType()); in simplifyX86vpermv()
923 auto V1 = II.getArgOperand(0); in simplifyX86vpermv()
928 X86TTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const { in instCombineIntrinsic()
936 Intrinsic::ID IID = II.getIntrinsicID(); in instCombineIntrinsic()
943 if (auto *C = dyn_cast<ConstantInt>(II.getArgOperand(1))) { in instCombineIntrinsic()
947 unsigned BitWidth = II.getType()->getIntegerBitWidth(); in instCombineIntrinsic()
950 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0)); in instCombineIntrinsic()
953 if (auto *InC = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
958 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
959 ConstantInt::get(II.getType(), Result)); in instCombineIntrinsic()
969 if (auto *C = dyn_cast<ConstantInt>(II.getArgOperand(1))) { in instCombineIntrinsic()
971 unsigned BitWidth = II.getType()->getIntegerBitWidth(); in instCombineIntrinsic()
973 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
976 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0)); in instCombineIntrinsic()
979 if (auto *InC = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
982 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
983 ConstantInt::get(II.getType(), Result)); in instCombineIntrinsic()
990 if (auto *MaskC = dyn_cast<ConstantInt>(II.getArgOperand(1))) { in instCombineIntrinsic()
992 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0)); in instCombineIntrinsic()
995 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
1003 Value *Input = II.getArgOperand(0); in instCombineIntrinsic()
1004 Value *Masked = IC.Builder.CreateAnd(Input, II.getArgOperand(1)); in instCombineIntrinsic()
1005 Value *ShiftAmt = ConstantInt::get(II.getType(), MaskIdx); in instCombineIntrinsic()
1007 return IC.replaceInstUsesWith(II, Shifted); in instCombineIntrinsic()
1010 if (auto *SrcC = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
1027 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
1028 ConstantInt::get(II.getType(), Result)); in instCombineIntrinsic()
1034 if (auto *MaskC = dyn_cast<ConstantInt>(II.getArgOperand(1))) { in instCombineIntrinsic()
1036 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0)); in instCombineIntrinsic()
1039 return IC.replaceInstUsesWith(II, II.getArgOperand(0)); in instCombineIntrinsic()
1047 Value *Input = II.getArgOperand(0); in instCombineIntrinsic()
1048 Value *ShiftAmt = ConstantInt::get(II.getType(), MaskIdx); in instCombineIntrinsic()
1050 Value *Masked = IC.Builder.CreateAnd(Shifted, II.getArgOperand(1)); in instCombineIntrinsic()
1051 return IC.replaceInstUsesWith(II, Masked); in instCombineIntrinsic()
1054 if (auto *SrcC = dyn_cast<ConstantInt>(II.getArgOperand(0))) { in instCombineIntrinsic()
1071 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
1072 ConstantInt::get(II.getType(), Result)); in instCombineIntrinsic()
1103 Value *Arg = II.getArgOperand(0); in instCombineIntrinsic()
1106 return IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1118 if (Value *V = simplifyX86movmsk(II, IC.Builder)) { in instCombineIntrinsic()
1119 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1154 Value *Arg0 = II.getArgOperand(0); in instCombineIntrinsic()
1155 Value *Arg1 = II.getArgOperand(1); in instCombineIntrinsic()
1158 IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1162 IC.replaceOperand(II, 1, V); in instCombineIntrinsic()
1166 return &II; in instCombineIntrinsic()
1181 if (auto *R = dyn_cast<ConstantInt>(II.getArgOperand(2))) { in instCombineIntrinsic()
1183 Value *Arg0 = II.getArgOperand(0); in instCombineIntrinsic()
1184 Value *Arg1 = II.getArgOperand(1); in instCombineIntrinsic()
1208 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1223 if (auto *R = dyn_cast<ConstantInt>(II.getArgOperand(4))) { in instCombineIntrinsic()
1226 Value *Arg0 = II.getArgOperand(0); in instCombineIntrinsic()
1227 Value *Arg1 = II.getArgOperand(1); in instCombineIntrinsic()
1254 Value *Mask = II.getArgOperand(3); in instCombineIntrinsic()
1266 IC.Builder.CreateExtractElement(II.getArgOperand(2), (uint64_t)0); in instCombineIntrinsic()
1273 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1308 if (Value *V = simplifyX86immShift(II, IC.Builder)) { in instCombineIntrinsic()
1309 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1340 if (Value *V = simplifyX86immShift(II, IC.Builder)) { in instCombineIntrinsic()
1341 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1346 Value *Arg1 = II.getArgOperand(1); in instCombineIntrinsic()
1352 return IC.replaceOperand(II, 1, V); in instCombineIntrinsic()
1384 if (Value *V = simplifyX86varShift(II, IC.Builder)) { in instCombineIntrinsic()
1385 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1395 if (Value *V = simplifyX86pack(II, IC.Builder, true)) { in instCombineIntrinsic()
1396 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1406 if (Value *V = simplifyX86pack(II, IC.Builder, false)) { in instCombineIntrinsic()
1407 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1414 if (auto *C = dyn_cast<ConstantInt>(II.getArgOperand(2))) { in instCombineIntrinsic()
1418 Value *Arg0 = II.getArgOperand(0); in instCombineIntrinsic()
1419 Value *Arg1 = II.getArgOperand(1); in instCombineIntrinsic()
1428 IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1437 IC.replaceOperand(II, 1, V); in instCombineIntrinsic()
1444 return IC.replaceInstUsesWith(II, in instCombineIntrinsic()
1445 ConstantAggregateZero::get(II.getType())); in instCombineIntrinsic()
1449 return &II; in instCombineIntrinsic()
1456 if (Value *V = simplifyX86insertps(II, IC.Builder)) { in instCombineIntrinsic()
1457 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1462 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1463 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1480 if (Value *V = simplifyX86extrq(II, Op0, CILength, CIIndex, IC.Builder)) { in instCombineIntrinsic()
1481 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1488 IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1492 IC.replaceOperand(II, 1, V); in instCombineIntrinsic()
1496 return &II; in instCombineIntrinsic()
1504 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1510 auto *CILength = dyn_cast<ConstantInt>(II.getArgOperand(1)); in instCombineIntrinsic()
1511 auto *CIIndex = dyn_cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
1514 if (Value *V = simplifyX86extrq(II, Op0, CILength, CIIndex, IC.Builder)) { in instCombineIntrinsic()
1515 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1521 return IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1527 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1528 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1546 if (Value *V = simplifyX86insertq(II, Op0, Op1, Len, Idx, IC.Builder)) { in instCombineIntrinsic()
1547 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1554 return IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1563 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1564 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1572 auto *CILength = dyn_cast<ConstantInt>(II.getArgOperand(2)); in instCombineIntrinsic()
1573 auto *CIIndex = dyn_cast<ConstantInt>(II.getArgOperand(3)); in instCombineIntrinsic()
1579 if (Value *V = simplifyX86insertq(II, Op0, Op1, Len, Idx, IC.Builder)) { in instCombineIntrinsic()
1580 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1588 IC.replaceOperand(II, 0, V); in instCombineIntrinsic()
1592 IC.replaceOperand(II, 1, V); in instCombineIntrinsic()
1596 return &II; in instCombineIntrinsic()
1608 Value *Op0 = II.getArgOperand(0); in instCombineIntrinsic()
1609 Value *Op1 = II.getArgOperand(1); in instCombineIntrinsic()
1610 Value *Mask = II.getArgOperand(2); in instCombineIntrinsic()
1612 return IC.replaceInstUsesWith(II, Op0); in instCombineIntrinsic()
1617 return IC.replaceInstUsesWith(II, Op0); in instCombineIntrinsic()
1634 II.getType()->getPrimitiveSizeInBits() && in instCombineIntrinsic()
1640 cast<FixedVectorType>(II.getType())->getNumElements(); in instCombineIntrinsic()
1651 return new BitCastInst(Sel, II.getType()); in instCombineIntrinsic()
1661 if (Value *V = simplifyX86pshufb(II, IC.Builder)) { in instCombineIntrinsic()
1662 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1672 if (Value *V = simplifyX86vpermilvar(II, IC.Builder)) { in instCombineIntrinsic()
1673 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1691 if (Value *V = simplifyX86vpermv(II, IC.Builder)) { in instCombineIntrinsic()
1692 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1704 if (Instruction *I = simplifyX86MaskedLoad(II, IC)) { in instCombineIntrinsic()
1718 if (simplifyX86MaskedStore(II, IC)) { in instCombineIntrinsic()
1725 if (Value *V = simplifyX86addcarry(II, IC.Builder)) { in instCombineIntrinsic()
1726 return IC.replaceInstUsesWith(II, V); in instCombineIntrinsic()
1737 InstCombiner &IC, IntrinsicInst &II, APInt DemandedMask, KnownBits &Known, in simplifyDemandedUseBitsIntrinsic() argument
1739 switch (II.getIntrinsicID()) { in simplifyDemandedUseBitsIntrinsic()
1752 if (II.getIntrinsicID() == Intrinsic::x86_mmx_pmovmskb) { in simplifyDemandedUseBitsIntrinsic()
1755 auto *ArgType = cast<FixedVectorType>(II.getArgOperand(0)->getType()); in simplifyDemandedUseBitsIntrinsic()
1762 Type *VTy = II.getType(); in simplifyDemandedUseBitsIntrinsic()
1777 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts, in simplifyDemandedVectorEltsIntrinsic() argument
1781 unsigned VWidth = cast<FixedVectorType>(II.getType())->getNumElements(); in simplifyDemandedVectorEltsIntrinsic()
1782 switch (II.getIntrinsicID()) { in simplifyDemandedVectorEltsIntrinsic()
1792 IC.addToWorklist(&II); in simplifyDemandedVectorEltsIntrinsic()
1793 return ConstantAggregateZero::get(II.getType()); in simplifyDemandedVectorEltsIntrinsic()
1798 simplifyAndSetOp(&II, 0, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1807 simplifyAndSetOp(&II, 0, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1811 IC.addToWorklist(&II); in simplifyDemandedVectorEltsIntrinsic()
1812 return II.getArgOperand(0); in simplifyDemandedVectorEltsIntrinsic()
1827 simplifyAndSetOp(&II, 0, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1831 IC.addToWorklist(&II); in simplifyDemandedVectorEltsIntrinsic()
1832 return II.getArgOperand(0); in simplifyDemandedVectorEltsIntrinsic()
1837 simplifyAndSetOp(&II, 1, DemandedElts, UndefElts2); in simplifyDemandedVectorEltsIntrinsic()
1854 simplifyAndSetOp(&II, 0, DemandedElts2, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1858 IC.addToWorklist(&II); in simplifyDemandedVectorEltsIntrinsic()
1859 return II.getArgOperand(0); in simplifyDemandedVectorEltsIntrinsic()
1864 simplifyAndSetOp(&II, 1, DemandedElts, UndefElts2); in simplifyDemandedVectorEltsIntrinsic()
1888 simplifyAndSetOp(&II, 0, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1892 IC.addToWorklist(&II); in simplifyDemandedVectorEltsIntrinsic()
1893 return II.getArgOperand(0); in simplifyDemandedVectorEltsIntrinsic()
1898 simplifyAndSetOp(&II, 1, DemandedElts, UndefElts2); in simplifyDemandedVectorEltsIntrinsic()
1899 simplifyAndSetOp(&II, 2, DemandedElts, UndefElts3); in simplifyDemandedVectorEltsIntrinsic()
1921 IC.Builder.SetInsertPoint(&II); in simplifyDemandedVectorEltsIntrinsic()
1922 Value *Arg0 = II.getArgOperand(0), *Arg1 = II.getArgOperand(1); in simplifyDemandedVectorEltsIntrinsic()
1927 simplifyAndSetOp(&II, 0, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1928 simplifyAndSetOp(&II, 1, DemandedElts, UndefElts2); in simplifyDemandedVectorEltsIntrinsic()
1944 simplifyAndSetOp(&II, 0, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()
1945 simplifyAndSetOp(&II, 1, DemandedElts, UndefElts2); in simplifyDemandedVectorEltsIntrinsic()
1962 auto *Ty0 = II.getArgOperand(0)->getType(); in simplifyDemandedVectorEltsIntrinsic()
1987 simplifyAndSetOp(&II, OpNum, OpDemandedElts, OpUndefElts); in simplifyDemandedVectorEltsIntrinsic()
2015 simplifyAndSetOp(&II, 1, DemandedElts, UndefElts); in simplifyDemandedVectorEltsIntrinsic()