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().