Lines Matching refs:LSRUse

985 class LSRUse;
999 const LSRUse &LU, const Formula &F);
1003 const LSRUse &LU, const Formula &F,
1049 const LSRUse &LU,
1127 class LSRUse { class
1178 LSRUse(KindType K, MemAccessTy AT) : Kind(K), AccessTy(AT) {} in LSRUse() function in __anon244971d90711::LSRUse
1206 LSRUse::KindType Kind, MemAccessTy AccessTy,
1305 const LSRUse &LU, 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()
1491 bool LSRUse::HasFormulaWithSameRegs(const Formula &F) const { in HasFormulaWithSameRegs()
1500 float LSRUse::getNotSelectedProbability(const SCEV *Reg) const { in getNotSelectedProbability()
1510 bool LSRUse::InsertFormula(const Formula &F, const Loop &L) { in InsertFormula()
1544 void LSRUse::DeleteFormula(Formula &F) { in DeleteFormula()
1551 void LSRUse::RecomputeRegs(size_t LUIdx, RegUseTracker &RegUses) { in RecomputeRegs()
1567 void LSRUse::print(raw_ostream &OS) const { in print()
1600 LLVM_DUMP_METHOD void LSRUse::dump() const { in dump()
1606 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1611 case LSRUse::Address: in isAMCompletelyFolded()
1615 case LSRUse::ICmpZero: in isAMCompletelyFolded()
1647 case LSRUse::Basic: in isAMCompletelyFolded()
1651 case LSRUse::Special: in isAMCompletelyFolded()
1661 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1682 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1698 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1712 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1719 const LSRUse &LU, const Formula &F) { in isAMCompletelyFolded()
1721 if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) { in isAMCompletelyFolded()
1723 if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in isAMCompletelyFolded()
1736 const LSRUse &LU, const Formula &F, in getScalingFactorCost()
1748 case LSRUse::Address: { in getScalingFactorCost()
1761 case LSRUse::ICmpZero: in getScalingFactorCost()
1762 case LSRUse::Basic: in getScalingFactorCost()
1763 case LSRUse::Special: in getScalingFactorCost()
1773 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAlwaysFoldable()
1781 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1796 int64_t MaxOffset, LSRUse::KindType Kind, in isAlwaysFoldable()
1815 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1913 SmallVector<LSRUse, 16> Uses;
1945 using UseMapTy = DenseMap<LSRUse::SCEVUseKindPair, size_t>;
1948 bool reconcileNewOffset(LSRUse &LU, int64_t NewOffset, bool HasBaseReg,
1949 LSRUse::KindType Kind, MemAccessTy AccessTy);
1951 std::pair<size_t, int64_t> getUse(const SCEV *&Expr, LSRUse::KindType Kind,
1954 void DeleteUse(LSRUse &LU, size_t LUIdx);
1956 LSRUse *FindUseWithSimilarFormula(const Formula &F, const LSRUse &OrigLU);
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()
2492 bool HasBaseReg, LSRUse::KindType Kind, in reconcileNewOffset()
2507 if (Kind == LSRUse::Address) { in reconcileNewOffset()
2538 LSRUse::KindType Kind, in getUse()
2551 UseMap.insert(std::make_pair(LSRUse::SCEVUseKindPair(Expr, Kind), 0)); in getUse()
2555 LSRUse &LU = Uses[LUIdx]; in getUse()
2564 Uses.push_back(LSRUse(Kind, AccessTy)); in getUse()
2565 LSRUse &LU = Uses[LUIdx]; in getUse()
2573 void LSRInstance::DeleteUse(LSRUse &LU, size_t LUIdx) { in DeleteUse()
2584 LSRUse *
2586 const LSRUse &OrigLU) { in FindUseWithSimilarFormula()
2589 LSRUse &LU = Uses[LUIdx]; in FindUseWithSimilarFormula()
2596 LU.Kind != LSRUse::ICmpZero && in FindUseWithSimilarFormula()
3102 if (!isAlwaysFoldable(TTI, LSRUse::Address, AccessTy, /*BaseGV=*/nullptr, in canFoldIVIncExpr()
3224 LSRUse::KindType Kind = LSRUse::Basic; in CollectFixupsAndInitialFormulae()
3227 Kind = LSRUse::Address; in CollectFixupsAndInitialFormulae()
3258 Kind = LSRUse::ICmpZero; in CollectFixupsAndInitialFormulae()
3274 LSRUse &LU = Uses[LUIdx]; in CollectFixupsAndInitialFormulae()
3302 LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx) { in InsertInitialFormula()
3317 LSRUse &LU, size_t LUIdx) { in InsertSupplementalFormula()
3335 bool LSRInstance::InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F) { in InsertFormula()
3423 S, LSRUse::Basic, MemAccessTy()); in CollectLoopInvariantFixupsAndFormulae()
3426 LSRUse &LU = Uses[LUIdx]; in CollectLoopInvariantFixupsAndFormulae()
3508 LSRUse &LU, const SCEV *S, const Loop *L, in mayUsePostIncMode()
3510 if (LU.Kind != LSRUse::Address || in mayUsePostIncMode()
3533 void LSRInstance::GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx, in GenerateReassociationsImpl()
3626 void LSRInstance::GenerateReassociations(LSRUse &LU, unsigned LUIdx, in GenerateReassociations()
3643 void LSRInstance::GenerateCombinations(LSRUse &LU, unsigned LUIdx, in GenerateCombinations()
3706 void LSRInstance::GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsetsImpl()
3725 void LSRInstance::GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsets()
3739 LSRUse &LU, unsigned LUIdx, const Formula &Base, in GenerateConstantOffsetsImpl()
3781 void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, in GenerateConstantOffsets()
3799 void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, in GenerateICmpZeroScales()
3801 if (LU.Kind != LSRUse::ICmpZero) return; in GenerateICmpZeroScales()
3892 void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateScales()
3913 if (LU.Kind == LSRUse::Basic && in GenerateScales()
3914 isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LSRUse::Special, in GenerateScales()
3917 LU.Kind = LSRUse::Special; in GenerateScales()
3923 if (LU.Kind == LSRUse::ICmpZero && in GenerateScales()
3958 void LSRInstance::GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateTruncates()
4097 LSRUse &LU = Uses[LUIdx]; in GenerateCrossUseConstantOffsets()
4188 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4195 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4206 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4236 LSRUse &LU = Uses[LUIdx]; in FilterOutUndesirableDedicatedRegisters()
4324 for (const LSRUse &LU : Uses) { in EstimateSearchSpaceComplexity()
4349 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDetectingSupersets()
4414 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByCollapsingUnrolledCode()
4419 LSRUse *LUThatHas = FindUseWithSimilarFormula(F, LU); in NarrowSearchSpaceByCollapsingUnrolledCode()
4511 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4643 for (const LSRUse &LU : Uses) { in NarrowSearchSpaceByDeletingCostlyFormulas()
4660 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDeletingCostlyFormulas()
4757 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByPickingWinnerRegs()
4815 const LSRUse &LU = Uses[Workspace.size()]; in SolveRecurse()
4972 const LSRUse &LU, in AdjustInsertPositionForExpand()
4980 if (LU.Kind == LSRUse::ICmpZero) in AdjustInsertPositionForExpand()
5034 Value *LSRInstance::Expand(const LSRUse &LU, const LSRFixup &LF, in Expand()
5084 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5103 if (!Ops.empty() && LU.Kind == LSRUse::Address && 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()
5286 void LSRInstance::Rewrite(const LSRUse &LU, const LSRFixup &LF, in Rewrite()
5311 if (LU.Kind == LSRUse::ICmpZero) in Rewrite()
5461 for (const LSRUse &LU : Uses) { in LSRInstance()
5495 for (const LSRUse &LU : Uses) in print_fixups()
5505 for (const LSRUse &LU : Uses) { in print_uses()