Lines Matching refs:II

268 static Value *simplifyX86immShift(const IntrinsicInst &II,  in simplifyX86immShift()  argument
273 switch (II.getIntrinsicID()) { in simplifyX86immShift()
339 auto Arg1 = II.getArgOperand(1); in simplifyX86immShift()
366 auto Vec = II.getArgOperand(0); in simplifyX86immShift()
402 static Value *simplifyX86varShift(const IntrinsicInst &II, in simplifyX86varShift() argument
407 switch (II.getIntrinsicID()) { in simplifyX86varShift()
449 auto *CShift = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86varShift()
453 auto Vec = II.getArgOperand(0); in simplifyX86varShift()
454 auto VT = cast<VectorType>(II.getType()); in simplifyX86varShift()
526 static Value *simplifyX86pack(IntrinsicInst &II, bool IsSigned) { in simplifyX86pack() argument
527 Value *Arg0 = II.getArgOperand(0); in simplifyX86pack()
528 Value *Arg1 = II.getArgOperand(1); in simplifyX86pack()
529 Type *ResTy = II.getType(); in simplifyX86pack()
602 static Value *simplifyX86round(IntrinsicInst &II, in simplifyX86round() argument
605 Intrinsic::ID IntrinsicID = II.getIntrinsicID(); in simplifyX86round()
609 Arg = dyn_cast<ConstantInt>(II.getArgOperand(2)); in simplifyX86round()
612 Arg = dyn_cast<ConstantInt>(II.getArgOperand(4)); in simplifyX86round()
614 Arg = dyn_cast<ConstantInt>(II.getArgOperand(1)); in simplifyX86round()
623 Arg = dyn_cast<ConstantInt>(II.getArgOperand(4)); in simplifyX86round()
626 Arg = dyn_cast<ConstantInt>(II.getArgOperand(5)); in simplifyX86round()
647 Mask = II.getArgOperand(3); in simplifyX86round()
651 Dst = II.getArgOperand(2); in simplifyX86round()
653 Dst = II.getArgOperand(0); in simplifyX86round()
654 Src = Builder.CreateExtractElement(II.getArgOperand(1), (uint64_t)0); in simplifyX86round()
656 Src = II.getArgOperand(0); in simplifyX86round()
663 Dst = II.getArgOperand(2); in simplifyX86round()
664 Mask = II.getArgOperand(3); in simplifyX86round()
673 Value *Res = Builder.CreateUnaryIntrinsic(ID, Src, &II); in simplifyX86round()
695 Dst = II.getArgOperand(0); in simplifyX86round()
700 static Value *simplifyX86movmsk(const IntrinsicInst &II, in simplifyX86movmsk() argument
702 Value *Arg = II.getArgOperand(0); in simplifyX86movmsk()
703 Type *ResTy = II.getType(); in simplifyX86movmsk()
756 static Value *simplifyX86insertps(const IntrinsicInst &II, in simplifyX86insertps() argument
758 auto *CInt = dyn_cast<ConstantInt>(II.getArgOperand(2)); in simplifyX86insertps()
762 VectorType *VecTy = cast<VectorType>(II.getType()); in simplifyX86insertps()
786 Value *V1 = II.getArgOperand(1); in simplifyX86insertps()
791 if ((II.getArgOperand(0) == II.getArgOperand(1)) || in simplifyX86insertps()
810 return Builder.CreateShuffleVector(II.getArgOperand(0), V1, ShuffleMask); in simplifyX86insertps()
815 static Value *simplifyX86extrq(IntrinsicInst &II, Value *Op0, in simplifyX86extrq() argument
819 Type *IntTy64 = Type::getInt64Ty(II.getContext()); in simplifyX86extrq()
853 return UndefValue::get(II.getType()); in simplifyX86extrq()
862 Type *IntTy8 = Type::getInt8Ty(II.getContext()); in simplifyX86extrq()
863 Type *IntTy32 = Type::getInt32Ty(II.getContext()); in simplifyX86extrq()
879 return Builder.CreateBitCast(SV, II.getType()); in simplifyX86extrq()
892 if (II.getIntrinsicID() == Intrinsic::x86_sse4a_extrq) { in simplifyX86extrq()
894 Module *M = II.getModule(); in simplifyX86extrq()
909 static Value *simplifyX86insertq(IntrinsicInst &II, Value *Op0, Value *Op1, in simplifyX86insertq() argument
933 return UndefValue::get(II.getType()); in simplifyX86insertq()
942 Type *IntTy8 = Type::getInt8Ty(II.getContext()); in simplifyX86insertq()
943 Type *IntTy32 = Type::getInt32Ty(II.getContext()); in simplifyX86insertq()
960 return Builder.CreateBitCast(SV, II.getType()); in simplifyX86insertq()
981 Type *IntTy64 = Type::getInt64Ty(II.getContext()); in simplifyX86insertq()
989 if (II.getIntrinsicID() == Intrinsic::x86_sse4a_insertq) { in simplifyX86insertq()
990 Type *IntTy8 = Type::getInt8Ty(II.getContext()); in simplifyX86insertq()
995 Module *M = II.getModule(); in simplifyX86insertq()
1004 static Value *simplifyX86pshufb(const IntrinsicInst &II, in simplifyX86pshufb() argument
1006 Constant *V = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86pshufb()
1010 auto *VecTy = cast<VectorType>(II.getType()); in simplifyX86pshufb()
1011 auto *MaskEltTy = Type::getInt32Ty(II.getContext()); in simplifyX86pshufb()
1045 auto V1 = II.getArgOperand(0); in simplifyX86pshufb()
1051 static Value *simplifyX86vpermilvar(const IntrinsicInst &II, in simplifyX86vpermilvar() argument
1053 Constant *V = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86vpermilvar()
1057 auto *VecTy = cast<VectorType>(II.getType()); in simplifyX86vpermilvar()
1058 auto *MaskEltTy = Type::getInt32Ty(II.getContext()); in simplifyX86vpermilvar()
1095 auto V1 = II.getArgOperand(0); in simplifyX86vpermilvar()
1101 static Value *simplifyX86vpermv(const IntrinsicInst &II, in simplifyX86vpermv() argument
1103 auto *V = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyX86vpermv()
1107 auto *VecTy = cast<VectorType>(II.getType()); in simplifyX86vpermv()
1108 auto *MaskEltTy = Type::getInt32Ty(II.getContext()); in simplifyX86vpermv()
1132 auto V1 = II.getArgOperand(0); in simplifyX86vpermv()
1138 static Value *simplifyX86vpcom(const IntrinsicInst &II, in simplifyX86vpcom() argument
1141 if (auto *CInt = dyn_cast<ConstantInt>(II.getArgOperand(2))) { in simplifyX86vpcom()
1143 VectorType *VecTy = cast<VectorType>(II.getType()); in simplifyX86vpcom()
1169 if (Value *Cmp = Builder.CreateICmp(Pred, II.getArgOperand(0), in simplifyX86vpcom()
1170 II.getArgOperand(1))) in simplifyX86vpcom()
1192 static Value *simplifyMaskedLoad(const IntrinsicInst &II, in simplifyMaskedLoad() argument
1196 if (maskIsAllOneOrUndef(II.getArgOperand(2))) { in simplifyMaskedLoad()
1197 Value *LoadPtr = II.getArgOperand(0); in simplifyMaskedLoad()
1198 unsigned Alignment = cast<ConstantInt>(II.getArgOperand(1))->getZExtValue(); in simplifyMaskedLoad()
1205 static Instruction *simplifyMaskedStore(IntrinsicInst &II, InstCombiner &IC) { in simplifyMaskedStore() argument
1206 auto *ConstMask = dyn_cast<Constant>(II.getArgOperand(3)); in simplifyMaskedStore()
1212 return IC.eraseInstFromFunction(II); in simplifyMaskedStore()
1216 Value *StorePtr = II.getArgOperand(1); in simplifyMaskedStore()
1217 unsigned Alignment = cast<ConstantInt>(II.getArgOperand(2))->getZExtValue(); in simplifyMaskedStore()
1218 return new StoreInst(II.getArgOperand(0), StorePtr, false, Alignment); in simplifyMaskedStore()
1224 static Instruction *simplifyMaskedGather(IntrinsicInst &II, InstCombiner &IC) { in simplifyMaskedGather() argument
1226 auto *ConstMask = dyn_cast<Constant>(II.getArgOperand(2)); in simplifyMaskedGather()
1228 return IC.replaceInstUsesWith(II, II.getArgOperand(3)); in simplifyMaskedGather()
1241 static Instruction *simplifyInvariantGroupIntrinsic(IntrinsicInst &II, in simplifyInvariantGroupIntrinsic() argument
1243 auto *Arg = II.getArgOperand(0); in simplifyInvariantGroupIntrinsic()
1251 if (II.getIntrinsicID() == Intrinsic::launder_invariant_group) in simplifyInvariantGroupIntrinsic()
1253 else if (II.getIntrinsicID() == Intrinsic::strip_invariant_group) in simplifyInvariantGroupIntrinsic()
1259 II.getType()->getPointerAddressSpace()) in simplifyInvariantGroupIntrinsic()
1260 Result = IC.Builder.CreateAddrSpaceCast(Result, II.getType()); in simplifyInvariantGroupIntrinsic()
1261 if (Result->getType() != II.getType()) in simplifyInvariantGroupIntrinsic()
1262 Result = IC.Builder.CreateBitCast(Result, II.getType()); in simplifyInvariantGroupIntrinsic()
1267 static Instruction *simplifyMaskedScatter(IntrinsicInst &II, InstCombiner &IC) { in simplifyMaskedScatter() argument
1269 auto *ConstMask = dyn_cast<Constant>(II.getArgOperand(3)); in simplifyMaskedScatter()
1271 return IC.eraseInstFromFunction(II); in simplifyMaskedScatter()
1276 static Instruction *foldCttzCtlz(IntrinsicInst &II, InstCombiner &IC) { in foldCttzCtlz() argument
1277 assert((II.getIntrinsicID() == Intrinsic::cttz || in foldCttzCtlz()
1278 II.getIntrinsicID() == Intrinsic::ctlz) && in foldCttzCtlz()
1280 Value *Op0 = II.getArgOperand(0); in foldCttzCtlz()
1282 KnownBits Known = IC.computeKnownBits(Op0, 0, &II); in foldCttzCtlz()
1285 bool IsTZ = II.getIntrinsicID() == Intrinsic::cttz; in foldCttzCtlz()
1297 return IC.replaceInstUsesWith(II, C); in foldCttzCtlz()
1304 isKnownNonZero(Op0, IC.getDataLayout(), 0, &IC.getAssumptionCache(), &II, in foldCttzCtlz()
1306 if (!match(II.getArgOperand(1), m_One())) { in foldCttzCtlz()
1307 II.setOperand(1, IC.Builder.getTrue()); in foldCttzCtlz()
1308 return &II; in foldCttzCtlz()
1315 if (IT && IT->getBitWidth() != 1 && !II.getMetadata(LLVMContext::MD_range)) { in foldCttzCtlz()
1319 II.setMetadata(LLVMContext::MD_range, in foldCttzCtlz()
1320 MDNode::get(II.getContext(), LowAndHigh)); in foldCttzCtlz()
1321 return &II; in foldCttzCtlz()
1327 static Instruction *foldCtpop(IntrinsicInst &II, InstCombiner &IC) { in foldCtpop() argument
1328 assert(II.getIntrinsicID() == Intrinsic::ctpop && in foldCtpop()
1330 Value *Op0 = II.getArgOperand(0); in foldCtpop()
1338 IC.computeKnownBits(Op0, Known, 0, &II); in foldCtpop()
1344 if (IT->getBitWidth() != 1 && !II.getMetadata(LLVMContext::MD_range)) { in foldCtpop()
1348 II.setMetadata(LLVMContext::MD_range, in foldCtpop()
1349 MDNode::get(II.getContext(), LowAndHigh)); in foldCtpop()
1350 return &II; in foldCtpop()
1359 static Instruction *simplifyX86MaskedLoad(IntrinsicInst &II, InstCombiner &IC) { in simplifyX86MaskedLoad() argument
1360 Value *Ptr = II.getOperand(0); in simplifyX86MaskedLoad()
1361 Value *Mask = II.getOperand(1); in simplifyX86MaskedLoad()
1362 Constant *ZeroVec = Constant::getNullValue(II.getType()); in simplifyX86MaskedLoad()
1367 return IC.replaceInstUsesWith(II, ZeroVec); in simplifyX86MaskedLoad()
1379 PointerType *VecPtrTy = PointerType::get(II.getType(), AddrSpace); in simplifyX86MaskedLoad()
1389 return IC.replaceInstUsesWith(II, NewMaskedLoad); in simplifyX86MaskedLoad()
1395 static bool simplifyX86MaskedStore(IntrinsicInst &II, InstCombiner &IC) { in simplifyX86MaskedStore() argument
1396 Value *Ptr = II.getOperand(0); in simplifyX86MaskedStore()
1397 Value *Mask = II.getOperand(1); in simplifyX86MaskedStore()
1398 Value *Vec = II.getOperand(2); in simplifyX86MaskedStore()
1403 IC.eraseInstFromFunction(II); in simplifyX86MaskedStore()
1409 if (II.getIntrinsicID() == Intrinsic::x86_sse2_maskmov_dqu) in simplifyX86MaskedStore()
1432 IC.eraseInstFromFunction(II); in simplifyX86MaskedStore()
1461 static Value *simplifyNeonTbl1(const IntrinsicInst &II, in simplifyNeonTbl1() argument
1464 auto *C = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyNeonTbl1()
1468 auto *VecTy = cast<VectorType>(II.getType()); in simplifyNeonTbl1()
1490 auto *ShuffleMask = ConstantDataVector::get(II.getContext(), in simplifyNeonTbl1()
1492 auto *V1 = II.getArgOperand(0); in simplifyNeonTbl1()
1500 static Value *simplifyNeonVld1(const IntrinsicInst &II, in simplifyNeonVld1() argument
1503 auto *IntrAlign = dyn_cast<ConstantInt>(II.getArgOperand(1)); in simplifyNeonVld1()
1514 auto *BCastInst = Builder.CreateBitCast(II.getArgOperand(0), in simplifyNeonVld1()
1515 PointerType::get(II.getType(), 0)); in simplifyNeonVld1()
1563 static Instruction *SimplifyNVVMIntrinsic(IntrinsicInst *II, InstCombiner &IC) { in SimplifyNVVMIntrinsic() argument
1615 const SimplifyAction Action = [II]() -> SimplifyAction { in SimplifyNVVMIntrinsic()
1616 switch (II->getIntrinsicID()) { in SimplifyNVVMIntrinsic()
1768 II->getFunction()->getFnAttribute("nvptx-f32ftz").getValueAsString() == in SimplifyNVVMIntrinsic()
1777 SmallVector<Value *, 4> Args(II->arg_operands()); in SimplifyNVVMIntrinsic()
1780 Type *Tys[] = {II->getArgOperand(0)->getType()}; in SimplifyNVVMIntrinsic()
1782 Intrinsic::getDeclaration(II->getModule(), *Action.IID, Tys), Args); in SimplifyNVVMIntrinsic()
1787 return BinaryOperator::Create(*Action.BinaryOp, II->getArgOperand(0), in SimplifyNVVMIntrinsic()
1788 II->getArgOperand(1), II->getName()); in SimplifyNVVMIntrinsic()
1792 return CastInst::Create(*Action.CastOp, II->getArgOperand(0), II->getType(), in SimplifyNVVMIntrinsic()
1793 II->getName()); in SimplifyNVVMIntrinsic()
1803 Instruction::FDiv, ConstantFP::get(II->getArgOperand(0)->getType(), 1), in SimplifyNVVMIntrinsic()
1804 II->getArgOperand(0), II->getName()); in SimplifyNVVMIntrinsic()
1847 IntrinsicInst *II = dyn_cast<IntrinsicInst>(&CI); in visitCallInst() local
1848 if (!II) return visitCallSite(&CI); in visitCallInst()
1852 if (auto *MI = dyn_cast<AnyMemIntrinsic>(II)) { in visitCallInst()
1908 if (Changed) return II; in visitCallInst()
1911 if (Instruction *I = SimplifyNVVMIntrinsic(II, *this)) in visitCallInst()
1921 switch (II->getIntrinsicID()) { in visitCallInst()
1925 lowerObjectSizeCall(II, DL, &TLI, /*MustSucceed=*/false)) in visitCallInst()
1929 Value *IIOperand = II->getArgOperand(0); in visitCallInst()
1943 if (Value *SimplifiedMaskedOp = simplifyMaskedLoad(*II, Builder)) in visitCallInst()
1947 return simplifyMaskedStore(*II, *this); in visitCallInst()
1949 return simplifyMaskedGather(*II, *this); in visitCallInst()
1951 return simplifyMaskedScatter(*II, *this); in visitCallInst()
1954 if (auto *SkippedBarrier = simplifyInvariantGroupIntrinsic(*II, *this)) in visitCallInst()
1955 return replaceInstUsesWith(*II, SkippedBarrier); in visitCallInst()
1958 if (ConstantInt *Power = dyn_cast<ConstantInt>(II->getArgOperand(1))) { in visitCallInst()
1964 II->getArgOperand(0)); in visitCallInst()
1967 return BinaryOperator::CreateFMul(II->getArgOperand(0), in visitCallInst()
1968 II->getArgOperand(0)); in visitCallInst()
1974 if (auto *I = foldCttzCtlz(*II, *this)) in visitCallInst()
1979 if (auto *I = foldCtpop(*II, *this)) in visitCallInst()
1986 if (match(II->getArgOperand(2), m_APInt(SA))) { in visitCallInst()
1987 Value *Op0 = II->getArgOperand(0), *Op1 = II->getArgOperand(1); in visitCallInst()
1992 if (II->getIntrinsicID() == Intrinsic::fshr) in visitCallInst()
1999 Op0, ConstantInt::get(II->getType(), ShiftAmt)); in visitCallInst()
2005 Op1, ConstantInt::get(II->getType(), BitWidth - ShiftAmt)); in visitCallInst()
2011 unsigned BitWidth = II->getType()->getScalarSizeInBits(); in visitCallInst()
2016 if (SimplifyDemandedBits(II, 2, Op2Demanded, Op2Known)) in visitCallInst()
2031 IntrinsicIDToOverflowCheckFlavor(II->getIntrinsicID()); in visitCallInst()
2036 if (OptimizeOverflowCheck(OCF, II->getArgOperand(0), II->getArgOperand(1), in visitCallInst()
2037 *II, OperationResult, OverflowResult)) in visitCallInst()
2038 return CreateOverflowTuple(II, OperationResult, OverflowResult); in visitCallInst()
2050 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2051 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2052 Intrinsic::ID IID = II->getIntrinsicID(); in visitCallInst()
2060 OR = computeOverflowForUnsignedAdd(Arg0, Arg1, II); in visitCallInst()
2064 return replaceInstUsesWith(*II, in visitCallInst()
2065 ConstantInt::getAllOnesValue(II->getType())); in visitCallInst()
2068 OR = computeOverflowForUnsignedSub(Arg0, Arg1, II); in visitCallInst()
2072 return replaceInstUsesWith(*II, in visitCallInst()
2073 ConstantInt::getNullValue(II->getType())); in visitCallInst()
2076 if (willNotOverflowSignedAdd(Arg0, Arg1, *II)) in visitCallInst()
2080 if (willNotOverflowSignedSub(Arg0, Arg1, *II)) in visitCallInst()
2091 *II, Builder.CreateBinaryIntrinsic( in visitCallInst()
2104 if (Other->getIntrinsicID() == II->getIntrinsicID() && in visitCallInst()
2124 *II, Builder.CreateBinaryIntrinsic( in visitCallInst()
2125 IID, X, ConstantInt::get(II->getType(), NewVal))); in visitCallInst()
2137 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2138 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2139 Intrinsic::ID IID = II->getIntrinsicID(); in visitCallInst()
2163 Value *NewCall = Builder.CreateBinaryIntrinsic(NewIID, X, Y, II); in visitCallInst()
2165 FNeg->copyIRFlags(II); in visitCallInst()
2196 NewCall->copyIRFlags(II); in visitCallInst()
2197 return replaceInstUsesWith(*II, NewCall); in visitCallInst()
2205 if (II->isFast()) { in visitCallInst()
2207 Builder.setFastMathFlags(II->getFastMathFlags()); in visitCallInst()
2208 Value *Mul = Builder.CreateFMul(II->getArgOperand(0), in visitCallInst()
2209 II->getArgOperand(1)); in visitCallInst()
2210 Value *Add = Builder.CreateFAdd(Mul, II->getArgOperand(2)); in visitCallInst()
2211 Add->takeName(II); in visitCallInst()
2212 return replaceInstUsesWith(*II, Add); in visitCallInst()
2222 Value *Src0 = II->getArgOperand(0); in visitCallInst()
2223 Value *Src1 = II->getArgOperand(1); in visitCallInst()
2226 II->setArgOperand(0, X); in visitCallInst()
2227 II->setArgOperand(1, Y); in visitCallInst()
2228 return II; in visitCallInst()
2234 II->setArgOperand(0, X); in visitCallInst()
2235 II->setArgOperand(1, X); in visitCallInst()
2236 return II; in visitCallInst()
2241 auto *FAdd = BinaryOperator::CreateFAdd(Src0, II->getArgOperand(2)); in visitCallInst()
2242 FAdd->copyFastMathFlags(II); in visitCallInst()
2251 if (match(II->getArgOperand(0), in visitCallInst()
2253 CallInst *Call0 = Builder.CreateCall(II->getCalledFunction(), {LHS}); in visitCallInst()
2254 CallInst *Call1 = Builder.CreateCall(II->getCalledFunction(), {RHS}); in visitCallInst()
2267 if (match(II->getArgOperand(0), m_OneUse(m_FPExt(m_Value(ExtSrc))))) { in visitCallInst()
2270 Builder.CreateUnaryIntrinsic(II->getIntrinsicID(), ExtSrc, II); in visitCallInst()
2271 return new FPExtInst(NarrowII, II->getType()); in visitCallInst()
2278 Value *Src = II->getArgOperand(0); in visitCallInst()
2282 II->setArgOperand(0, X); in visitCallInst()
2283 return II; in visitCallInst()
2289 if (match(II->getArgOperand(0), m_OneUse(m_FNeg(m_Value(X))))) { in visitCallInst()
2291 Value *NewSin = Builder.CreateUnaryIntrinsic(Intrinsic::sin, X, II); in visitCallInst()
2293 FNeg->copyFastMathFlags(II); in visitCallInst()
2301 if (getOrEnforceKnownAlignment(II->getArgOperand(0), 16, DL, II, &AC, in visitCallInst()
2303 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(0), in visitCallInst()
2304 PointerType::getUnqual(II->getType())); in visitCallInst()
2311 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(0), in visitCallInst()
2312 PointerType::getUnqual(II->getType())); in visitCallInst()
2318 if (getOrEnforceKnownAlignment(II->getArgOperand(1), 16, DL, II, &AC, in visitCallInst()
2321 PointerType::getUnqual(II->getArgOperand(0)->getType()); in visitCallInst()
2322 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(1), OpPtrTy); in visitCallInst()
2323 return new StoreInst(II->getArgOperand(0), Ptr); in visitCallInst()
2329 Type *OpPtrTy = PointerType::getUnqual(II->getArgOperand(0)->getType()); in visitCallInst()
2330 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(1), OpPtrTy); in visitCallInst()
2331 return new StoreInst(II->getArgOperand(0), Ptr, false, 1); in visitCallInst()
2335 if (getOrEnforceKnownAlignment(II->getArgOperand(0), 16, DL, II, &AC, in visitCallInst()
2338 II->getType()->getVectorNumElements()); in visitCallInst()
2339 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(0), in visitCallInst()
2342 return new FPExtInst(Load, II->getType()); in visitCallInst()
2347 if (getOrEnforceKnownAlignment(II->getArgOperand(0), 32, DL, II, &AC, in visitCallInst()
2349 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(0), in visitCallInst()
2350 PointerType::getUnqual(II->getType())); in visitCallInst()
2356 if (getOrEnforceKnownAlignment(II->getArgOperand(1), 16, DL, II, &AC, in visitCallInst()
2359 II->getArgOperand(0)->getType()->getVectorNumElements()); in visitCallInst()
2360 Value *TOp = Builder.CreateFPTrunc(II->getArgOperand(0), VTy); in visitCallInst()
2362 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(1), OpPtrTy); in visitCallInst()
2368 if (getOrEnforceKnownAlignment(II->getArgOperand(1), 32, DL, II, &AC, in visitCallInst()
2371 PointerType::getUnqual(II->getArgOperand(0)->getType()); in visitCallInst()
2372 Value *Ptr = Builder.CreateBitCast(II->getArgOperand(1), OpPtrTy); in visitCallInst()
2373 return new StoreInst(II->getArgOperand(0), Ptr); in visitCallInst()
2382 if (auto *C = dyn_cast<ConstantInt>(II->getArgOperand(1))) { in visitCallInst()
2386 unsigned BitWidth = II->getType()->getIntegerBitWidth(); in visitCallInst()
2389 return replaceInstUsesWith(CI, ConstantInt::get(II->getType(), 0)); in visitCallInst()
2391 if (auto *InC = dyn_cast<ConstantInt>(II->getArgOperand(0))) { in visitCallInst()
2396 return replaceInstUsesWith(CI, ConstantInt::get(II->getType(), Result)); in visitCallInst()
2406 if (auto *C = dyn_cast<ConstantInt>(II->getArgOperand(1))) { in visitCallInst()
2408 unsigned BitWidth = II->getType()->getIntegerBitWidth(); in visitCallInst()
2410 return replaceInstUsesWith(CI, II->getArgOperand(0)); in visitCallInst()
2412 return replaceInstUsesWith(CI, ConstantInt::get(II->getType(), 0)); in visitCallInst()
2414 if (auto *InC = dyn_cast<ConstantInt>(II->getArgOperand(0))) { in visitCallInst()
2417 return replaceInstUsesWith(CI, ConstantInt::get(II->getType(), Result)); in visitCallInst()
2425 auto Arg = II->getArgOperand(0); in visitCallInst()
2427 auto RetType = cast<VectorType>(II->getType()); in visitCallInst()
2439 return replaceInstUsesWith(*II, ConstantAggregateZero::get(RetType)); in visitCallInst()
2452 VectorType::get(Type::getHalfTy(II->getContext()), RetWidth); in visitCallInst()
2456 return replaceInstUsesWith(*II, VectorFloats); in visitCallInst()
2461 II->setArgOperand(0, V); in visitCallInst()
2462 return II; in visitCallInst()
2493 Value *Arg = II->getArgOperand(0); in visitCallInst()
2496 II->setArgOperand(0, V); in visitCallInst()
2497 return II; in visitCallInst()
2514 if (Value *V = simplifyX86round(*II, Builder)) in visitCallInst()
2515 return replaceInstUsesWith(*II, V); in visitCallInst()
2525 if (Value *V = simplifyX86movmsk(*II, Builder)) in visitCallInst()
2526 return replaceInstUsesWith(*II, V); in visitCallInst()
2560 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2561 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2564 II->setArgOperand(0, V); in visitCallInst()
2568 II->setArgOperand(1, V); in visitCallInst()
2572 return II; in visitCallInst()
2582 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2583 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2600 II->setArgOperand(0, A); in visitCallInst()
2601 II->setArgOperand(1, B); in visitCallInst()
2602 return II; in visitCallInst()
2617 if (auto *R = dyn_cast<ConstantInt>(II->getArgOperand(2))) { in visitCallInst()
2619 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2620 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2623 switch (II->getIntrinsicID()) { in visitCallInst()
2643 return replaceInstUsesWith(*II, V); in visitCallInst()
2658 if (auto *R = dyn_cast<ConstantInt>(II->getArgOperand(4))) { in visitCallInst()
2661 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2662 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2667 switch (II->getIntrinsicID()) { in visitCallInst()
2688 Value *Mask = II->getArgOperand(3); in visitCallInst()
2698 Value *Passthru = Builder.CreateExtractElement(II->getArgOperand(2), in visitCallInst()
2706 return replaceInstUsesWith(*II, V); in visitCallInst()
2724 unsigned VWidth = II->getType()->getVectorNumElements(); in visitCallInst()
2727 if (Value *V = SimplifyDemandedVectorElts(II, AllOnesEltMask, UndefElts)) { in visitCallInst()
2728 if (V != II) in visitCallInst()
2729 return replaceInstUsesWith(*II, V); in visitCallInst()
2730 return II; in visitCallInst()
2736 unsigned VWidth = II->getType()->getVectorNumElements(); in visitCallInst()
2739 if (Value *V = SimplifyDemandedVectorElts(II, AllOnesEltMask, UndefElts)) { in visitCallInst()
2740 if (V != II) in visitCallInst()
2741 return replaceInstUsesWith(*II, V); in visitCallInst()
2742 return II; in visitCallInst()
2743 } else if (Value *V = simplifyX86round(*II, Builder)) in visitCallInst()
2744 return replaceInstUsesWith(*II, V); in visitCallInst()
2778 if (Value *V = simplifyX86immShift(*II, Builder)) in visitCallInst()
2779 return replaceInstUsesWith(*II, V); in visitCallInst()
2809 if (Value *V = simplifyX86immShift(*II, Builder)) in visitCallInst()
2810 return replaceInstUsesWith(*II, V); in visitCallInst()
2814 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2820 II->setArgOperand(1, V); in visitCallInst()
2821 return II; in visitCallInst()
2853 if (Value *V = simplifyX86varShift(*II, Builder)) in visitCallInst()
2854 return replaceInstUsesWith(*II, V); in visitCallInst()
2863 if (Value *V = simplifyX86pack(*II, true)) in visitCallInst()
2864 return replaceInstUsesWith(*II, V); in visitCallInst()
2873 if (Value *V = simplifyX86pack(*II, false)) in visitCallInst()
2874 return replaceInstUsesWith(*II, V); in visitCallInst()
2880 if (auto *C = dyn_cast<ConstantInt>(II->getArgOperand(2))) { in visitCallInst()
2884 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
2885 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
2893 II->setArgOperand(0, V); in visitCallInst()
2902 II->setArgOperand(1, V); in visitCallInst()
2909 return replaceInstUsesWith(*II, in visitCallInst()
2910 ConstantAggregateZero::get(II->getType())); in visitCallInst()
2913 return II; in visitCallInst()
2919 if (Value *V = simplifyX86insertps(*II, Builder)) in visitCallInst()
2920 return replaceInstUsesWith(*II, V); in visitCallInst()
2924 Value *Op0 = II->getArgOperand(0); in visitCallInst()
2925 Value *Op1 = II->getArgOperand(1); in visitCallInst()
2942 if (Value *V = simplifyX86extrq(*II, Op0, CILength, CIIndex, Builder)) in visitCallInst()
2943 return replaceInstUsesWith(*II, V); in visitCallInst()
2949 II->setArgOperand(0, V); in visitCallInst()
2953 II->setArgOperand(1, V); in visitCallInst()
2957 return II; in visitCallInst()
2964 Value *Op0 = II->getArgOperand(0); in visitCallInst()
2970 ConstantInt *CILength = dyn_cast<ConstantInt>(II->getArgOperand(1)); in visitCallInst()
2971 ConstantInt *CIIndex = dyn_cast<ConstantInt>(II->getArgOperand(2)); in visitCallInst()
2974 if (Value *V = simplifyX86extrq(*II, Op0, CILength, CIIndex, Builder)) in visitCallInst()
2975 return replaceInstUsesWith(*II, V); in visitCallInst()
2980 II->setArgOperand(0, V); in visitCallInst()
2981 return II; in visitCallInst()
2987 Value *Op0 = II->getArgOperand(0); in visitCallInst()
2988 Value *Op1 = II->getArgOperand(1); in visitCallInst()
3006 if (Value *V = simplifyX86insertq(*II, Op0, Op1, Len, Idx, Builder)) in visitCallInst()
3007 return replaceInstUsesWith(*II, V); in visitCallInst()
3013 II->setArgOperand(0, V); in visitCallInst()
3014 return II; in visitCallInst()
3023 Value *Op0 = II->getArgOperand(0); in visitCallInst()
3024 Value *Op1 = II->getArgOperand(1); in visitCallInst()
3032 ConstantInt *CILength = dyn_cast<ConstantInt>(II->getArgOperand(2)); in visitCallInst()
3033 ConstantInt *CIIndex = dyn_cast<ConstantInt>(II->getArgOperand(3)); in visitCallInst()
3039 if (Value *V = simplifyX86insertq(*II, Op0, Op1, Len, Idx, Builder)) in visitCallInst()
3040 return replaceInstUsesWith(*II, V); in visitCallInst()
3047 II->setArgOperand(0, V); in visitCallInst()
3051 II->setArgOperand(1, V); in visitCallInst()
3055 return II; in visitCallInst()
3066 Value *Op0 = II->getArgOperand(0); in visitCallInst()
3067 Value *Op1 = II->getArgOperand(1); in visitCallInst()
3068 Value *Mask = II->getArgOperand(2); in visitCallInst()
3090 II->getType()->getPrimitiveSizeInBits() && in visitCallInst()
3094 unsigned NumOperandElts = II->getType()->getVectorNumElements(); in visitCallInst()
3104 return new BitCastInst(Sel, II->getType()); in visitCallInst()
3114 if (Value *V = simplifyX86pshufb(*II, Builder)) in visitCallInst()
3115 return replaceInstUsesWith(*II, V); in visitCallInst()
3124 if (Value *V = simplifyX86vpermilvar(*II, Builder)) in visitCallInst()
3125 return replaceInstUsesWith(*II, V); in visitCallInst()
3142 if (Value *V = simplifyX86vpermv(*II, Builder)) in visitCallInst()
3143 return replaceInstUsesWith(*II, V); in visitCallInst()
3154 if (Instruction *I = simplifyX86MaskedLoad(*II, *this)) in visitCallInst()
3167 if (simplifyX86MaskedStore(*II, *this)) in visitCallInst()
3175 if (Value *V = simplifyX86vpcom(*II, Builder, true)) in visitCallInst()
3176 return replaceInstUsesWith(*II, V); in visitCallInst()
3183 if (Value *V = simplifyX86vpcom(*II, Builder, false)) in visitCallInst()
3184 return replaceInstUsesWith(*II, V); in visitCallInst()
3194 if (Constant *Mask = dyn_cast<Constant>(II->getArgOperand(2))) { in visitCallInst()
3210 Value *Op0 = Builder.CreateBitCast(II->getArgOperand(0), in visitCallInst()
3212 Value *Op1 = Builder.CreateBitCast(II->getArgOperand(1), in visitCallInst()
3247 unsigned MemAlign = getKnownAlignment(II->getArgOperand(0), in visitCallInst()
3248 DL, II, &AC, &DT); in visitCallInst()
3249 if (Value *V = simplifyNeonVld1(*II, MemAlign, Builder)) in visitCallInst()
3250 return replaceInstUsesWith(*II, V); in visitCallInst()
3268 getKnownAlignment(II->getArgOperand(0), DL, II, &AC, &DT); in visitCallInst()
3269 unsigned AlignArg = II->getNumArgOperands() - 1; in visitCallInst()
3270 ConstantInt *IntrAlign = dyn_cast<ConstantInt>(II->getArgOperand(AlignArg)); in visitCallInst()
3272 II->setArgOperand(AlignArg, in visitCallInst()
3273 ConstantInt::get(Type::getInt32Ty(II->getContext()), in visitCallInst()
3275 return II; in visitCallInst()
3282 if (Value *V = simplifyNeonTbl1(*II, Builder)) in visitCallInst()
3283 return replaceInstUsesWith(*II, V); in visitCallInst()
3290 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
3291 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
3295 return replaceInstUsesWith(CI, ConstantAggregateZero::get(II->getType())); in visitCallInst()
3299 bool Zext = (II->getIntrinsicID() == Intrinsic::arm_neon_vmullu || in visitCallInst()
3300 II->getIntrinsicID() == Intrinsic::aarch64_neon_umull); in visitCallInst()
3301 VectorType *NewVT = cast<VectorType>(II->getType()); in visitCallInst()
3319 return CastInst::CreateIntegerCast(Arg0, II->getType(), in visitCallInst()
3328 Value *DataArg = II->getArgOperand(0); in visitCallInst()
3329 Value *KeyArg = II->getArgOperand(1); in visitCallInst()
3335 II->setArgOperand(0, Data); in visitCallInst()
3336 II->setArgOperand(1, Key); in visitCallInst()
3337 return II; in visitCallInst()
3342 Value *Src = II->getArgOperand(0); in visitCallInst()
3356 return replaceInstUsesWith(CI, ConstantFP::get(II->getContext(), Val)); in visitCallInst()
3362 Value *Src = II->getArgOperand(0); in visitCallInst()
3371 Value *Src = II->getArgOperand(0); in visitCallInst()
3377 if (II->getIntrinsicID() == Intrinsic::amdgcn_frexp_mant) { in visitCallInst()
3378 return replaceInstUsesWith(CI, ConstantFP::get(II->getContext(), in visitCallInst()
3386 return replaceInstUsesWith(CI, ConstantInt::get(II->getType(), Exp)); in visitCallInst()
3390 return replaceInstUsesWith(CI, UndefValue::get(II->getType())); in visitCallInst()
3411 Value *Src0 = II->getArgOperand(0); in visitCallInst()
3412 Value *Src1 = II->getArgOperand(1); in visitCallInst()
3416 return replaceInstUsesWith(*II, UndefValue::get(II->getType())); in visitCallInst()
3419 return replaceInstUsesWith(*II, ConstantInt::get(II->getType(), false)); in visitCallInst()
3427 return replaceInstUsesWith(*II, ConstantInt::get(II->getType(), true)); in visitCallInst()
3430 return replaceInstUsesWith(*II, ConstantInt::get(II->getType(), false)); in visitCallInst()
3435 FCmp->takeName(II); in visitCallInst()
3436 return replaceInstUsesWith(*II, FCmp); in visitCallInst()
3444 FCmp->takeName(II); in visitCallInst()
3445 return replaceInstUsesWith(*II, FCmp); in visitCallInst()
3450 II->setArgOperand(1, ConstantInt::get(Src1->getType(), in visitCallInst()
3452 return II; in visitCallInst()
3458 return replaceInstUsesWith(*II, UndefValue::get(II->getType())); in visitCallInst()
3462 CallInst *NewCall = Builder.CreateCall(II->getCalledFunction(), in visitCallInst()
3466 NewCall->takeName(II); in visitCallInst()
3467 return replaceInstUsesWith(*II, NewCall); in visitCallInst()
3487 return replaceInstUsesWith(*II, ConstantInt::get(II->getType(), Result)); in visitCallInst()
3490 Value *Src0 = II->getArgOperand(0); in visitCallInst()
3491 Value *Src1 = II->getArgOperand(1); in visitCallInst()
3495 = II->getType()->getScalarType()->getFltSemantics(); in visitCallInst()
3503 ConstantFP::get(II->getContext(), Val0), in visitCallInst()
3504 ConstantFP::get(II->getContext(), Val1) }); in visitCallInst()
3505 return replaceInstUsesWith(*II, Folded); in visitCallInst()
3510 return replaceInstUsesWith(*II, UndefValue::get(II->getType())); in visitCallInst()
3518 Value *Src0 = II->getArgOperand(0); in visitCallInst()
3519 Value *Src1 = II->getArgOperand(1); in visitCallInst()
3522 return replaceInstUsesWith(*II, UndefValue::get(II->getType())); in visitCallInst()
3529 Value *Src = II->getArgOperand(0); in visitCallInst()
3531 return replaceInstUsesWith(*II, Src); in visitCallInst()
3534 Type *Ty = II->getType(); in visitCallInst()
3537 ConstantInt *CWidth = dyn_cast<ConstantInt>(II->getArgOperand(2)); in visitCallInst()
3541 return replaceInstUsesWith(*II, ConstantInt::getNullValue(Ty)); in visitCallInst()
3545 II->setArgOperand(2, ConstantInt::get(CWidth->getType(), in visitCallInst()
3547 return II; in visitCallInst()
3552 ConstantInt *COffset = dyn_cast<ConstantInt>(II->getArgOperand(1)); in visitCallInst()
3556 II->setArgOperand(1, ConstantInt::get(COffset->getType(), in visitCallInst()
3558 return II; in visitCallInst()
3562 bool Signed = II->getIntrinsicID() == Intrinsic::amdgcn_sbfe; in visitCallInst()
3578 RightShift->takeName(II); in visitCallInst()
3579 return replaceInstUsesWith(*II, RightShift); in visitCallInst()
3585 RightShift->takeName(II); in visitCallInst()
3586 return replaceInstUsesWith(*II, RightShift); in visitCallInst()
3590 ConstantInt *En = dyn_cast<ConstantInt>(II->getArgOperand(1)); in visitCallInst()
3598 bool IsCompr = II->getIntrinsicID() == Intrinsic::amdgcn_exp_compr; in visitCallInst()
3603 Value *Src = II->getArgOperand(I + 2); in visitCallInst()
3605 II->setArgOperand(I + 2, UndefValue::get(Src->getType())); in visitCallInst()
3612 return II; in visitCallInst()
3620 Value *Src0 = II->getArgOperand(0); in visitCallInst()
3621 Value *Src1 = II->getArgOperand(1); in visitCallInst()
3622 Value *Src2 = II->getArgOperand(2); in visitCallInst()
3637 NewCall->copyFastMathFlags(II); in visitCallInst()
3638 NewCall->takeName(II); in visitCallInst()
3639 return replaceInstUsesWith(*II, NewCall); in visitCallInst()
3662 II->setArgOperand(0, Src0); in visitCallInst()
3663 II->setArgOperand(1, Src1); in visitCallInst()
3664 II->setArgOperand(2, Src2); in visitCallInst()
3665 return II; in visitCallInst()
3673 return replaceInstUsesWith(*II, in visitCallInst()
3683 const ConstantInt *CC = dyn_cast<ConstantInt>(II->getArgOperand(2)); in visitCallInst()
3689 bool IsInteger = II->getIntrinsicID() == Intrinsic::amdgcn_icmp; in visitCallInst()
3696 Value *Src0 = II->getArgOperand(0); in visitCallInst()
3697 Value *Src1 = II->getArgOperand(1); in visitCallInst()
3704 *II, ConstantExpr::getSExt(CCmp, II->getType())); in visitCallInst()
3713 II->getModule(), Intrinsic::read_register, II->getType()); in visitCallInst()
3714 Metadata *MDArgs[] = {MDString::get(II->getContext(), "exec")}; in visitCallInst()
3715 MDNode *MD = MDNode::get(II->getContext(), MDArgs); in visitCallInst()
3716 Value *Args[] = {MetadataAsValue::get(II->getContext(), MD)}; in visitCallInst()
3720 NewCall->takeName(II); in visitCallInst()
3721 return replaceInstUsesWith(*II, NewCall); in visitCallInst()
3727 II->setArgOperand(0, Src1); in visitCallInst()
3728 II->setArgOperand(1, Src0); in visitCallInst()
3729 II->setArgOperand(2, ConstantInt::get(CC->getType(), in visitCallInst()
3731 return II; in visitCallInst()
3747 II->setArgOperand(1, ConstantInt::getNullValue(Src1->getType())); in visitCallInst()
3748 II->setArgOperand(2, ConstantInt::get(CC->getType(), CmpInst::ICMP_NE)); in visitCallInst()
3749 return II; in visitCallInst()
3807 Value *NewF = Intrinsic::getDeclaration(II->getModule(), NewIID, in visitCallInst()
3812 NewCall->takeName(II); in visitCallInst()
3813 return replaceInstUsesWith(*II, NewCall); in visitCallInst()
3820 if (!isa<Constant>(II->getArgOperand(0))) in visitCallInst()
3823 return replaceInstUsesWith(*II, II->getArgOperand(0)); in visitCallInst()
3826 const ConstantInt *C = dyn_cast<ConstantInt>(II->getArgOperand(0)); in visitCallInst()
3834 Value *Old = II->getArgOperand(0); in visitCallInst()
3836 auto BC = dyn_cast<ConstantInt>(II->getArgOperand(5)); in visitCallInst()
3837 auto RM = dyn_cast<ConstantInt>(II->getArgOperand(3)); in visitCallInst()
3838 auto BM = dyn_cast<ConstantInt>(II->getArgOperand(4)); in visitCallInst()
3847 II->setOperand(0, UndefValue::get(Old->getType())); in visitCallInst()
3848 return II; in visitCallInst()
3853 if (IntrinsicInst *SS = dyn_cast<IntrinsicInst>(II->getArgOperand(0))) { in visitCallInst()
3856 if (SS->getNextNonDebugInstruction() == II) { in visitCallInst()
3864 BasicBlock::iterator BI(II); in visitCallInst()
3865 Instruction *TI = II->getParent()->getTerminator(); in visitCallInst()
3873 if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(BCI)) { in visitCallInst() local
3875 if (II->getIntrinsicID() == Intrinsic::stackrestore) in visitCallInst()
3880 if (II->mayHaveSideEffects()) { in visitCallInst()
3903 if (II->getFunction()->hasFnAttribute(Attribute::SanitizeAddress) || in visitCallInst()
3904 II->getFunction()->hasFnAttribute(Attribute::SanitizeHWAddress)) in visitCallInst()
3907 if (removeTriviallyEmptyRange(*II, Intrinsic::lifetime_start, in visitCallInst()
3912 Value *IIOperand = II->getArgOperand(0); in visitCallInst()
3916 Instruction *Next = II->getNextNonDebugInstruction(); in visitCallInst()
3923 Value *AssumeIntrinsic = II->getCalledValue(), *A, *B; in visitCallInst()
3925 Builder.CreateCall(AssumeIntrinsic, A, II->getName()); in visitCallInst()
3926 Builder.CreateCall(AssumeIntrinsic, B, II->getName()); in visitCallInst()
3927 return eraseInstFromFunction(*II); in visitCallInst()
3931 Builder.CreateCall(AssumeIntrinsic, Builder.CreateNot(A), II->getName()); in visitCallInst()
3932 Builder.CreateCall(AssumeIntrinsic, Builder.CreateNot(B), II->getName()); in visitCallInst()
3933 return eraseInstFromFunction(*II); in visitCallInst()
3943 isValidAssumeForContext(II, LHS, &DT)) { in visitCallInst()
3944 MDNode *MD = MDNode::get(II->getContext(), None); in visitCallInst()
3946 return eraseInstFromFunction(*II); in visitCallInst()
3955 computeKnownBits(IIOperand, Known, 0, II); in visitCallInst()
3957 return eraseInstFromFunction(*II); in visitCallInst()
3961 AC.updateAffectedValues(II); in visitCallInst()
3968 Value *DerivedPtr = cast<GCRelocateInst>(II)->getDerivedPtr(); in visitCallInst()
3972 if (II->use_empty()) in visitCallInst()
3973 return eraseInstFromFunction(*II); in visitCallInst()
3981 return replaceInstUsesWith(*II, UndefValue::get(II->getType())); in visitCallInst()
3983 if (auto *PT = dyn_cast<PointerType>(II->getType())) { in visitCallInst()
3989 return replaceInstUsesWith(*II, ConstantPointerNull::get(PT)); in visitCallInst()
3992 if (!II->hasRetAttr(Attribute::NonNull) && in visitCallInst()
3993 isKnownNonZero(DerivedPtr, DL, 0, &AC, II, &DT)) { in visitCallInst()
3994 II->addAttribute(AttributeList::ReturnIndex, Attribute::NonNull); in visitCallInst()
3995 return II; in visitCallInst()
4010 Instruction *NextInst = II->getNextNode(); in visitCallInst()
4020 Value *CurrCond = II->getArgOperand(0); in visitCallInst()
4027 Instruction* MoveI = II->getNextNode(); in visitCallInst()
4031 Temp->moveBefore(II); in visitCallInst()
4033 II->setArgOperand(0, Builder.CreateAnd(CurrCond, NextCond)); in visitCallInst()
4039 return visitCallSite(II); in visitCallInst()
4053 Instruction *InstCombiner::visitInvokeInst(InvokeInst &II) { in visitInvokeInst() argument
4054 return visitCallSite(&II); in visitInvokeInst()
4121 IntrinsicInst *II = dyn_cast<IntrinsicInst>(U); in findInitTrampolineFromAlloca() local
4122 if (!II) in findInitTrampolineFromAlloca()
4124 if (II->getIntrinsicID() == Intrinsic::init_trampoline) { in findInitTrampolineFromAlloca()
4128 InitTrampoline = II; in findInitTrampolineFromAlloca()
4131 if (II->getIntrinsicID() == Intrinsic::adjust_trampoline) in findInitTrampolineFromAlloca()
4156 if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) in findInitTrampolineFromBB() local
4157 if (II->getIntrinsicID() == Intrinsic::init_trampoline && in findInitTrampolineFromBB()
4158 II->getOperand(0) == TrampMem) in findInitTrampolineFromBB()
4159 return II; in findInitTrampolineFromBB()
4283 if (IntrinsicInst *II = findInitTrampoline(Callee)) in visitCallSite() local
4284 return transformCallThroughTrampoline(CS, II); in visitCallSite()
4378 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) in transformConstExprCastCall() local
4379 for (User *U : II->users()) in transformConstExprCastCall()
4381 if (PN->getParent() == II->getNormalDest() || in transformConstExprCastCall()
4382 PN->getParent() == II->getUnwindDest()) in transformConstExprCastCall()
4534 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) { in transformConstExprCastCall() local
4535 NewCS = Builder.CreateInvoke(Callee, II->getNormalDest(), in transformConstExprCastCall()
4536 II->getUnwindDest(), Args, OpBundles); in transformConstExprCastCall()
4562 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) { in transformConstExprCastCall() local
4563 BasicBlock::iterator I = II->getNormalDest()->getFirstInsertionPt(); in transformConstExprCastCall()
4711 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) { in transformCallThroughTrampoline() local
4713 II->getNormalDest(), II->getUnwindDest(), in transformCallThroughTrampoline()
4715 cast<InvokeInst>(NewCaller)->setCallingConv(II->getCallingConv()); in transformCallThroughTrampoline()