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

Methods

TraceBlockInfo()

Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:178

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

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

Description

Invalidate depth resources when some block above this one has changed.

Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:189

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

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

Declared at: llvm/include/llvm/CodeGen/MachineTraceMetrics.h:236

Parameters

llvm::raw_ostream&