Lines Matching refs:LSRUse
1037 class LSRUse;
1051 const LSRUse &LU, const Formula &F);
1055 const LSRUse &LU, const Formula &F,
1105 const LSRUse &LU,
1177 class LSRUse { class
1228 LSRUse(KindType K, MemAccessTy AT) : Kind(K), AccessTy(AT) {} in LSRUse() function in __anon926e14ea0811::LSRUse
1256 LSRUse::KindType Kind, MemAccessTy AccessTy,
1369 const LSRUse &LU, in RateFormula()
1421 if (LU.Kind == LSRUse::Address && Offset != 0 && in RateFormula()
1422 !isAMCompletelyFolded(*TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in RateFormula()
1457 if (LU.Kind == LSRUse::ICmpZero && !F.hasZeroEnd() && in RateFormula()
1464 if (LU.Kind != LSRUse::ICmpZero) in RateFormula()
1560 bool LSRUse::HasFormulaWithSameRegs(const Formula &F) const { in HasFormulaWithSameRegs()
1569 float LSRUse::getNotSelectedProbability(const SCEV *Reg) const { in getNotSelectedProbability()
1579 bool LSRUse::InsertFormula(const Formula &F, const Loop &L) { in InsertFormula()
1613 void LSRUse::DeleteFormula(Formula &F) { in DeleteFormula()
1620 void LSRUse::RecomputeRegs(size_t LUIdx, RegUseTracker &RegUses) { in RecomputeRegs()
1636 void LSRUse::print(raw_ostream &OS) const { in print()
1669 LLVM_DUMP_METHOD void LSRUse::dump() const { in dump()
1675 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1680 case LSRUse::Address: in isAMCompletelyFolded()
1684 case LSRUse::ICmpZero: in isAMCompletelyFolded()
1716 case LSRUse::Basic: in isAMCompletelyFolded()
1720 case LSRUse::Special: in isAMCompletelyFolded()
1730 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1751 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1767 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1781 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1788 const LSRUse &LU, const Formula &F) { in isAMCompletelyFolded()
1790 if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) { in isAMCompletelyFolded()
1792 if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in isAMCompletelyFolded()
1805 const LSRUse &LU, const Formula &F, in getScalingFactorCost()
1817 case LSRUse::Address: { in getScalingFactorCost()
1830 case LSRUse::ICmpZero: in getScalingFactorCost()
1831 case LSRUse::Basic: in getScalingFactorCost()
1832 case LSRUse::Special: in getScalingFactorCost()
1842 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAlwaysFoldable()
1850 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1865 int64_t MaxOffset, LSRUse::KindType Kind, in isAlwaysFoldable()
1884 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1991 mutable SmallVector<LSRUse, 16> Uses;
2026 using UseMapTy = DenseMap<LSRUse::SCEVUseKindPair, size_t>;
2029 bool reconcileNewOffset(LSRUse &LU, int64_t NewOffset, bool HasBaseReg,
2030 LSRUse::KindType Kind, MemAccessTy AccessTy);
2032 std::pair<size_t, int64_t> getUse(const SCEV *&Expr, LSRUse::KindType Kind,
2035 void DeleteUse(LSRUse &LU, size_t LUIdx);
2037 LSRUse *FindUseWithSimilarFormula(const Formula &F, const LSRUse &OrigLU);
2039 void InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2040 void InsertSupplementalFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2042 bool InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F);
2046 void GenerateReassociations(LSRUse &LU, unsigned LUIdx, Formula Base,
2049 void GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx,
2052 void GenerateCombinations(LSRUse &LU, unsigned LUIdx, Formula Base);
2053 void GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx,
2056 void GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
2057 void GenerateConstantOffsetsImpl(LSRUse &LU, unsigned LUIdx,
2061 void GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
2062 void GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, Formula Base);
2063 void GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base);
2064 void GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base);
2093 const LSRUse &LU) const;
2095 Value *Expand(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2098 void RewriteForPHI(PHINode *PN, const LSRUse &LU, const LSRFixup &LF,
2101 void Rewrite(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2566 bool LSRInstance::reconcileNewOffset(LSRUse &LU, int64_t NewOffset, in reconcileNewOffset()
2567 bool HasBaseReg, LSRUse::KindType Kind, in reconcileNewOffset()
2582 if (Kind == LSRUse::Address) { in reconcileNewOffset()
2613 LSRUse::KindType Kind, in getUse()
2626 UseMap.insert(std::make_pair(LSRUse::SCEVUseKindPair(Expr, Kind), 0)); in getUse()
2630 LSRUse &LU = Uses[LUIdx]; in getUse()
2639 Uses.push_back(LSRUse(Kind, AccessTy)); in getUse()
2640 LSRUse &LU = Uses[LUIdx]; in getUse()
2648 void LSRInstance::DeleteUse(LSRUse &LU, size_t LUIdx) { in DeleteUse()
2659 LSRUse *
2661 const LSRUse &OrigLU) { in FindUseWithSimilarFormula()
2663 for (LSRUse &LU : Uses) { in FindUseWithSimilarFormula()
2670 LU.Kind != LSRUse::ICmpZero && in FindUseWithSimilarFormula()
3173 if (!isAlwaysFoldable(TTI, LSRUse::Address, AccessTy, /*BaseGV=*/nullptr, in canFoldIVIncExpr()
3305 LSRUse::KindType Kind = LSRUse::Basic; in CollectFixupsAndInitialFormulae()
3308 Kind = LSRUse::Address; in CollectFixupsAndInitialFormulae()
3349 Kind = LSRUse::ICmpZero; in CollectFixupsAndInitialFormulae()
3365 Kind = LSRUse::ICmpZero; in CollectFixupsAndInitialFormulae()
3383 LSRUse &LU = Uses[LUIdx]; in CollectFixupsAndInitialFormulae()
3418 void LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, in InsertInitialFormula()
3434 LSRUse &LU, size_t LUIdx) { in InsertSupplementalFormula()
3452 bool LSRInstance::InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F) { in InsertFormula()
3573 S, LSRUse::Basic, MemAccessTy()); in CollectLoopInvariantFixupsAndFormulae()
3576 LSRUse &LU = Uses[LUIdx]; in CollectLoopInvariantFixupsAndFormulae()
3658 LSRUse &LU, const SCEV *S, const Loop *L, in mayUsePostIncMode()
3660 if (LU.Kind != LSRUse::Address || in mayUsePostIncMode()
3680 void LSRInstance::GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx, in GenerateReassociationsImpl()
3773 void LSRInstance::GenerateReassociations(LSRUse &LU, unsigned LUIdx, in GenerateReassociations()
3790 void LSRInstance::GenerateCombinations(LSRUse &LU, unsigned LUIdx, in GenerateCombinations()
3853 void LSRInstance::GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsetsImpl()
3872 void LSRInstance::GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsets()
3886 LSRUse &LU, unsigned LUIdx, const Formula &Base, in GenerateConstantOffsetsImpl()
3923 if (AMK == TTI::AMK_PreIndexed && LU.Kind == LSRUse::Address) { in GenerateConstantOffsetsImpl()
3960 void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, in GenerateConstantOffsets()
3978 void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, in GenerateICmpZeroScales()
3980 if (LU.Kind != LSRUse::ICmpZero) return; in GenerateICmpZeroScales()
4075 void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateScales()
4096 if (LU.Kind == LSRUse::Basic && in GenerateScales()
4097 isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LSRUse::Special, in GenerateScales()
4100 LU.Kind = LSRUse::Special; in GenerateScales()
4106 if (LU.Kind == LSRUse::ICmpZero && in GenerateScales()
4165 void LSRInstance::GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateTruncates()
4342 LSRUse &LU = Uses[LUIdx]; in GenerateCrossUseConstantOffsets()
4433 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4440 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4451 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4481 LSRUse &LU = Uses[LUIdx]; in FilterOutUndesirableDedicatedRegisters()
4569 for (const LSRUse &LU : Uses) { in EstimateSearchSpaceComplexity()
4594 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDetectingSupersets()
4661 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByCollapsingUnrolledCode()
4666 LSRUse *LUThatHas = FindUseWithSimilarFormula(F, LU); in NarrowSearchSpaceByCollapsingUnrolledCode()
4758 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4844 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterPostInc()
4846 if (LU.Kind != LSRUse::Address) in NarrowSearchSpaceByFilterPostInc()
4939 for (const LSRUse &LU : Uses) { in NarrowSearchSpaceByDeletingCostlyFormulas()
4956 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDeletingCostlyFormulas()
5075 if (LUIdx >= 0 && Uses[LUIdx].Kind == LSRUse::Address && in NarrowSearchSpaceByPickingWinnerRegs()
5093 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByPickingWinnerRegs()
5152 const LSRUse &LU = Uses[Workspace.size()]; in SolveRecurse()
5172 if (AMK != TTI::AMK_PostIndexed || LU.Kind != LSRUse::Address) { in SolveRecurse()
5326 BasicBlock::iterator LowestIP, const LSRFixup &LF, const LSRUse &LU) const { in AdjustInsertPositionForExpand()
5333 if (LU.Kind == LSRUse::ICmpZero) in AdjustInsertPositionForExpand()
5387 Value *LSRInstance::Expand(const LSRUse &LU, const LSRFixup &LF, in Expand()
5436 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5455 if (!Ops.empty() && LU.Kind == LSRUse::Address && in Expand()
5491 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5527 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5568 PHINode *PN, const LSRUse &LU, const LSRFixup &LF, const Formula &F, in RewriteForPHI()
5700 void LSRInstance::Rewrite(const LSRUse &LU, const LSRFixup &LF, in Rewrite()
5724 if (LU.Kind == LSRUse::ICmpZero) in Rewrite()
5738 const LSRUse &LU, Instruction *IVIncInsertPos, in canHoistIVInc()
5740 if (LU.Kind != LSRUse::Address) in canHoistIVInc()
5954 for (const LSRUse &LU : Uses) { in LSRInstance()
5988 for (const LSRUse &LU : Uses) in print_fixups()
5998 for (const LSRUse &LU : Uses) { in print_uses()