Home | History | Annotate | Download | only in Scalar

Lines Matching refs:UserInst

1091   Instruction *UserInst;
1122 : UserInst(nullptr), OperandValToReplace(nullptr), LUIdx(~size_t(0)),
1128 if (const PHINode *PN = dyn_cast<PHINode>(UserInst)) {
1136 return !L->contains(UserInst);
1140 OS << "UserInst=";
1142 if (StoreInst *Store = dyn_cast<StoreInst>(UserInst)) {
1145 } else if (UserInst->getType()->isVoidTy())
1146 OS << UserInst->getOpcodeName();
1148 UserInst->printAsOperand(OS, /*PrintType=*/false);
1244 /// formulate a replacement for OperandValToReplace in UserInst.
1587 Instruction *UserInst;
1592 UserInst(U), IVOperand(O), IncExpr(E) {}
1623 // Returns the last UserInst in the chain.
1624 Instruction *tailUserInst() const { return Incs.back().UserInst; }
1687 void ChainInstruction(Instruction *UserInst, Instruction *IVOper,
2546 DEBUG(dbgs() << "Chain: " << *Chain.Incs[0].UserInst << " users:\n";
2602 DEBUG(dbgs() << "Chain: " << *Chain.Incs[0].UserInst << " Cost: " << cost
2609 void LSRInstance::ChainInstruction(Instruction *UserInst, Instruction *IVOper,
2636 if (isa<PHINode>(UserInst) && isa<PHINode>(Chain.tailUserInst()))
2653 if (isa<PHINode>(UserInst))
2666 IVChainVec.push_back(IVChain(IVInc(UserInst, IVOper, LastIncExpr),
2669 DEBUG(dbgs() << "IV Chain#" << ChainIdx << " Head: (" << *UserInst
2672 DEBUG(dbgs() << "IV Chain#" << ChainIdx << " Inc: (" << *UserInst
2675 IVChainVec[ChainIdx].add(IVInc(UserInst
2701 if (IncIter->UserInst == OtherUse)
2717 ChainUsersVec[ChainIdx].FarUsers.erase(UserInst);
2816 DEBUG(dbgs() << "Final Chain: " << *Chain.Incs[0].UserInst << "\n");
2819 DEBUG(dbgs() << " Inc: " << Inc.UserInst << "\n");
2820 auto UseI = std::find(Inc.UserInst->op_begin(), Inc.UserInst->op_end(),
2822 assert(UseI != Inc.UserInst->op_end() && "cannot find IV operand");
2828 static bool canFoldIVIncExpr(const SCEV *IncExpr, Instruction *UserInst,
2831 if (!IncConst || !isAddressUse(UserInst, Operand))
2837 MemAccessTy AccessTy = getAccessType(UserInst);
2853 User::op_iterator IVOpEnd = Head.UserInst->op_end();
2855 User::op_iterator IVOpIter = findIVOperand(Head.UserInst->op_begin(),
2877 DEBUG(dbgs() << "Concealed chain head: " << *Head.UserInst << "\n");
2886 Instruction *InsertPt = Inc.UserInst;
2909 if (!canFoldIVIncExpr(LeftOverExpr, Inc.UserInst, Inc.IVOperand, TTI)) {
2922 Inc.UserInst->replaceUsesOfWith(Inc.IVOperand, IVOper);
2952 Instruction *UserInst = U.getUser();
2954 User::op_iterator UseI = std::find(UserInst->op_begin(), UserInst->op_end(),
2956 assert(UseI != UserInst->op_end() && "cannot find IV operand");
2962 LF.UserInst = UserInst;
2968 if (isAddressUse(LF.UserInst, LF.OperandValToReplace)) {
2970 AccessTy = getAccessType(LF.UserInst);
2981 if (ICmpInst *CI = dyn_cast<ICmpInst>(LF.UserInst))
3113 const Instruction *UserInst = dyn_cast<Instruction>(U.getUser());
3115 if (!UserInst)
3119 if (UserInst->getParent()->getParent() != L->getHeader()->getParent())
3122 const BasicBlock *UseBB = !isa<PHINode>(UserInst) ?
3123 UserInst->getParent() :
3124 cast<PHINode>(UserInst)->getIncomingBlock(
3133 if (SE.isSCEVable(UserInst->getType())) {
3134 const SCEV *UserS = SE.getSCEV(const_cast<Instruction *>(UserInst));
3140 SE.getUnknown(const_cast<Instruction *>(UserInst)));
3145 if (const ICmpInst *ICI = dyn_cast<ICmpInst>(UserInst)) {
3153 LF.UserInst = const_cast<Instruction *>(UserInst);
4393 dyn_cast<Instruction>(cast<ICmpInst>(LF.UserInst)->getOperand(1)))
4485 LF.UserInst, LF.OperandValToReplace,
4499 LF.UserInst, LF.OperandValToReplace,
4594 ICmpInst *CI = cast<ICmpInst>(LF.UserInst);
4703 /// is called "expanding"), and update the UserInst to reference the newly
4709 // First, find an insertion point that dominates UserInst. For PHI nodes,
4711 if (PHINode *PN = dyn_cast<PHINode>(LF.UserInst)) {
4715 Expand(LF, F, LF.UserInst->getIterator(), Rewriter, DeadInsts);
4722 FullV, OpTy, "tmp", LF.UserInst);
4732 LF.UserInst->setOperand(0, FullV);
4734 LF.UserInst->replaceUsesOfWith(LF.OperandValToReplace, FullV);