struct MachineTraceMetrics::TraceBlockInfo
Declaration
struct MachineTraceMetrics::TraceBlockInfo { /* full declaration omitted */ };
Description
Per-basic block information that relates to a specific trace through the block. Convergent traces means that only one of these is required per block in a trace ensemble.
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:155
Member Variables
- public const llvm::MachineBasicBlock* Pred = nullptr
- Trace predecessor, or NULL for the first block in the trace. Valid when hasValidDepth().
- public const llvm::MachineBasicBlock* Succ = nullptr
- Trace successor, or NULL for the last block in the trace. Valid when hasValidHeight().
- public unsigned int Head
- The block number of the head of the trace. (When hasValidDepth()).
- public unsigned int Tail
- The block number of the tail of the trace. (When hasValidHeight()).
- public unsigned int InstrDepth = ~0U
- Accumulated number of instructions in the trace above this block. Does not include instructions in this block.
- public unsigned int InstrHeight = ~0U
- Accumulated number of instructions in the trace below this block. Includes instructions in this block.
- public bool HasValidInstrDepths = false
- Instruction depths have been computed. This implies hasValidDepth().
- public bool HasValidInstrHeights = false
- Instruction heights have been computed. This implies hasValidHeight().
- public unsigned int CriticalPath
- Critical path length. This is the number of cycles in the longest data dependency chain through the trace. This is only valid when both HasValidInstrDepths and HasValidInstrHeights are set.
- public SmallVector<llvm::MachineTraceMetrics::LiveInReg, 4> LiveIns
- Live-in registers. These registers are defined above the current block and used by this block or a block below it. This does not include PHI uses in the current block, but it does include PHI uses in deeper blocks.
Method Overview
- public TraceBlockInfo()
- public bool hasValidDepth() const
- public bool hasValidHeight() const
- public void invalidateDepth()
- public void invalidateHeight()
- public bool isUsefulDominator(const llvm::MachineTraceMetrics::TraceBlockInfo & TBI) const
- public void print(llvm::raw_ostream &) const
Methods
¶TraceBlockInfo()
TraceBlockInfo()
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:178
¶bool hasValidDepth() const
bool hasValidDepth() const
Description
Returns true if the depth resources have been computed from the trace above this block.
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:182
¶bool hasValidHeight() const
bool hasValidHeight() const
Description
Returns true if the height resources have been computed from the trace below this block.
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:186
¶void invalidateDepth()
void invalidateDepth()
Description
Invalidate depth resources when some block above this one has changed.
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:189
¶void invalidateHeight()
void invalidateHeight()
Description
Invalidate height resources when a block below this one has changed.
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:192
¶bool isUsefulDominator(
const llvm::MachineTraceMetrics::
TraceBlockInfo& TBI) const
bool isUsefulDominator(
const llvm::MachineTraceMetrics::
TraceBlockInfo& TBI) const
Description
Assuming that this is a dominator of TBI, determine if it contains useful instruction depths. A dominating block can be above the current trace head, and any dependencies from such a far away dominator are not expected to affect the critical path. Also returns true when TBI == this.
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:200
Parameters
- const llvm::MachineTraceMetrics::TraceBlockInfo& TBI
¶void print(llvm::raw_ostream&) const
void print(llvm::raw_ostream&) const
Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:236