Lines Matching refs:LF
1783 const LSRFixup &LF,
1787 Value *Expand(const LSRFixup &LF,
1792 void RewriteForPHI(PHINode *PN, const LSRFixup &LF,
1797 void Rewrite(const LSRFixup &LF,
2992 LSRFixup &LF = getNewFixup();
2993 LF.UserInst = UserInst;
2994 LF.OperandValToReplace = UI->getOperandValToReplace();
2995 LF.PostIncLoops = UI->getPostIncLoops();
2999 if (isAddressUse(LF.UserInst, LF.OperandValToReplace)) {
3001 AccessTy = getAccessType(LF.UserInst);
3012 if (ICmpInst *CI = dyn_cast<ICmpInst>(LF.UserInst))
3017 if (NV == LF.OperandValToReplace) {
3030 LF.PostIncLoops, SE, DT);
3045 LF.LUIdx = P.first;
3046 LF.Offset = P.second;
3047 LF.LUIdx];
3048 LU.AllFixupsOutsideLoop &= LF.isUseFullyOutsideLoop(L);
3051 SE.getTypeSizeInBits(LF.OperandValToReplace->getType()))
3052 LU.WidestFixupType = LF.OperandValToReplace->getType();
3056 InsertInitialFormula(S, LU, LF.LUIdx);
3057 CountRegisters(LU.Formulae.back(), LF.LUIdx);
3180 LSRFixup &LF = getNewFixup();
3181 LF.UserInst = const_cast<Instruction *>(UserInst);
3182 LF.OperandValToReplace = U;
3184 LF.LUIdx = P.first;
3185 LF.Offset = P.second;
3186 LSRUse &LU = Uses[LF.LUIdx];
3187 LU.AllFixupsOutsideLoop &= LF.isUseFullyOutsideLoop(L);
3190 SE.getTypeSizeInBits(LF.OperandValToReplace->getType()))
3191 LU.WidestFixupType = LF.OperandValToReplace->getType();
3192 InsertSupplementalFormula(US, LU, LF.LUIdx);
4459 const LSRFixup &LF,
4466 if (Instruction *I = dyn_cast<Instruction>(LF.OperandValToReplace))
4470 dyn_cast<Instruction>(cast<ICmpInst>(LF.UserInst)->getOperand(1)))
4472 if (LF.PostIncLoops.count(L)) {
4473 if (LF.isUseFullyOutsideLoop(L))
4480 for (PostIncLoopSet::const_iterator I = LF.PostIncLoops.begin(),
4481 E = LF.PostIncLoops.end(); I != E; ++I) {
4523 Value *LSRInstance::Expand(const LSRFixup &LF,
4528 const LSRUse &LU = Uses[LF.LUIdx];
4530 return LF.OperandValToReplace;
4534 IP = AdjustInsertPositionForExpand(IP, LF, LU, Rewriter);
4538 Rewriter.setPostInc(LF.PostIncLoops);
4541 Type *OpTy = LF.OperandValToReplace->getType();
4563 PostIncLoopSet &Loops = const_cast<PostIncLoopSet &>(LF.PostIncLoops);
4565 LF.UserInst, LF.OperandValToReplace,
4577 PostIncLoopSet &Loops = const_cast<PostIncLoopSet &>(LF.PostIncLoops);
4579 LF.UserInst, LF.OperandValToReplace,
4635 int64_t Offset = (uint64_t)F.BaseOffset + LF.Offset;
4674 ICmpInst *CI = cast<ICmpInst>(LF.UserInst);
4711 const LSRFixup &LF,
4718 if (PN->getIncomingValue(i) == LF.OperandValToReplace) {
4764 Value *FullV = Expand(LF, F, BB->getTerminator(), Rewriter, DeadInsts);
4767 Type *OpTy = LF.OperandValToReplace->getType();
4772 FullV, LF.OperandValToReplace->getType(),
4784 void LSRInstance::Rewrite(const LSRFixup &LF,
4791 if (PHINode *PN = dyn_cast<PHINode>(LF.UserInst)) {
4792 RewriteForPHI(PN, LF, F, Rewriter, DeadInsts, P);
4794 Value *FullV = Expand(LF, F, LF.UserInst, Rewriter, DeadInsts);
4797 Type *OpTy = LF.OperandValToReplace->getType();
4801 FullV, OpTy, "tmp", LF.UserInst);
4807 // its new value may happen to be equal to LF.OperandValToReplace, in
4810 if (Uses[LF.LUIdx].Kind == LSRUse::ICmpZero)
4811 LF.UserInst->setOperand(0, FullV);
4813 LF.UserInst->replaceUsesOfWith(LF.OperandValToReplace, FullV);
4816 DeadInsts.push_back(LF.OperandValToReplace);