Lines Matching refs:II
288 Value *InstCombinerImpl::simplifyMaskedLoad(IntrinsicInst &II) { in simplifyMaskedLoad() argument
289 Value *LoadPtr = II.getArgOperand(0); in simplifyMaskedLoad()
291 cast<ConstantInt>(II.getArgOperand(1))->getAlignValue(); in simplifyMaskedLoad()
295 if (maskIsAllOneOrUndef(II.getArgOperand(2))) { in simplifyMaskedLoad()
296 LoadInst *L = Builder.CreateAlignedLoad(II.getType(), LoadPtr, Alignment, in simplifyMaskedLoad()
298 L->copyMetadata(II); in simplifyMaskedLoad()
304 if (isDereferenceablePointer(LoadPtr, II.getType(), in simplifyMaskedLoad()
305 II.getModule()->getDataLayout(), &II, nullptr)) { in simplifyMaskedLoad()
306 LoadInst *LI = Builder.CreateAlignedLoad(II.getType(), LoadPtr, Alignment, in simplifyMaskedLoad()
308 LI->copyMetadata(II); in simplifyMaskedLoad()
309 return Builder.CreateSelect(II.getArgOperand(2), LI, II.getArgOperand(3)); in simplifyMaskedLoad()
318 Instruction *InstCombinerImpl::simplifyMaskedStore(IntrinsicInst &II) { in simplifyMaskedStore() argument
319 auto *ConstMask = dyn_cast<Constant>(II.getArgOperand(3)); in simplifyMaskedStore()
325 return eraseInstFromFunction(II); in simplifyMaskedStore()
329 Value *StorePtr = II.getArgOperand(1); in simplifyMaskedStore()
330 Align Alignment = cast<ConstantInt>(II.getArgOperand(2))->getAlignValue(); in simplifyMaskedStore()
332 new StoreInst(II.getArgOperand(0), StorePtr, false, Alignment); in simplifyMaskedStore()
333 S->copyMetadata(II); in simplifyMaskedStore()
344 SimplifyDemandedVectorElts(II.getOperand(0), DemandedElts, UndefElts)) in simplifyMaskedStore()
345 return replaceOperand(II, 0, V); in simplifyMaskedStore()
357 Instruction *InstCombinerImpl::simplifyMaskedGather(IntrinsicInst &II) { in simplifyMaskedGather() argument
367 Instruction *InstCombinerImpl::simplifyMaskedScatter(IntrinsicInst &II) { in simplifyMaskedScatter() argument
368 auto *ConstMask = dyn_cast<Constant>(II.getArgOperand(3)); in simplifyMaskedScatter()
374 return eraseInstFromFunction(II); in simplifyMaskedScatter()
383 SimplifyDemandedVectorElts(II.getOperand(0), DemandedElts, UndefElts)) in simplifyMaskedScatter()
384 return replaceOperand(II, 0, V); in simplifyMaskedScatter()
386 SimplifyDemandedVectorElts(II.getOperand(1), DemandedElts, UndefElts)) in simplifyMaskedScatter()
387 return replaceOperand(II, 1, V); in simplifyMaskedScatter()
400 static Instruction *simplifyInvariantGroupIntrinsic(IntrinsicInst &II, in simplifyInvariantGroupIntrinsic() argument
402 auto *Arg = II.getArgOperand(0); in simplifyInvariantGroupIntrinsic()
416 if (II.getIntrinsicID() == Intrinsic::launder_invariant_group) in simplifyInvariantGroupIntrinsic()
418 else if (II.getIntrinsicID() == Intrinsic::strip_invariant_group) in simplifyInvariantGroupIntrinsic()
424 II.getType()->getPointerAddressSpace()) in simplifyInvariantGroupIntrinsic()
425 Result = IC.Builder.CreateAddrSpaceCast(Result, II.getType()); in simplifyInvariantGroupIntrinsic()
426 if (Result->getType() != II.getType()) in simplifyInvariantGroupIntrinsic()
427 Result = IC.Builder.CreateBitCast(Result, II.getType()); in simplifyInvariantGroupIntrinsic()
432 static Instruction *foldCttzCtlz(IntrinsicInst &II, InstCombinerImpl &IC) { in foldCttzCtlz() argument
433 assert((II.getIntrinsicID() == Intrinsic::cttz || in foldCttzCtlz()
434 II.getIntrinsicID() == Intrinsic::ctlz) && in foldCttzCtlz()
436 bool IsTZ = II.getIntrinsicID() == Intrinsic::cttz; in foldCttzCtlz()
437 Value *Op0 = II.getArgOperand(0); in foldCttzCtlz()
438 Value *Op1 = II.getArgOperand(1); in foldCttzCtlz()
444 Function *F = Intrinsic::getDeclaration(II.getModule(), ID, II.getType()); in foldCttzCtlz()
445 return CallInst::Create(F, {X, II.getArgOperand(1)}); in foldCttzCtlz()
448 if (II.getType()->isIntOrIntVectorTy(1)) { in foldCttzCtlz()
455 return IC.replaceInstUsesWith(II, ConstantInt::getNullValue(II.getType())); in foldCttzCtlz()
460 if (Instruction *R = IC.FoldOpIntoSelect(II, Sel)) in foldCttzCtlz()
466 return IC.replaceOperand(II, 0, X); in foldCttzCtlz()
470 auto *Zext = IC.Builder.CreateZExt(X, II.getType()); in foldCttzCtlz()
473 return IC.replaceInstUsesWith(II, CttzZext); in foldCttzCtlz()
481 auto *ZextCttz = IC.Builder.CreateZExt(Cttz, II.getType()); in foldCttzCtlz()
482 return IC.replaceInstUsesWith(II, ZextCttz); in foldCttzCtlz()
490 return IC.replaceOperand(II, 0, X); in foldCttzCtlz()
493 return IC.replaceOperand(II, 0, X); in foldCttzCtlz()
496 KnownBits Known = IC.computeKnownBits(Op0, 0, &II); in foldCttzCtlz()
510 return IC.replaceInstUsesWith(II, C); in foldCttzCtlz()
517 isKnownNonZero(Op0, IC.getDataLayout(), 0, &IC.getAssumptionCache(), &II, in foldCttzCtlz()
519 if (!match(II.getArgOperand(1), m_One())) in foldCttzCtlz()
520 return IC.replaceOperand(II, 1, IC.Builder.getTrue()); in foldCttzCtlz()
526 if (IT && IT->getBitWidth() != 1 && !II.getMetadata(LLVMContext::MD_range)) { in foldCttzCtlz()
530 II.setMetadata(LLVMContext::MD_range, in foldCttzCtlz()
531 MDNode::get(II.getContext(), LowAndHigh)); in foldCttzCtlz()
532 return &II; in foldCttzCtlz()
538 static Instruction *foldCtpop(IntrinsicInst &II, InstCombinerImpl &IC) { in foldCtpop() argument
539 assert(II.getIntrinsicID() == Intrinsic::ctpop && in foldCtpop()
541 Type *Ty = II.getType(); in foldCtpop()
543 Value *Op0 = II.getArgOperand(0); in foldCtpop()
549 return IC.replaceOperand(II, 0, X); in foldCtpop()
555 return IC.replaceOperand(II, 0, X); in foldCtpop()
561 Intrinsic::getDeclaration(II.getModule(), Intrinsic::cttz, Ty); in foldCtpop()
564 return IC.replaceInstUsesWith(II, IC.Builder.CreateSub(Bw, Cttz)); in foldCtpop()
571 Intrinsic::getDeclaration(II.getModule(), Intrinsic::cttz, Ty); in foldCtpop()
584 if (Instruction *R = IC.FoldOpIntoSelect(II, Sel)) in foldCtpop()
588 IC.computeKnownBits(Op0, Known, 0, &II); in foldCtpop()
605 if (IT->getBitWidth() != 1 && !II.getMetadata(LLVMContext::MD_range)) { in foldCtpop()
609 II.setMetadata(LLVMContext::MD_range, in foldCtpop()
610 MDNode::get(II.getContext(), LowAndHigh)); in foldCtpop()
611 return &II; in foldCtpop()
621 static Value *simplifyNeonTbl1(const IntrinsicInst &II, in simplifyNeonTbl1() argument
624 auto *C = dyn_cast<Constant>(II.getArgOperand(1)); in simplifyNeonTbl1()
628 auto *VecTy = cast<FixedVectorType>(II.getType()); in simplifyNeonTbl1()
650 auto *V1 = II.getArgOperand(0); in simplifyNeonTbl1()
725 static Instruction *createOverflowTuple(IntrinsicInst *II, Value *Result, in createOverflowTuple() argument
728 StructType *ST = cast<StructType>(II->getType()); in createOverflowTuple()
734 InstCombinerImpl::foldIntrinsicWithOverflowCommon(IntrinsicInst *II) { in foldIntrinsicWithOverflowCommon() argument
735 WithOverflowInst *WO = cast<WithOverflowInst>(II); in foldIntrinsicWithOverflowCommon()
760 static Instruction *foldClampRangeOfTwo(IntrinsicInst *II, in foldClampRangeOfTwo() argument
762 Value *I0 = II->getArgOperand(0), *I1 = II->getArgOperand(1); in foldClampRangeOfTwo()
769 switch (II->getIntrinsicID()) { in foldClampRangeOfTwo()
795 return SelectInst::Create(Cmp, ConstantInt::get(II->getType(), *C0), I1); in foldClampRangeOfTwo()
818 IntrinsicInst *II = dyn_cast<IntrinsicInst>(&CI); in visitCallInst() local
819 if (!II) return visitCallBase(CI); in visitCallInst()
823 if (auto *AMI = dyn_cast<AtomicMemIntrinsic>(II)) in visitCallInst()
835 if (auto *MI = dyn_cast<AnyMemIntrinsic>(II)) { in visitCallInst()
891 if (Changed) return II; in visitCallInst()
896 if (auto *IIFVTy = dyn_cast<FixedVectorType>(II->getType())) { in visitCallInst()
900 if (Value *V = SimplifyDemandedVectorElts(II, AllOnesEltMask, UndefElts)) { in visitCallInst()
901 if (V != II) in visitCallInst()
902 return replaceInstUsesWith(*II, V); in visitCallInst()
903 return II; in visitCallInst()
907 if (II->isCommutative()) { in visitCallInst()
912 Intrinsic::ID IID = II->getIntrinsicID(); in visitCallInst()
915 if (Value *V = lowerObjectSizeCall(II, DL, &TLI, /*MustSucceed=*/false)) in visitCallInst()
919 Value *IIOperand = II->getArgOperand(0); in visitCallInst()
920 bool IntMinIsPoison = cast<Constant>(II->getArgOperand(1))->isOneValue(); in visitCallInst()
926 return replaceOperand(*II, 0, X); in visitCallInst()
928 return replaceOperand(*II, 0, X); in visitCallInst()
930 return replaceOperand(*II, 0, X); in visitCallInst()
932 if (Optional<bool> Sign = getKnownSign(IIOperand, II, DL, &AC, &DT)) { in visitCallInst()
935 return replaceInstUsesWith(*II, IIOperand); in visitCallInst()
948 return CastInst::Create(Instruction::ZExt, NarrowAbs, II->getType()); in visitCallInst()
955 return BinaryOperator::CreateAnd(X, ConstantInt::get(II->getType(), 1)); in visitCallInst()
960 Value *I0 = II->getArgOperand(0), *I1 = II->getArgOperand(1); in visitCallInst()
965 return CastInst::Create(Instruction::ZExt, Cmp, II->getType()); in visitCallInst()
970 Value *I0 = II->getArgOperand(0), *I1 = II->getArgOperand(1); in visitCallInst()
975 return CastInst::Create(Instruction::ZExt, NarrowMaxMin, II->getType()); in visitCallInst()
981 if (ConstantExpr::getZExt(NarrowC, II->getType()) == C) { in visitCallInst()
983 return CastInst::Create(Instruction::ZExt, NarrowMaxMin, II->getType()); in visitCallInst()
992 Value *I0 = II->getArgOperand(0), *I1 = II->getArgOperand(1); in visitCallInst()
997 return CastInst::Create(Instruction::SExt, NarrowMaxMin, II->getType()); in visitCallInst()
1004 if (ConstantExpr::getSExt(NarrowC, II->getType()) == C) { in visitCallInst()
1006 return CastInst::Create(Instruction::SExt, NarrowMaxMin, II->getType()); in visitCallInst()
1042 ConstantInt::getBool(II->getContext(), IntMinIsPoison)); in visitCallInst()
1051 if (Instruction *Sel = foldClampRangeOfTwo(II, Builder)) in visitCallInst()
1056 if (Instruction *R = FoldOpIntoSelect(*II, Sel)) in visitCallInst()
1062 Value *IIOperand = II->getArgOperand(0); in visitCallInst()
1076 if (Value *SimplifiedMaskedOp = simplifyMaskedLoad(*II)) in visitCallInst()
1080 return simplifyMaskedStore(*II); in visitCallInst()
1082 return simplifyMaskedGather(*II); in visitCallInst()
1084 return simplifyMaskedScatter(*II); in visitCallInst()
1087 if (auto *SkippedBarrier = simplifyInvariantGroupIntrinsic(*II, *this)) in visitCallInst()
1088 return replaceInstUsesWith(*II, SkippedBarrier); in visitCallInst()
1091 if (ConstantInt *Power = dyn_cast<ConstantInt>(II->getArgOperand(1))) { in visitCallInst()
1096 II->getArgOperand(0), II); in visitCallInst()
1099 return BinaryOperator::CreateFMulFMF(II->getArgOperand(0), in visitCallInst()
1100 II->getArgOperand(0), II); in visitCallInst()
1106 if (auto *I = foldCttzCtlz(*II, *this)) in visitCallInst()
1111 if (auto *I = foldCtpop(*II, *this)) in visitCallInst()
1117 Value *Op0 = II->getArgOperand(0), *Op1 = II->getArgOperand(1); in visitCallInst()
1118 Type *Ty = II->getType(); in visitCallInst()
1121 if (match(II->getArgOperand(2), m_ImmConstant(ShAmtC)) && in visitCallInst()
1127 return replaceOperand(*II, 2, ModuloC); in visitCallInst()
1139 Module *Mod = II->getModule(); in visitCallInst()
1159 Module *Mod = II->getModule(); in visitCallInst()
1166 if (SimplifyDemandedInstructionBits(*II)) in visitCallInst()
1176 if (SimplifyDemandedBits(II, 2, Op2Demanded, Op2Known)) in visitCallInst()
1182 if (Instruction *I = foldIntrinsicWithOverflowCommon(II)) in visitCallInst()
1190 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
1191 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
1201 *II, Builder.CreateBinaryIntrinsic( in visitCallInst()
1210 if (Instruction *I = foldIntrinsicWithOverflowCommon(II)) in visitCallInst()
1215 if (Instruction *I = foldIntrinsicWithOverflowCommon(II)) in visitCallInst()
1219 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
1220 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
1230 *II, Builder.CreateBinaryIntrinsic(Intrinsic::sadd_with_overflow, in visitCallInst()
1241 SaturatingInst *SI = cast<SaturatingInst>(II); in visitCallInst()
1275 *II, Builder.CreateBinaryIntrinsic( in visitCallInst()
1308 *II, Builder.CreateBinaryIntrinsic( in visitCallInst()
1309 IID, X, ConstantInt::get(II->getType(), NewVal))); in visitCallInst()
1319 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
1320 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
1344 Value *NewCall = Builder.CreateBinaryIntrinsic(NewIID, X, Y, II); in visitCallInst()
1346 FNeg->copyIRFlags(II); in visitCallInst()
1376 IID, X, ConstantFP::get(Arg0->getType(), Res), II); in visitCallInst()
1381 return replaceInstUsesWith(*II, NewCall); in visitCallInst()
1390 Builder.CreateBinaryIntrinsic(IID, X, Y, II, II->getName()); in visitCallInst()
1391 return new FPExtInst(NewCall, II->getType()); in visitCallInst()
1401 Value *R = Builder.CreateUnaryIntrinsic(Intrinsic::fabs, X, II); in visitCallInst()
1403 R = Builder.CreateFNegFMF(R, II); in visitCallInst()
1404 return replaceInstUsesWith(*II, R); in visitCallInst()
1411 if (II->isFast()) { in visitCallInst()
1413 Builder.setFastMathFlags(II->getFastMathFlags()); in visitCallInst()
1414 Value *Mul = Builder.CreateFMul(II->getArgOperand(0), in visitCallInst()
1415 II->getArgOperand(1)); in visitCallInst()
1416 Value *Add = Builder.CreateFAdd(Mul, II->getArgOperand(2)); in visitCallInst()
1417 Add->takeName(II); in visitCallInst()
1418 return replaceInstUsesWith(*II, Add); in visitCallInst()
1422 if (Value *V = SimplifyFMulInst(II->getArgOperand(0), II->getArgOperand(1), in visitCallInst()
1423 II->getFastMathFlags(), in visitCallInst()
1424 SQ.getWithInstruction(II))) { in visitCallInst()
1425 auto *FAdd = BinaryOperator::CreateFAdd(V, II->getArgOperand(2)); in visitCallInst()
1426 FAdd->copyFastMathFlags(II); in visitCallInst()
1434 Value *Src0 = II->getArgOperand(0); in visitCallInst()
1435 Value *Src1 = II->getArgOperand(1); in visitCallInst()
1438 replaceOperand(*II, 0, X); in visitCallInst()
1439 replaceOperand(*II, 1, Y); in visitCallInst()
1440 return II; in visitCallInst()
1446 replaceOperand(*II, 0, X); in visitCallInst()
1447 replaceOperand(*II, 1, X); in visitCallInst()
1448 return II; in visitCallInst()
1453 if (Value *V = SimplifyFMAFMul(II->getArgOperand(0), II->getArgOperand(1), in visitCallInst()
1454 II->getFastMathFlags(), in visitCallInst()
1455 SQ.getWithInstruction(II))) { in visitCallInst()
1456 auto *FAdd = BinaryOperator::CreateFAdd(V, II->getArgOperand(2)); in visitCallInst()
1457 FAdd->copyFastMathFlags(II); in visitCallInst()
1464 if (match(II->getArgOperand(2), m_NegZeroFP()) || in visitCallInst()
1465 (match(II->getArgOperand(2), m_PosZeroFP()) && in visitCallInst()
1466 II->getFastMathFlags().noSignedZeros())) in visitCallInst()
1467 return BinaryOperator::CreateFMulFMF(Src0, Src1, II); in visitCallInst()
1472 Value *Mag = II->getArgOperand(0), *Sign = II->getArgOperand(1); in visitCallInst()
1476 Value *Fabs = Builder.CreateUnaryIntrinsic(Intrinsic::fabs, Mag, II); in visitCallInst()
1477 return replaceInstUsesWith(*II, Fabs); in visitCallInst()
1484 Value *Fabs = Builder.CreateUnaryIntrinsic(Intrinsic::fabs, Mag, II); in visitCallInst()
1485 return replaceInstUsesWith(*II, Builder.CreateFNegFMF(Fabs, II)); in visitCallInst()
1492 return replaceOperand(*II, 1, X); in visitCallInst()
1498 return replaceOperand(*II, 0, X); in visitCallInst()
1504 if (match(II->getArgOperand(0), in visitCallInst()
1508 CallInst *AbsT = Builder.CreateCall(II->getCalledFunction(), {TVal}); in visitCallInst()
1509 CallInst *AbsF = Builder.CreateCall(II->getCalledFunction(), {FVal}); in visitCallInst()
1514 return replaceOperand(*II, 0, FVal); in visitCallInst()
1517 return replaceOperand(*II, 0, TVal); in visitCallInst()
1530 if (match(II->getArgOperand(0), m_OneUse(m_FPExt(m_Value(ExtSrc))))) { in visitCallInst()
1532 Value *NarrowII = Builder.CreateUnaryIntrinsic(IID, ExtSrc, II); in visitCallInst()
1533 return new FPExtInst(NarrowII, II->getType()); in visitCallInst()
1540 Value *Src = II->getArgOperand(0); in visitCallInst()
1544 return replaceOperand(*II, 0, X); in visitCallInst()
1550 if (match(II->getArgOperand(0), m_OneUse(m_FNeg(m_Value(X))))) { in visitCallInst()
1552 Value *NewSin = Builder.CreateUnaryIntrinsic(Intrinsic::sin, X, II); in visitCallInst()
1554 FNeg->copyFastMathFlags(II); in visitCallInst()
1562 if (Value *V = simplifyNeonTbl1(*II, Builder)) in visitCallInst()
1563 return replaceInstUsesWith(*II, V); in visitCallInst()
1570 Value *Arg0 = II->getArgOperand(0); in visitCallInst()
1571 Value *Arg1 = II->getArgOperand(1); in visitCallInst()
1575 return replaceInstUsesWith(CI, ConstantAggregateZero::get(II->getType())); in visitCallInst()
1581 VectorType *NewVT = cast<VectorType>(II->getType()); in visitCallInst()
1599 return CastInst::CreateIntegerCast(Arg0, II->getType(), in visitCallInst()
1608 Value *DataArg = II->getArgOperand(0); in visitCallInst()
1609 Value *KeyArg = II->getArgOperand(1); in visitCallInst()
1615 replaceOperand(*II, 0, Data); in visitCallInst()
1616 replaceOperand(*II, 1, Key); in visitCallInst()
1617 return II; in visitCallInst()
1624 if (auto Op0 = dyn_cast<IntrinsicInst>(II->getArgOperand(0))) { in visitCallInst()
1629 Value *Bytes = Op0->getArgOperand(1), *Mask = II->getArgOperand(1); in visitCallInst()
1631 uint64_t Mask1 = computeKnownBits(Mask, 0, II).One.getZExtValue(); in visitCallInst()
1635 return replaceInstUsesWith(*II, Op0->getArgOperand(0)); in visitCallInst()
1642 if (IntrinsicInst *SS = dyn_cast<IntrinsicInst>(II->getArgOperand(0))) { in visitCallInst()
1645 if (SS->getNextNonDebugInstruction() == II) { in visitCallInst()
1653 BasicBlock::iterator BI(II); in visitCallInst()
1654 Instruction *TI = II->getParent()->getTerminator(); in visitCallInst()
1692 if (II->getFunction()->hasFnAttribute(Attribute::SanitizeAddress) || in visitCallInst()
1693 II->getFunction()->hasFnAttribute(Attribute::SanitizeMemory) || in visitCallInst()
1694 II->getFunction()->hasFnAttribute(Attribute::SanitizeHWAddress)) in visitCallInst()
1697 if (removeTriviallyEmptyRange(*II, *this, [](const IntrinsicInst &I) { in visitCallInst()
1703 Value *IIOperand = II->getArgOperand(0); in visitCallInst()
1705 II->getOperandBundlesAsDefs(OpBundles); in visitCallInst()
1712 if (isAssumeWithEmptyBundle(*cast<AssumeInst>(II))) in visitCallInst()
1714 replaceUse(II->getOperandUse(0), ConstantInt::getTrue(II->getContext())); in visitCallInst()
1720 Instruction *Next = II->getNextNonDebugInstruction(); in visitCallInst()
1727 FunctionType *AssumeIntrinsicTy = II->getFunctionType(); in visitCallInst()
1728 Value *AssumeIntrinsic = II->getCalledOperand(); in visitCallInst()
1732 II->getName()); in visitCallInst()
1733 Builder.CreateCall(AssumeIntrinsicTy, AssumeIntrinsic, B, II->getName()); in visitCallInst()
1734 return eraseInstFromFunction(*II); in visitCallInst()
1739 Builder.CreateNot(A), OpBundles, II->getName()); in visitCallInst()
1741 Builder.CreateNot(B), II->getName()); in visitCallInst()
1742 return eraseInstFromFunction(*II); in visitCallInst()
1752 isValidAssumeForContext(II, LHS, &DT)) { in visitCallInst()
1753 MDNode *MD = MDNode::get(II->getContext(), None); in visitCallInst()
1755 return RemoveConditionFromAssume(II); in visitCallInst()
1774 return RemoveConditionFromAssume(II); in visitCallInst()
1804 Replacement->insertAfter(II); in visitCallInst()
1807 return RemoveConditionFromAssume(II); in visitCallInst()
1813 if (EnableKnowledgeRetention && II->hasOperandBundles()) { in visitCallInst()
1814 for (unsigned Idx = 0; Idx < II->getNumOperandBundles(); Idx++) { in visitCallInst()
1815 auto &BOI = II->bundle_op_info_begin()[Idx]; in visitCallInst()
1817 llvm::getKnowledgeFromBundle(cast<AssumeInst>(*II), BOI); in visitCallInst()
1823 llvm::simplifyRetainedKnowledge(cast<AssumeInst>(II), RK, in visitCallInst()
1830 Worklist.pushValue(II->op_begin()[BOI.Begin]); in visitCallInst()
1831 Value::dropDroppableUse(II->op_begin()[BOI.Begin]); in visitCallInst()
1837 II->op_begin()[BOI.Begin].set(CanonRK.WasOn); in visitCallInst()
1839 II->op_begin()[BOI.Begin + 1].set(ConstantInt::get( in visitCallInst()
1840 Type::getInt64Ty(II->getContext()), CanonRK.ArgValue)); in visitCallInst()
1843 return II; in visitCallInst()
1850 computeKnownBits(IIOperand, Known, 0, II); in visitCallInst()
1851 if (Known.isAllOnes() && isAssumeWithEmptyBundle(cast<AssumeInst>(*II))) in visitCallInst()
1852 return eraseInstFromFunction(*II); in visitCallInst()
1856 AC.updateAffectedValues(cast<AssumeInst>(II)); in visitCallInst()
1863 Instruction *NextInst = II->getNextNonDebugInstruction(); in visitCallInst()
1873 Value *CurrCond = II->getArgOperand(0); in visitCallInst()
1878 Instruction *MoveI = II->getNextNonDebugInstruction(); in visitCallInst()
1882 Temp->moveBefore(II); in visitCallInst()
1884 replaceOperand(*II, 0, Builder.CreateAnd(CurrCond, NextCond)); in visitCallInst()
1887 return II; in visitCallInst()
1892 Value *Vec = II->getArgOperand(0); in visitCallInst()
1893 Value *SubVec = II->getArgOperand(1); in visitCallInst()
1894 Value *Idx = II->getArgOperand(2); in visitCallInst()
1895 auto *DstTy = dyn_cast<FixedVectorType>(II->getType()); in visitCallInst()
1938 Value *Vec = II->getArgOperand(0); in visitCallInst()
1939 Value *Idx = II->getArgOperand(1); in visitCallInst()
1941 auto *DstTy = dyn_cast<FixedVectorType>(II->getType()); in visitCallInst()
1975 Value *Arg = II->getArgOperand(0); in visitCallInst()
1976 Type *RetTy = II->getType(); in visitCallInst()
2001 Value *Arg = II->getArgOperand(0); in visitCallInst()
2009 if (Res->getType() != II->getType()) in visitCallInst()
2010 Res = Builder.CreateZExtOrTrunc(Res, II->getType()); in visitCallInst()
2032 II->hasAllowReassoc(); in visitCallInst()
2037 Value *Arg = II->getArgOperand(ArgIdx); in visitCallInst()
2054 replaceUse(II->getOperandUse(ArgIdx), V); in visitCallInst()
2061 Optional<Instruction *> V = targetInstCombineIntrinsic(*II); in visitCallInst()
2069 return visitCallBase(*II); in visitCallInst()
2083 Instruction *InstCombinerImpl::visitInvokeInst(InvokeInst &II) { in visitInvokeInst() argument
2084 return visitCallBase(II); in visitInvokeInst()
2166 IntrinsicInst *II = dyn_cast<IntrinsicInst>(U); in findInitTrampolineFromAlloca() local
2167 if (!II) in findInitTrampolineFromAlloca()
2169 if (II->getIntrinsicID() == Intrinsic::init_trampoline) { in findInitTrampolineFromAlloca()
2173 InitTrampoline = II; in findInitTrampolineFromAlloca()
2176 if (II->getIntrinsicID() == Intrinsic::adjust_trampoline) in findInitTrampolineFromAlloca()
2201 if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) in findInitTrampolineFromBB() local
2202 if (II->getIntrinsicID() == Intrinsic::init_trampoline && in findInitTrampolineFromBB()
2203 II->getOperand(0) == TrampMem) in findInitTrampolineFromBB()
2204 return II; in findInitTrampolineFromBB()
2393 if (IntrinsicInst *II = findInitTrampoline(Callee)) in visitCallBase() local
2394 return transformCallThroughTrampoline(Call, *II); in visitCallBase()
2613 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) in transformConstExprCastCall() local
2614 for (User *U : II->users()) in transformConstExprCastCall()
2616 if (PN->getParent() == II->getNormalDest() || in transformConstExprCastCall()
2617 PN->getParent() == II->getUnwindDest()) in transformConstExprCastCall()
2782 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) { in transformConstExprCastCall() local
2783 NewCall = Builder.CreateInvoke(Callee, II->getNormalDest(), in transformConstExprCastCall()
2784 II->getUnwindDest(), Args, OpBundles); in transformConstExprCastCall()
2810 if (InvokeInst *II = dyn_cast<InvokeInst>(Caller)) { in transformConstExprCastCall() local
2811 BasicBlock::iterator I = II->getNormalDest()->getFirstInsertionPt(); in transformConstExprCastCall()
2958 if (InvokeInst *II = dyn_cast<InvokeInst>(&Call)) { in transformCallThroughTrampoline() local
2960 II->getNormalDest(), II->getUnwindDest(), in transformCallThroughTrampoline()
2962 cast<InvokeInst>(NewCaller)->setCallingConv(II->getCallingConv()); in transformCallThroughTrampoline()