Lines Matching refs:LSRUse
1021 class LSRUse;
1035 const LSRUse &LU, const Formula &F);
1039 const LSRUse &LU, const Formula &F,
1089 const LSRUse &LU,
1161 class LSRUse { class
1212 LSRUse(KindType K, MemAccessTy AT) : Kind(K), AccessTy(AT) {} in LSRUse() function in __anon90f29ee80711::LSRUse
1240 LSRUse::KindType Kind, MemAccessTy AccessTy,
1353 const LSRUse &LU, in RateFormula()
1403 if (LU.Kind == LSRUse::Address && Offset != 0 && in RateFormula()
1404 !isAMCompletelyFolded(*TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in RateFormula()
1439 if (LU.Kind == LSRUse::ICmpZero && !F.hasZeroEnd() && in RateFormula()
1446 if (LU.Kind != LSRUse::ICmpZero) in RateFormula()
1542 bool LSRUse::HasFormulaWithSameRegs(const Formula &F) const { in HasFormulaWithSameRegs()
1551 float LSRUse::getNotSelectedProbability(const SCEV *Reg) const { in getNotSelectedProbability()
1561 bool LSRUse::InsertFormula(const Formula &F, const Loop &L) { in InsertFormula()
1595 void LSRUse::DeleteFormula(Formula &F) { in DeleteFormula()
1602 void LSRUse::RecomputeRegs(size_t LUIdx, RegUseTracker &RegUses) { in RecomputeRegs()
1618 void LSRUse::print(raw_ostream &OS) const { in print()
1651 LLVM_DUMP_METHOD void LSRUse::dump() const { in dump()
1657 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1662 case LSRUse::Address: in isAMCompletelyFolded()
1666 case LSRUse::ICmpZero: in isAMCompletelyFolded()
1698 case LSRUse::Basic: in isAMCompletelyFolded()
1702 case LSRUse::Special: in isAMCompletelyFolded()
1712 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1733 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAMCompletelyFolded()
1749 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1763 int64_t MaxOffset, LSRUse::KindType Kind, in isLegalUse()
1770 const LSRUse &LU, const Formula &F) { in isAMCompletelyFolded()
1772 if (LU.Kind == LSRUse::Address && TTI.LSRWithInstrQueries()) { in isAMCompletelyFolded()
1774 if (!isAMCompletelyFolded(TTI, LSRUse::Address, LU.AccessTy, F.BaseGV, in isAMCompletelyFolded()
1787 const LSRUse &LU, const Formula &F, in getScalingFactorCost()
1799 case LSRUse::Address: { in getScalingFactorCost()
1812 case LSRUse::ICmpZero: in getScalingFactorCost()
1813 case LSRUse::Basic: in getScalingFactorCost()
1814 case LSRUse::Special: in getScalingFactorCost()
1824 LSRUse::KindType Kind, MemAccessTy AccessTy, in isAlwaysFoldable()
1832 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1847 int64_t MaxOffset, LSRUse::KindType Kind, in isAlwaysFoldable()
1866 int64_t Scale = Kind == LSRUse::ICmpZero ? -1 : 1; in isAlwaysFoldable()
1968 mutable SmallVector<LSRUse, 16> Uses;
2003 using UseMapTy = DenseMap<LSRUse::SCEVUseKindPair, size_t>;
2006 bool reconcileNewOffset(LSRUse &LU, int64_t NewOffset, bool HasBaseReg,
2007 LSRUse::KindType Kind, MemAccessTy AccessTy);
2009 std::pair<size_t, int64_t> getUse(const SCEV *&Expr, LSRUse::KindType Kind,
2012 void DeleteUse(LSRUse &LU, size_t LUIdx);
2014 LSRUse *FindUseWithSimilarFormula(const Formula &F, const LSRUse &OrigLU);
2016 void InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2017 void InsertSupplementalFormula(const SCEV *S, LSRUse &LU, size_t LUIdx);
2019 bool InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F);
2023 void GenerateReassociations(LSRUse &LU, unsigned LUIdx, Formula Base,
2026 void GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx,
2029 void GenerateCombinations(LSRUse &LU, unsigned LUIdx, Formula Base);
2030 void GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx,
2033 void GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
2034 void GenerateConstantOffsetsImpl(LSRUse &LU, unsigned LUIdx,
2038 void GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, Formula Base);
2039 void GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, Formula Base);
2040 void GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base);
2041 void GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base);
2071 const LSRUse &LU,
2074 Value *Expand(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2077 void RewriteForPHI(PHINode *PN, const LSRUse &LU, const LSRFixup &LF,
2080 void Rewrite(const LSRUse &LU, const LSRFixup &LF, const Formula &F,
2555 bool LSRInstance::reconcileNewOffset(LSRUse &LU, int64_t NewOffset, in reconcileNewOffset()
2556 bool HasBaseReg, LSRUse::KindType Kind, in reconcileNewOffset()
2571 if (Kind == LSRUse::Address) { in reconcileNewOffset()
2602 LSRUse::KindType Kind, in getUse()
2615 UseMap.insert(std::make_pair(LSRUse::SCEVUseKindPair(Expr, Kind), 0)); in getUse()
2619 LSRUse &LU = Uses[LUIdx]; in getUse()
2628 Uses.push_back(LSRUse(Kind, AccessTy)); in getUse()
2629 LSRUse &LU = Uses[LUIdx]; in getUse()
2637 void LSRInstance::DeleteUse(LSRUse &LU, size_t LUIdx) { in DeleteUse()
2648 LSRUse *
2650 const LSRUse &OrigLU) { in FindUseWithSimilarFormula()
2653 LSRUse &LU = Uses[LUIdx]; in FindUseWithSimilarFormula()
2660 LU.Kind != LSRUse::ICmpZero && in FindUseWithSimilarFormula()
3174 if (!isAlwaysFoldable(TTI, LSRUse::Address, AccessTy, /*BaseGV=*/nullptr, in canFoldIVIncExpr()
3301 LSRUse::KindType Kind = LSRUse::Basic; in CollectFixupsAndInitialFormulae()
3304 Kind = LSRUse::Address; in CollectFixupsAndInitialFormulae()
3341 Kind = LSRUse::ICmpZero; in CollectFixupsAndInitialFormulae()
3358 LSRUse &LU = Uses[LUIdx]; in CollectFixupsAndInitialFormulae()
3386 LSRInstance::InsertInitialFormula(const SCEV *S, LSRUse &LU, size_t LUIdx) { in InsertInitialFormula()
3401 LSRUse &LU, size_t LUIdx) { in InsertSupplementalFormula()
3419 bool LSRInstance::InsertFormula(LSRUse &LU, unsigned LUIdx, const Formula &F) { in InsertFormula()
3510 S, LSRUse::Basic, MemAccessTy()); in CollectLoopInvariantFixupsAndFormulae()
3513 LSRUse &LU = Uses[LUIdx]; in CollectLoopInvariantFixupsAndFormulae()
3595 LSRUse &LU, const SCEV *S, const Loop *L, in mayUsePostIncMode()
3597 if (LU.Kind != LSRUse::Address || in mayUsePostIncMode()
3617 void LSRInstance::GenerateReassociationsImpl(LSRUse &LU, unsigned LUIdx, in GenerateReassociationsImpl()
3710 void LSRInstance::GenerateReassociations(LSRUse &LU, unsigned LUIdx, in GenerateReassociations()
3727 void LSRInstance::GenerateCombinations(LSRUse &LU, unsigned LUIdx, in GenerateCombinations()
3790 void LSRInstance::GenerateSymbolicOffsetsImpl(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsetsImpl()
3809 void LSRInstance::GenerateSymbolicOffsets(LSRUse &LU, unsigned LUIdx, in GenerateSymbolicOffsets()
3823 LSRUse &LU, unsigned LUIdx, const Formula &Base, in GenerateConstantOffsetsImpl()
3860 if (AMK == TTI::AMK_PreIndexed && LU.Kind == LSRUse::Address) { in GenerateConstantOffsetsImpl()
3897 void LSRInstance::GenerateConstantOffsets(LSRUse &LU, unsigned LUIdx, in GenerateConstantOffsets()
3915 void LSRInstance::GenerateICmpZeroScales(LSRUse &LU, unsigned LUIdx, in GenerateICmpZeroScales()
3917 if (LU.Kind != LSRUse::ICmpZero) return; in GenerateICmpZeroScales()
4009 void LSRInstance::GenerateScales(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateScales()
4030 if (LU.Kind == LSRUse::Basic && in GenerateScales()
4031 isLegalUse(TTI, LU.MinOffset, LU.MaxOffset, LSRUse::Special, in GenerateScales()
4034 LU.Kind = LSRUse::Special; in GenerateScales()
4040 if (LU.Kind == LSRUse::ICmpZero && in GenerateScales()
4075 void LSRInstance::GenerateTruncates(LSRUse &LU, unsigned LUIdx, Formula Base) { in GenerateTruncates()
4239 LSRUse &LU = Uses[LUIdx]; in GenerateCrossUseConstantOffsets()
4330 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4337 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4348 LSRUse &LU = Uses[LUIdx]; in GenerateAllReuseFormulae()
4378 LSRUse &LU = Uses[LUIdx]; in FilterOutUndesirableDedicatedRegisters()
4466 for (const LSRUse &LU : Uses) { in EstimateSearchSpaceComplexity()
4491 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDetectingSupersets()
4558 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByCollapsingUnrolledCode()
4563 LSRUse *LUThatHas = FindUseWithSimilarFormula(F, LU); in NarrowSearchSpaceByCollapsingUnrolledCode()
4655 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterFormulaWithSameScaledReg()
4741 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByFilterPostInc()
4743 if (LU.Kind != LSRUse::Address) in NarrowSearchSpaceByFilterPostInc()
4836 for (const LSRUse &LU : Uses) { in NarrowSearchSpaceByDeletingCostlyFormulas()
4853 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByDeletingCostlyFormulas()
4951 LSRUse &LU = Uses[LUIdx]; in NarrowSearchSpaceByPickingWinnerRegs()
5010 const LSRUse &LU = Uses[Workspace.size()]; in SolveRecurse()
5030 if (AMK != TTI::AMK_PostIndexed || LU.Kind != LSRUse::Address) { in SolveRecurse()
5172 const LSRUse &LU, in AdjustInsertPositionForExpand()
5180 if (LU.Kind == LSRUse::ICmpZero) in AdjustInsertPositionForExpand()
5234 Value *LSRInstance::Expand(const LSRUse &LU, const LSRFixup &LF, in Expand()
5284 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5303 if (!Ops.empty() && LU.Kind == LSRUse::Address && in Expand()
5339 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5375 if (LU.Kind == LSRUse::ICmpZero) { in Expand()
5414 PHINode *PN, const LSRUse &LU, const LSRFixup &LF, const Formula &F, in RewriteForPHI()
5529 void LSRInstance::Rewrite(const LSRUse &LU, const LSRFixup &LF, in Rewrite()
5554 if (LU.Kind == LSRUse::ICmpZero) in Rewrite()
5764 for (const LSRUse &LU : Uses) { in LSRInstance()
5798 for (const LSRUse &LU : Uses) in print_fixups()
5808 for (const LSRUse &LU : Uses) { in print_uses()