LLVM  14.0.0git
Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
llvm::CacheCost Class Reference

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"

Collaboration diagram for llvm::CacheCost:
Collaboration graph
[legend]

Public Member Functions

 CacheCost (const LoopVectorTy &Loops, const LoopInfo &LI, ScalarEvolution &SE, TargetTransformInfo &TTI, AAResults &AA, DependenceInfo &DI, Optional< unsigned > TRT=None)
 Construct a CacheCost object for the loop nest described by Loops. More...
 
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. More...
 
ArrayRef< LoopCacheCostTy > getLoopCosts () const
 Return the estimated ordered loop costs. More...
 

Static Public Member Functions

static std::unique_ptr< CacheCostgetCacheCost (Loop &Root, LoopStandardAnalysisResults &AR, DependenceInfo &DI, Optional< unsigned > TRT=None)
 Create a CacheCost for the loop nest rooted by Root. More...
 

Static Public Attributes

static constexpr CacheCostTy InvalidCost = -1
 

Friends

raw_ostreamoperator<< (raw_ostream &OS, const CacheCost &CC)
 

Detailed Description

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 174 of file LoopCacheAnalysis.h.

Constructor & Destructor Documentation

◆ CacheCost()

CacheCost::CacheCost ( const LoopVectorTy Loops,
const LoopInfo LI,
ScalarEvolution SE,
TargetTransformInfo TTI,
AAResults AA,
DependenceInfo DI,
Optional< unsigned >  TRT = None 
)

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 479 of file LoopCacheAnalysis.cpp.

References assert(), DefaultTripCount, llvm::ScalarEvolution::getSmallConstantTripCount(), and Loops.

Member Function Documentation

◆ getCacheCost()

std::unique_ptr< CacheCost > CacheCost::getCacheCost ( Loop Root,
LoopStandardAnalysisResults AR,
DependenceInfo DI,
Optional< unsigned >  TRT = None 
)
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 498 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().

◆ getLoopCost()

CacheCostTy llvm::CacheCost::getLoopCost ( const Loop L) const
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 200 of file LoopCacheAnalysis.h.

References llvm::find_if(), and IT.

◆ getLoopCosts()

ArrayRef<LoopCacheCostTy> llvm::CacheCost::getLoopCosts ( ) const
inline

Return the estimated ordered loop costs.

Definition at line 208 of file LoopCacheAnalysis.h.

Friends And Related Function Documentation

◆ operator<<

raw_ostream& operator<< ( raw_ostream OS,
const CacheCost CC 
)
friend

Member Data Documentation

◆ InvalidCost

constexpr CacheCostTy llvm::CacheCost::InvalidCost = -1
staticconstexpr

Definition at line 180 of file LoopCacheAnalysis.h.

Referenced by llvm::IndexedReference::computeRefCost().


The documentation for this class was generated from the following files: