Lines Matching refs:LSRUse

1024 class LSRUse;
1038 const LSRUse &LU, const Formula &F);
1042 const LSRUse &LU, const Formula &F,
1092 const LSRUse &LU,
1164 class LSRUse { class
1215 LSRUse(KindType K, MemAccessTy AT) : Kind(K), AccessTy(AT) {} in LSRUse() function in __anon3f0d62640811::LSRUse
1243 LSRUse::KindType Kind, MemAccessTy AccessTy,
1356 const LSRUse &LU, in RateFormula()
1408 if (LU.Kind == LSRUse::Address && Offset != 0 && in RateFormula()
1409 !isAMCompletelyFolded(*TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in RateFormula()
1444 if (LU.Kind == LSRUse::ICmpZero && !F.hasZeroEnd() && in RateFormula()
1451 if (LU.Kind != LSRUse::ICmpZero) in RateFormula()
1547 bool LSRUse::HasFormulaWithSameRegs(const Formula &F) const { in HasFormulaWithSameRegs()
1556 float LSRUse::getNotSelectedProbability(const SCEV *Reg) const { in getNotSelectedProbability()
1566 bool LSRUse::InsertFormula(const Formula &F, const Loop &L) { in InsertFormula()
1600 void LSRUse::DeleteFormula(Formula &F) { in DeleteFormula()
1607 void LSRUse::RecomputeRegs(size_t LUIdx, RegUseTracker &RegUses) { in RecomputeRegs()
1623 void LSRUse::print(raw_ostream &OS) const { in print()
1656 LLVM_DUMP_METHOD void LSRUse::dump() const { in dump()
1662 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1667 case LSRUse::Address: in isAMCompletelyFolded()
1671 case LSRUse::ICmpZero: in isAMCompletelyFolded()
1703 case LSRUse::Basic: in isAMCompletelyFolded()
1707 case LSRUse::Special: in isAMCompletelyFolded()
1717 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1738 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1754 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1768 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1775 const LSRUse &LU, const Formula &F) { in isAMCompletelyFolded()
1777 if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) { in isAMCompletelyFolded()
1779 if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in isAMCompletelyFolded()
1792 const LSRUse &LU, const Formula &F, in getScalingFactorCost()
1804 case LSRUse::Address: { in getScalingFactorCost()
1817 case LSRUse::ICmpZero: in getScalingFactorCost()
1818 case LSRUse::Basic: in getScalingFactorCost()
1819 case LSRUse::Special: in getScalingFactorCost()
1829 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAlwaysFoldable()
1837 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1852 int64_t MaxOffset, LSRUse::KindType Kind, in isAlwaysFoldable()
1871 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1974 mutable SmallVector<LSRUse, 16> Uses;
2009 using UseMapTy = DenseMap<LSRUse::SCEVUseKindPair, size_t>;
2012 bool reconcileNewOffset(LSRUse &LU, int64_t NewOffset, bool HasBaseReg,
2013 LSRUse::KindType Kind, MemAccessTy AccessTy);
2015 std::pair<size_t, int64_t> getUse(const SCEV *&Expr, LSRUse::KindType Kind,
2018 void DeleteUse(LSRUse &LU, size_t LUIdx);
2020 LSRUse *FindUseWithSimilarFormula(const Formula &F, const LSRUse &OrigLU);
2022 void InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2023 void InsertSupplementalFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2025 bool InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F);
2029 void GenerateReassociations(LSRUse &LU, unsigned LUIdx, Formula Base,
2032 void GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx,
2035 void GenerateCombinations(LSRUse &LU, unsigned LUIdx, Formula Base);
2036 void GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx,
2039 void GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
2040 void GenerateConstantOffsetsImpl(LSRUse &LU, unsigned LUIdx,
2044 void GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
2045 void GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, Formula Base);
2046 void GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base);
2047 void GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base);
2076 const LSRUse &LU) const;
2078 Value *Expand(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2081 void RewriteForPHI(PHINode *PN, const LSRUse &LU, const LSRFixup &LF,
2084 void Rewrite(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2558 bool LSRInstance::reconcileNewOffset(LSRUse &LU, int64_t NewOffset, in reconcileNewOffset()
2559 bool HasBaseReg, LSRUse::KindType Kind, in reconcileNewOffset()
2574 if (Kind == LSRUse::Address) { in reconcileNewOffset()
2605 LSRUse::KindType Kind, in getUse()
2618 UseMap.insert(std::make_pair(LSRUse::SCEVUseKindPair(Expr, Kind), 0)); in getUse()
2622 LSRUse &LU = Uses[LUIdx]; in getUse()
2631 Uses.push_back(LSRUse(Kind, AccessTy)); in getUse()
2632 LSRUse &LU = Uses[LUIdx]; in getUse()
2640 void LSRInstance::DeleteUse(LSRUse &LU, size_t LUIdx) { in DeleteUse()
2651 LSRUse *
2653 const LSRUse &OrigLU) { in FindUseWithSimilarFormula()
2656 LSRUse &LU = Uses[LUIdx]; in FindUseWithSimilarFormula()
2663 LU.Kind != LSRUse::ICmpZero && in FindUseWithSimilarFormula()
3175 if (!isAlwaysFoldable(TTI, LSRUse::Address, AccessTy, /*BaseGV=*/nullptr, in canFoldIVIncExpr()
3302 LSRUse::KindType Kind = LSRUse::Basic; in CollectFixupsAndInitialFormulae()
3305 Kind = LSRUse::Address; in CollectFixupsAndInitialFormulae()
3342 Kind = LSRUse::ICmpZero; in CollectFixupsAndInitialFormulae()
3356 Kind = LSRUse::ICmpZero; in CollectFixupsAndInitialFormulae()
3374 LSRUse &LU = Uses[LUIdx]; in CollectFixupsAndInitialFormulae()
3401 void LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, in InsertInitialFormula()
3417 LSRUse &LU, size_t LUIdx) { in InsertSupplementalFormula()
3435 bool LSRInstance::InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F) { in InsertFormula()
3551 S, LSRUse::Basic, MemAccessTy()); in CollectLoopInvariantFixupsAndFormulae()
3554 LSRUse &LU = Uses[LUIdx]; in CollectLoopInvariantFixupsAndFormulae()
3636 LSRUse &LU, const SCEV *S, const Loop *L, in mayUsePostIncMode()
3638 if (LU.Kind != LSRUse::Address || in mayUsePostIncMode()
3658 void LSRInstance::GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx, in GenerateReassociationsImpl()
3751 void LSRInstance::GenerateReassociations(LSRUse &LU, unsigned LUIdx, in GenerateReassociations()
3768 void LSRInstance::GenerateCombinations(LSRUse &LU, unsigned LUIdx, in GenerateCombinations()
3831 void LSRInstance::GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsetsImpl()
3850 void LSRInstance::GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsets()
3864 LSRUse &LU, unsigned LUIdx, const Formula &Base, in GenerateConstantOffsetsImpl()
3901 if (AMK == TTI::AMK_PreIndexed && LU.Kind == LSRUse::Address) { in GenerateConstantOffsetsImpl()
3938 void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, in GenerateConstantOffsets()
3956 void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, in GenerateICmpZeroScales()
3958 if (LU.Kind != LSRUse::ICmpZero) return; in GenerateICmpZeroScales()
4053 void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateScales()
4074 if (LU.Kind == LSRUse::Basic && in GenerateScales()
4075 isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LSRUse::Special, in GenerateScales()
4078 LU.Kind = LSRUse::Special; in GenerateScales()
4084 if (LU.Kind == LSRUse::ICmpZero && in GenerateScales()
4120 void LSRInstance::GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateTruncates()
4292 LSRUse &LU = Uses[LUIdx]; in GenerateCrossUseConstantOffsets()
4383 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4390 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4401 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4431 LSRUse &LU = Uses[LUIdx]; in FilterOutUndesirableDedicatedRegisters()
4519 for (const LSRUse &LU : Uses) { in EstimateSearchSpaceComplexity()
4544 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDetectingSupersets()
4611 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByCollapsingUnrolledCode()
4616 LSRUse *LUThatHas = FindUseWithSimilarFormula(F, LU); in NarrowSearchSpaceByCollapsingUnrolledCode()
4708 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4794 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterPostInc()
4796 if (LU.Kind != LSRUse::Address) in NarrowSearchSpaceByFilterPostInc()
4889 for (const LSRUse &LU : Uses) { in NarrowSearchSpaceByDeletingCostlyFormulas()
4906 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDeletingCostlyFormulas()
5004 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByPickingWinnerRegs()
5063 const LSRUse &LU = Uses[Workspace.size()]; in SolveRecurse()
5083 if (AMK != TTI::AMK_PostIndexed || LU.Kind != LSRUse::Address) { in SolveRecurse()
5223 BasicBlock::iterator LowestIP, const LSRFixup &LF, const LSRUse &LU) const { in AdjustInsertPositionForExpand()
5230 if (LU.Kind == LSRUse::ICmpZero) in AdjustInsertPositionForExpand()
5284 Value *LSRInstance::Expand(const LSRUse &LU, const LSRFixup &LF, in Expand()
5333 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5352 if (!Ops.empty() && LU.Kind == LSRUse::Address && in Expand()
5388 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5424 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5463 PHINode *PN, const LSRUse &LU, const LSRFixup &LF, const Formula &F, in RewriteForPHI()
5578 void LSRInstance::Rewrite(const LSRUse &LU, const LSRFixup &LF, in Rewrite()
5602 if (LU.Kind == LSRUse::ICmpZero) in Rewrite()
5798 for (const LSRUse &LU : Uses) { in LSRInstance()
5832 for (const LSRUse &LU : Uses) in print_fixups()
5842 for (const LSRUse &LU : Uses) { in print_uses()