Lines Matching refs:LU

999                                  const LSRUse &LU, const Formula &F);
1003 const LSRUse &LU, const Formula &F,
1049 const LSRUse &LU,
1305 const LSRUse &LU, in RateFormula() argument
1337 NumBaseParts - (1 + (F.Scale && isAMCompletelyFolded(TTI, LU, F))); in RateFormula()
1341 C.ScaleCost += getScalingFactorCost(TTI, LU, F, *L); in RateFormula()
1344 for (const LSRFixup &Fixup : LU.Fixups) { in RateFormula()
1355 if (LU.Kind == LSRUse::Address && Offset != 0 && in RateFormula()
1356 !isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in RateFormula()
1389 if (LU.Kind == LSRUse::ICmpZero && !F.hasZeroEnd() && !TTI.canMacroFuseCmp()) in RateFormula()
1395 if (LU.Kind != LSRUse::ICmpZero) in RateFormula()
1719 const LSRUse &LU, const Formula &F) { in isAMCompletelyFolded() argument
1721 if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) { in isAMCompletelyFolded()
1722 for (const LSRFixup &Fixup : LU.Fixups) in isAMCompletelyFolded()
1723 if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in isAMCompletelyFolded()
1730 return isAMCompletelyFolded(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, in isAMCompletelyFolded()
1731 LU.AccessTy, F.BaseGV, F.BaseOffset, F.HasBaseReg, in isAMCompletelyFolded()
1736 const LSRUse &LU, const Formula &F, in getScalingFactorCost() argument
1743 if (!isAMCompletelyFolded(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, in getScalingFactorCost()
1744 LU.AccessTy, F, L)) in getScalingFactorCost()
1747 switch (LU.Kind) { in getScalingFactorCost()
1751 LU.AccessTy.MemTy, F.BaseGV, F.BaseOffset + LU.MinOffset, F.HasBaseReg, in getScalingFactorCost()
1752 F.Scale, LU.AccessTy.AddrSpace); in getScalingFactorCost()
1754 LU.AccessTy.MemTy, F.BaseGV, F.BaseOffset + LU.MaxOffset, F.HasBaseReg, in getScalingFactorCost()
1755 F.Scale, LU.AccessTy.AddrSpace); in getScalingFactorCost()
1948 bool reconcileNewOffset(LSRUse &LU, int64_t NewOffset, bool HasBaseReg,
1954 void DeleteUse(LSRUse &LU, size_t LUIdx);
1958 void InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
1959 void InsertSupplementalFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
1961 bool InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F);
1965 void GenerateReassociations(LSRUse &LU, unsigned LUIdx, Formula Base,
1968 void GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx,
1971 void GenerateCombinations(LSRUse &LU, unsigned LUIdx, Formula Base);
1972 void GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx,
1975 void GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
1976 void GenerateConstantOffsetsImpl(LSRUse &LU, unsigned LUIdx,
1980 void GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
1981 void GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, Formula Base);
1982 void GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base);
1983 void GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base);
2012 const LSRUse &LU,
2015 Value *Expand(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2018 void RewriteForPHI(PHINode *PN, const LSRUse &LU, const LSRFixup &LF,
2021 void Rewrite(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2491 bool LSRInstance::reconcileNewOffset(LSRUse &LU, int64_t NewOffset, in reconcileNewOffset() argument
2494 int64_t NewMinOffset = LU.MinOffset; in reconcileNewOffset()
2495 int64_t NewMaxOffset = LU.MaxOffset; in reconcileNewOffset()
2501 if (LU.Kind != Kind) in reconcileNewOffset()
2508 if (AccessTy.MemTy != LU.AccessTy.MemTy) { in reconcileNewOffset()
2515 if (NewOffset < LU.MinOffset) { in reconcileNewOffset()
2517 LU.MaxOffset - NewOffset, HasBaseReg)) in reconcileNewOffset()
2520 } else if (NewOffset > LU.MaxOffset) { in reconcileNewOffset()
2522 NewOffset - LU.MinOffset, HasBaseReg)) in reconcileNewOffset()
2528 LU.MinOffset = NewMinOffset; in reconcileNewOffset()
2529 LU.MaxOffset = NewMaxOffset; in reconcileNewOffset()
2530 LU.AccessTy = NewAccessTy; in reconcileNewOffset()
2555 LSRUse &LU = Uses[LUIdx]; in getUse() local
2556 if (reconcileNewOffset(LU, Offset, /*HasBaseReg=*/true, Kind, AccessTy)) in getUse()
2565 LSRUse &LU = Uses[LUIdx]; in getUse() local
2567 LU.MinOffset = Offset; in getUse()
2568 LU.MaxOffset = Offset; in getUse()
2573 void LSRInstance::DeleteUse(LSRUse &LU, size_t LUIdx) { in DeleteUse() argument
2574 if (&LU != &Uses.back()) in DeleteUse()
2575 std::swap(LU, Uses.back()); in DeleteUse()
2589 LSRUse &LU = Uses[LUIdx]; in FindUseWithSimilarFormula() local
2595 if (&LU != &OrigLU && in FindUseWithSimilarFormula()
2596 LU.Kind != LSRUse::ICmpZero && in FindUseWithSimilarFormula()
2597 LU.Kind == OrigLU.Kind && OrigLU.AccessTy == LU.AccessTy && in FindUseWithSimilarFormula()
2598 LU.WidestFixupType == OrigLU.WidestFixupType && in FindUseWithSimilarFormula()
2599 LU.HasFormulaWithSameRegs(OrigF)) { in FindUseWithSimilarFormula()
2601 for (const Formula &F : LU.Formulae) { in FindUseWithSimilarFormula()
2610 return &LU; in FindUseWithSimilarFormula()
3274 LSRUse &LU = Uses[LUIdx]; in CollectFixupsAndInitialFormulae() local
3277 LSRFixup &LF = LU.getNewFixup(); in CollectFixupsAndInitialFormulae()
3282 LU.AllFixupsOutsideLoop &= LF.isUseFullyOutsideLoop(L); in CollectFixupsAndInitialFormulae()
3284 if (!LU.WidestFixupType || in CollectFixupsAndInitialFormulae()
3285 SE.getTypeSizeInBits(LU.WidestFixupType) < in CollectFixupsAndInitialFormulae()
3287 LU.WidestFixupType = LF.OperandValToReplace->getType(); in CollectFixupsAndInitialFormulae()
3290 if (LU.Formulae.empty()) { in CollectFixupsAndInitialFormulae()
3291 InsertInitialFormula(S, LU, LUIdx); in CollectFixupsAndInitialFormulae()
3292 CountRegisters(LU.Formulae.back(), LUIdx); in CollectFixupsAndInitialFormulae()
3302 LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx) { in InsertInitialFormula() argument
3305 LU.RigidFormula = true; in InsertInitialFormula()
3309 bool Inserted = InsertFormula(LU, LUIdx, F); in InsertInitialFormula()
3317 LSRUse &LU, size_t LUIdx) { in InsertSupplementalFormula() argument
3321 bool Inserted = InsertFormula(LU, LUIdx, F); in InsertSupplementalFormula()
3335 bool LSRInstance::InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F) { in InsertFormula() argument
3337 assert(isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F) && in InsertFormula()
3340 if (!LU.InsertFormula(F, *L)) in InsertFormula()
3426 LSRUse &LU = Uses[LUIdx]; in CollectLoopInvariantFixupsAndFormulae() local
3427 LSRFixup &LF = LU.getNewFixup(); in CollectLoopInvariantFixupsAndFormulae()
3431 LU.AllFixupsOutsideLoop &= LF.isUseFullyOutsideLoop(L); in CollectLoopInvariantFixupsAndFormulae()
3432 if (!LU.WidestFixupType || in CollectLoopInvariantFixupsAndFormulae()
3433 SE.getTypeSizeInBits(LU.WidestFixupType) < in CollectLoopInvariantFixupsAndFormulae()
3435 LU.WidestFixupType = LF.OperandValToReplace->getType(); in CollectLoopInvariantFixupsAndFormulae()
3436 InsertSupplementalFormula(US, LU, LUIdx); in CollectLoopInvariantFixupsAndFormulae()
3437 CountRegisters(LU.Formulae.back(), Uses.size() - 1); in CollectLoopInvariantFixupsAndFormulae()
3508 LSRUse &LU, const SCEV *S, const Loop *L, in mayUsePostIncMode() argument
3510 if (LU.Kind != LSRUse::Address || in mayUsePostIncMode()
3511 !LU.AccessTy.getType()->isIntOrIntVectorTy()) in mayUsePostIncMode()
3519 if (LU.AccessTy.getType()->getScalarSizeInBits() != in mayUsePostIncMode()
3533 void LSRInstance::GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx, in GenerateReassociationsImpl() argument
3542 if (TTI.shouldFavorPostInc() && mayUsePostIncMode(TTI, LU, BaseReg, L, SE)) in GenerateReassociationsImpl()
3562 if (isAlwaysFoldable(TTI, SE, LU.MinOffset, LU.MaxOffset, LU.Kind, in GenerateReassociationsImpl()
3563 LU.AccessTy, *J, Base.getNumRegs() > 1)) in GenerateReassociationsImpl()
3575 isAlwaysFoldable(TTI, SE, LU.MinOffset, LU.MaxOffset, LU.Kind, in GenerateReassociationsImpl()
3576 LU.AccessTy, InnerAddOps[0], Base.getNumRegs() > 1)) in GenerateReassociationsImpl()
3613 if (InsertFormula(LU, LUIdx, F)) in GenerateReassociationsImpl()
3620 GenerateReassociations(LU, LUIdx, LU.Formulae.back(), in GenerateReassociationsImpl()
3626 void LSRInstance::GenerateReassociations(LSRUse &LU, unsigned LUIdx, in GenerateReassociations() argument
3634 GenerateReassociationsImpl(LU, LUIdx, Base, Depth, i); in GenerateReassociations()
3637 GenerateReassociationsImpl(LU, LUIdx, Base, Depth, in GenerateReassociations()
3643 void LSRInstance::GenerateCombinations(LSRUse &LU, unsigned LUIdx, in GenerateCombinations() argument
3685 (void)InsertFormula(LU, LUIdx, F); in GenerateCombinations()
3706 void LSRInstance::GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsetsImpl() argument
3715 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F)) in GenerateSymbolicOffsetsImpl()
3721 (void)InsertFormula(LU, LUIdx, F); in GenerateSymbolicOffsetsImpl()
3725 void LSRInstance::GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsets() argument
3731 GenerateSymbolicOffsetsImpl(LU, LUIdx, Base, i); in GenerateSymbolicOffsets()
3733 GenerateSymbolicOffsetsImpl(LU, LUIdx, Base, /* Idx */ -1, in GenerateSymbolicOffsets()
3739 LSRUse &LU, unsigned LUIdx, const Formula &Base, in GenerateConstantOffsetsImpl() argument
3745 if (isLegalUse(TTI, LU.MinOffset - Offset, LU.MaxOffset - Offset, LU.Kind, in GenerateConstantOffsetsImpl()
3746 LU.AccessTy, F)) { in GenerateConstantOffsetsImpl()
3762 (void)InsertFormula(LU, LUIdx, F); in GenerateConstantOffsetsImpl()
3771 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, F)) in GenerateConstantOffsetsImpl()
3777 (void)InsertFormula(LU, LUIdx, F); in GenerateConstantOffsetsImpl()
3781 void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, in GenerateConstantOffsets() argument
3786 Worklist.push_back(LU.MinOffset); in GenerateConstantOffsets()
3787 if (LU.MaxOffset != LU.MinOffset) in GenerateConstantOffsets()
3788 Worklist.push_back(LU.MaxOffset); in GenerateConstantOffsets()
3791 GenerateConstantOffsetsImpl(LU, LUIdx, Base, Worklist, i); in GenerateConstantOffsets()
3793 GenerateConstantOffsetsImpl(LU, LUIdx, Base, Worklist, /* Idx */ -1, in GenerateConstantOffsets()
3799 void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, in GenerateICmpZeroScales() argument
3801 if (LU.Kind != LSRUse::ICmpZero) return; in GenerateICmpZeroScales()
3809 if (LU.MinOffset != LU.MaxOffset) return; in GenerateICmpZeroScales()
3833 int64_t Offset = LU.MinOffset; in GenerateICmpZeroScales()
3837 if (Offset / Factor != LU.MinOffset) in GenerateICmpZeroScales()
3848 if (!isLegalUse(TTI, Offset, Offset, LU.Kind, LU.AccessTy, F)) in GenerateICmpZeroScales()
3852 F.BaseOffset = (uint64_t)F.BaseOffset + Offset - LU.MinOffset; in GenerateICmpZeroScales()
3885 (void)InsertFormula(LU, LUIdx, F); in GenerateICmpZeroScales()
3892 void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateScales() argument
3909 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, in GenerateScales()
3913 if (LU.Kind == LSRUse::Basic && in GenerateScales()
3914 isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LSRUse::Special, in GenerateScales()
3915 LU.AccessTy, Base) && in GenerateScales()
3916 LU.AllFixupsOutsideLoop) in GenerateScales()
3917 LU.Kind = LSRUse::Special; in GenerateScales()
3923 if (LU.Kind == LSRUse::ICmpZero && in GenerateScales()
3929 if (AR && (AR->getLoop() == L || LU.AllFixupsOutsideLoop)) { in GenerateScales()
3944 (AR->getLoop() != L && LU.AllFixupsOutsideLoop))) in GenerateScales()
3948 if (F.Scale == 1 && LU.AllFixupsOutsideLoop) in GenerateScales()
3950 (void)InsertFormula(LU, LUIdx, F); in GenerateScales()
3958 void LSRInstance::GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateTruncates() argument
3981 (void)InsertFormula(LU, LUIdx, F); in GenerateTruncates()
4097 LSRUse &LU = Uses[LUIdx]; in GenerateCrossUseConstantOffsets() local
4106 for (size_t L = 0, LE = LU.Formulae.size(); L != LE; ++L) { in GenerateCrossUseConstantOffsets()
4107 Formula F = LU.Formulae[L]; in GenerateCrossUseConstantOffsets()
4122 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, in GenerateCrossUseConstantOffsets()
4138 (void)InsertFormula(LU, LUIdx, NewF); in GenerateCrossUseConstantOffsets()
4147 if (!isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, in GenerateCrossUseConstantOffsets()
4148 LU.Kind, LU.AccessTy, NewF)) { in GenerateCrossUseConstantOffsets()
4150 mayUsePostIncMode(TTI, LU, OrigReg, this->L, SE)) in GenerateCrossUseConstantOffsets()
4173 (void)InsertFormula(LU, LUIdx, NewF); in GenerateCrossUseConstantOffsets()
4188 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae() local
4189 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4190 GenerateReassociations(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4191 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4192 GenerateCombinations(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4195 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae() local
4196 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4197 GenerateSymbolicOffsets(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4198 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4199 GenerateConstantOffsets(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4200 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4201 GenerateICmpZeroScales(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4202 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4203 GenerateScales(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4206 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae() local
4207 for (size_t i = 0, f = LU.Formulae.size(); i != f; ++i) in GenerateAllReuseFormulae()
4208 GenerateTruncates(LU, LUIdx, LU.Formulae[i]); in GenerateAllReuseFormulae()
4236 LSRUse &LU = Uses[LUIdx]; in FilterOutUndesirableDedicatedRegisters() local
4237 LLVM_DEBUG(dbgs() << "Filtering for use "; LU.print(dbgs()); in FilterOutUndesirableDedicatedRegisters()
4241 for (size_t FIdx = 0, NumForms = LU.Formulae.size(); in FilterOutUndesirableDedicatedRegisters()
4243 Formula &F = LU.Formulae[FIdx]; in FilterOutUndesirableDedicatedRegisters()
4254 CostF.RateFormula(TTI, F, Regs, VisitedRegs, L, SE, DT, LU, &LoserRegs); in FilterOutUndesirableDedicatedRegisters()
4283 Formula &Best = LU.Formulae[P.first->second]; in FilterOutUndesirableDedicatedRegisters()
4287 CostBest.RateFormula(TTI, Best, Regs, VisitedRegs, L, SE, DT, LU); in FilterOutUndesirableDedicatedRegisters()
4298 LU.DeleteFormula(F); in FilterOutUndesirableDedicatedRegisters()
4306 LU.RecomputeRegs(LUIdx, RegUses); in FilterOutUndesirableDedicatedRegisters()
4324 for (const LSRUse &LU : Uses) { in EstimateSearchSpaceComplexity() local
4325 size_t FSize = LU.Formulae.size(); in EstimateSearchSpaceComplexity()
4349 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDetectingSupersets() local
4351 for (size_t i = 0, e = LU.Formulae.size(); i != e; ++i) { in NarrowSearchSpaceByDetectingSupersets()
4352 Formula &F = LU.Formulae[i]; in NarrowSearchSpaceByDetectingSupersets()
4363 if (LU.HasFormulaWithSameRegs(NewF)) { in NarrowSearchSpaceByDetectingSupersets()
4366 LU.DeleteFormula(F); in NarrowSearchSpaceByDetectingSupersets()
4379 if (LU.HasFormulaWithSameRegs(NewF)) { in NarrowSearchSpaceByDetectingSupersets()
4382 LU.DeleteFormula(F); in NarrowSearchSpaceByDetectingSupersets()
4393 LU.RecomputeRegs(LUIdx, RegUses); in NarrowSearchSpaceByDetectingSupersets()
4414 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByCollapsingUnrolledCode() local
4415 for (const Formula &F : LU.Formulae) { in NarrowSearchSpaceByCollapsingUnrolledCode()
4419 LSRUse *LUThatHas = FindUseWithSimilarFormula(F, LU); in NarrowSearchSpaceByCollapsingUnrolledCode()
4424 LU.Kind, LU.AccessTy)) in NarrowSearchSpaceByCollapsingUnrolledCode()
4427 LLVM_DEBUG(dbgs() << " Deleting use "; LU.print(dbgs()); dbgs() << '\n'); in NarrowSearchSpaceByCollapsingUnrolledCode()
4429 LUThatHas->AllFixupsOutsideLoop &= LU.AllFixupsOutsideLoop; in NarrowSearchSpaceByCollapsingUnrolledCode()
4432 for (LSRFixup &Fixup : LU.Fixups) { in NarrowSearchSpaceByCollapsingUnrolledCode()
4456 DeleteUse(LU, LUIdx); in NarrowSearchSpaceByCollapsingUnrolledCode()
4511 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg() local
4512 LLVM_DEBUG(dbgs() << "Filtering for use "; LU.print(dbgs()); in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4538 CostFA.RateFormula(TTI, FA, Regs, VisitedRegs, L, SE, DT, LU); in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4540 CostFB.RateFormula(TTI, FB, Regs, VisitedRegs, L, SE, DT, LU); in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4545 for (size_t FIdx = 0, NumForms = LU.Formulae.size(); FIdx != NumForms; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4547 Formula &F = LU.Formulae[FIdx]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4554 Formula &Best = LU.Formulae[P.first->second]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4564 LU.DeleteFormula(F); in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4570 LU.RecomputeRegs(LUIdx, RegUses); in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4643 for (const LSRUse &LU : Uses) { in NarrowSearchSpaceByDeletingCostlyFormulas() local
4644 if (!LU.Regs.count(Reg)) in NarrowSearchSpaceByDeletingCostlyFormulas()
4646 float P = LU.getNotSelectedProbability(Reg); in NarrowSearchSpaceByDeletingCostlyFormulas()
4660 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDeletingCostlyFormulas() local
4662 if (LU.Formulae.size() < 2) in NarrowSearchSpaceByDeletingCostlyFormulas()
4667 float FMinRegNum = LU.Formulae[0].getNumRegs(); in NarrowSearchSpaceByDeletingCostlyFormulas()
4668 float FMinARegNum = LU.Formulae[0].getNumRegs(); in NarrowSearchSpaceByDeletingCostlyFormulas()
4670 for (size_t i = 0, e = LU.Formulae.size(); i != e; ++i) { in NarrowSearchSpaceByDeletingCostlyFormulas()
4671 Formula &F = LU.Formulae[i]; in NarrowSearchSpaceByDeletingCostlyFormulas()
4677 FRegNum += RegNumMap[BaseReg] / LU.getNotSelectedProbability(BaseReg); in NarrowSearchSpaceByDeletingCostlyFormulas()
4680 RegNumMap[BaseReg] / LU.getNotSelectedProbability(BaseReg); in NarrowSearchSpaceByDeletingCostlyFormulas()
4685 RegNumMap[ScaledReg] / LU.getNotSelectedProbability(ScaledReg); in NarrowSearchSpaceByDeletingCostlyFormulas()
4688 RegNumMap[ScaledReg] / LU.getNotSelectedProbability(ScaledReg); in NarrowSearchSpaceByDeletingCostlyFormulas()
4698 LLVM_DEBUG(dbgs() << " The formula "; LU.Formulae[MinIdx].print(dbgs()); in NarrowSearchSpaceByDeletingCostlyFormulas()
4701 std::swap(LU.Formulae[MinIdx], LU.Formulae[0]); in NarrowSearchSpaceByDeletingCostlyFormulas()
4702 while (LU.Formulae.size() != 1) { in NarrowSearchSpaceByDeletingCostlyFormulas()
4703 LLVM_DEBUG(dbgs() << " Deleting "; LU.Formulae.back().print(dbgs()); in NarrowSearchSpaceByDeletingCostlyFormulas()
4705 LU.Formulae.pop_back(); in NarrowSearchSpaceByDeletingCostlyFormulas()
4707 LU.RecomputeRegs(LUIdx, RegUses); in NarrowSearchSpaceByDeletingCostlyFormulas()
4708 assert(LU.Formulae.size() == 1 && "Should be exactly 1 min regs formula"); in NarrowSearchSpaceByDeletingCostlyFormulas()
4709 Formula &F = LU.Formulae[0]; in NarrowSearchSpaceByDeletingCostlyFormulas()
4757 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByPickingWinnerRegs() local
4758 if (!LU.Regs.count(Best)) continue; in NarrowSearchSpaceByPickingWinnerRegs()
4761 for (size_t i = 0, e = LU.Formulae.size(); i != e; ++i) { in NarrowSearchSpaceByPickingWinnerRegs()
4762 Formula &F = LU.Formulae[i]; in NarrowSearchSpaceByPickingWinnerRegs()
4765 LU.DeleteFormula(F); in NarrowSearchSpaceByPickingWinnerRegs()
4775 LU.RecomputeRegs(LUIdx, RegUses); in NarrowSearchSpaceByPickingWinnerRegs()
4815 const LSRUse &LU = Uses[Workspace.size()]; in SolveRecurse() local
4823 if (LU.Regs.count(S)) in SolveRecurse()
4828 for (const Formula &F : LU.Formulae) { in SolveRecurse()
4851 NewCost.RateFormula(TTI, F, NewRegs, VisitedRegs, L, SE, DT, LU); in SolveRecurse()
4972 const LSRUse &LU, in AdjustInsertPositionForExpand() argument
4980 if (LU.Kind == LSRUse::ICmpZero) in AdjustInsertPositionForExpand()
5034 Value *LSRInstance::Expand(const LSRUse &LU, const LSRFixup &LF, in Expand() argument
5038 if (LU.RigidFormula) in Expand()
5043 IP = AdjustInsertPositionForExpand(IP, LF, LU, Rewriter); in Expand()
5084 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5103 if (!Ops.empty() && LU.Kind == LSRUse::Address && in Expand()
5104 isAMCompletelyFolded(TTI, LU, F)) { in Expand()
5139 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5175 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5213 PHINode *PN, const LSRUse &LU, const LSRFixup &LF, const Formula &F, in RewriteForPHI() argument
5265 Value *FullV = Expand(LU, LF, F, BB->getTerminator()->getIterator(), in RewriteForPHI()
5286 void LSRInstance::Rewrite(const LSRUse &LU, const LSRFixup &LF, in Rewrite() argument
5292 RewriteForPHI(PN, LU, LF, F, Rewriter, DeadInsts); in Rewrite()
5295 Expand(LU, LF, F, LF.UserInst->getIterator(), Rewriter, DeadInsts); in Rewrite()
5311 if (LU.Kind == LSRUse::ICmpZero) in Rewrite()
5461 for (const LSRUse &LU : Uses) { in LSRInstance() local
5462 for (const Formula &F : LU.Formulae) in LSRInstance()
5463 assert(isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LU.Kind, LU.AccessTy, in LSRInstance()
5495 for (const LSRUse &LU : Uses) in print_fixups() local
5496 for (const LSRFixup &LF : LU.Fixups) { in print_fixups()
5505 for (const LSRUse &LU : Uses) { in print_uses() local
5507 LU.print(OS); in print_uses()
5509 for (const Formula &F : LU.Formulae) { in print_uses()