LLVM 20.0.0git
|
CacheCost
represents the estimated cost of a inner loop as the number of cache lines used by the memory references it contains.
More...
#include "llvm/Analysis/LoopCacheAnalysis.h"
Public Member Functions | |
CacheCost (const LoopVectorTy &Loops, const LoopInfo &LI, ScalarEvolution &SE, TargetTransformInfo &TTI, AAResults &AA, DependenceInfo &DI, std::optional< unsigned > TRT=std::nullopt) | |
Construct a CacheCost object for the loop nest described by Loops . | |
CacheCostTy | getLoopCost (const Loop &L) const |
Return the estimated cost of loop L if the given loop is part of the loop nest associated with this object. | |
ArrayRef< LoopCacheCostTy > | getLoopCosts () const |
Return the estimated ordered loop costs. | |
Static Public Member Functions | |
static std::unique_ptr< CacheCost > | getCacheCost (Loop &Root, LoopStandardAnalysisResults &AR, DependenceInfo &DI, std::optional< unsigned > TRT=std::nullopt) |
Create a CacheCost for the loop nest rooted by Root . | |
Static Public Attributes | |
static CacheCostTy constexpr | InvalidCost = -1 |
Friends | |
raw_ostream & | operator<< (raw_ostream &OS, const CacheCost &CC) |
CacheCost
represents the estimated cost of a inner loop as the number of cache lines used by the memory references it contains.
The 'cache cost' of a loop 'L' in a loop nest 'LN' is computed as the sum of the cache costs of all of its reference groups when the loop is considered to be in the innermost position in the nest. A reference group represents memory references that fall into the same cache line. Each reference group is analysed with respect to the innermost loop in a loop nest. The cost of a reference is defined as follow:
Definition at line 189 of file LoopCacheAnalysis.h.
CacheCost::CacheCost | ( | const LoopVectorTy & | Loops, |
const LoopInfo & | LI, | ||
ScalarEvolution & | SE, | ||
TargetTransformInfo & | TTI, | ||
AAResults & | AA, | ||
DependenceInfo & | DI, | ||
std::optional< unsigned > | TRT = std::nullopt |
||
) |
Construct a CacheCost object for the loop nest described by Loops
.
The optional parameter TRT
can be used to specify the max. distance between array elements accessed in a loop so that the elements are classified to have temporal reuse.
Definition at line 562 of file LoopCacheAnalysis.cpp.
References assert(), DefaultTripCount, llvm::ScalarEvolution::getSmallConstantTripCount(), Loops, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
static |
Create a CacheCost for the loop nest rooted by Root
.
The optional parameter TRT
can be used to specify the max. distance between array elements accessed in a loop so that the elements are classified to have temporal reuse.
Definition at line 580 of file LoopCacheAnalysis.cpp.
References llvm::LoopStandardAnalysisResults::AA, llvm::append_range(), llvm::breadth_first(), llvm::dbgs(), getInnerMostLoop(), llvm::LoopBase< BlockT, LoopT >::isOutermost(), llvm::LoopStandardAnalysisResults::LI, LLVM_DEBUG, Loops, llvm::LoopStandardAnalysisResults::SE, and llvm::LoopStandardAnalysisResults::TTI.
Referenced by llvm::LoopCachePrinterPass::run(), and llvm::LoopInterchangePass::run().
|
inline |
Return the estimated cost of loop L
if the given loop is part of the loop nest associated with this object.
Return -1 otherwise.
Definition at line 215 of file LoopCacheAnalysis.h.
References llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::find_if(), and IT.
|
inline |
Return the estimated ordered loop costs.
Definition at line 223 of file LoopCacheAnalysis.h.
|
friend |
|
staticconstexpr |
Definition at line 195 of file LoopCacheAnalysis.h.
Referenced by llvm::IndexedReference::computeRefCost().