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() constDescription
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() constDescription
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) constDescription
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&) constDeclared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:236