LLVM: llvm::codelayout Namespace Reference (original) (raw)

Functions
LLVM_ABI std::vector< uint64_t > computeExtTspLayout (ArrayRef< uint64_t > NodeSizes, ArrayRef< uint64_t > NodeCounts, ArrayRef< EdgeCount > EdgeCounts)
Find a layout of nodes (basic blocks) of a given CFG optimizing jump locality and thus processor I-cache utilization.
LLVM_ABI double calcExtTspScore (ArrayRef< uint64_t > Order, ArrayRef< uint64_t > NodeSizes, ArrayRef< EdgeCount > EdgeCounts)
Estimate the "quality" of a given node order in CFG.
LLVM_ABI double calcExtTspScore (ArrayRef< uint64_t > NodeSizes, ArrayRef< EdgeCount > EdgeCounts)
Estimate the "quality" of the current node order in CFG.
LLVM_ABI std::vector< uint64_t > computeCacheDirectedLayout (ArrayRef< uint64_t > FuncSizes, ArrayRef< uint64_t > FuncCounts, ArrayRef< EdgeCount > CallCounts, ArrayRef< uint64_t > CallOffsets)
Apply a Cache-Directed Sort for functions represented by a call graph.
LLVM_ABI std::vector< uint64_t > computeCacheDirectedLayout (const CDSortConfig &Config, ArrayRef< uint64_t > FuncSizes, ArrayRef< uint64_t > FuncCounts, ArrayRef< EdgeCount > CallCounts, ArrayRef< uint64_t > CallOffsets)
Apply a Cache-Directed Sort with a custom config.

EdgeT

calcExtTspScore() [1/2]

calcExtTspScore() [2/2]

Estimate the "quality" of a given node order in CFG.

The higher the score, the better the order is. The score is designed to reflect the locality of the given order, which is anti-correlated with the number of I-cache misses in a typical execution of the function.

Definition at line 1428 of file CodeLayout.cpp.

References llvm::ArrayRef< T >::size().

Referenced by calcExtTspScore().

computeCacheDirectedLayout() [1/2]

Apply a Cache-Directed Sort for functions represented by a call graph.

The placement is done by optimizing the call locality by co-locating frequently executed functions. FuncSizes: The sizes of the nodes (in bytes). FuncCounts: The execution counts of the nodes in the profile. CallCounts: The execution counts of every edge (jump) in the profile. The map also defines the edges in CFG and should include 0-count edges. CallOffsets: The offsets of the calls from their source nodes.

Returns

The best function order found.

Definition at line 1471 of file CodeLayout.cpp.

References CacheEntries, llvm::codelayout::CDSortConfig::CacheEntries, CacheSize, llvm::codelayout::CDSortConfig::CacheSize, CDMaxChainSize, computeCacheDirectedLayout(), DistancePower, llvm::codelayout::CDSortConfig::DistancePower, FrequencyScale, llvm::codelayout::CDSortConfig::FrequencyScale, and llvm::codelayout::CDSortConfig::MaxChainSize.

Referenced by computeCacheDirectedLayout().

computeCacheDirectedLayout() [2/2]

computeExtTspLayout()

Find a layout of nodes (basic blocks) of a given CFG optimizing jump locality and thus processor I-cache utilization.

This is achieved via increasing the number of fall-through jumps and co-locating frequently executed nodes together. The nodes are assumed to be indexed by integers from [0, |V|) so that the current order is the identity permutation. NodeSizes: The sizes of the nodes (in bytes). NodeCounts: The execution counts of the nodes in the profile. EdgeCounts: The execution counts of every edge (jump) in the profile. The map also defines the edges in CFG and should include 0-count edges.

Returns

The best block order found.

Definition at line 1411 of file CodeLayout.cpp.

References assert(), and llvm::ArrayRef< T >::size().