class SchedDFSImpl

Declaration

class SchedDFSImpl { /* full declaration omitted */ };

Description

Internal state used to compute SchedDFSResult.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1220

Method Overview

Methods

SchedDFSImpl(llvm::SchedDFSResult& r)

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1243

Parameters

llvm::SchedDFSResult& r

void addConnection(unsigned int FromTree,
                   unsigned int ToTree,
                   unsigned int Depth)

Description

Called by finalize() to record a connection between trees.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1385

Parameters

unsigned int FromTree
unsigned int ToTree
unsigned int Depth

void finalize()

Description

Sets each node's subtree ID to the representative ID and record connections between trees.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1321

bool isVisited(const llvm::SUnit* SU) const

Description

Returns true if this node been visited by the DFS traversal. During visitPostorderNode the Node's SubtreeID is assigned to the Node ID. Later, SubtreeID is updated but remains valid.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1251

Parameters

const llvm::SUnit* SU

bool joinPredSubtree(const llvm::SDep& PredDep,
                     const llvm::SUnit* Succ,
                     bool CheckLimit = true)

Description

Joins the predecessor subtree with the successor that is its DFS parent. Applies some heuristics before joining.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1358

Parameters

const llvm::SDep& PredDep
const llvm::SUnit* Succ
bool CheckLimit = true

void visitCrossEdge(const llvm::SDep& PredDep,
                    const llvm::SUnit* Succ)

Description

Adds a connection for cross edges.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1315

Parameters

const llvm::SDep& PredDep
const llvm::SUnit* Succ

void visitPostorderEdge(const llvm::SDep& PredDep,
                        const llvm::SUnit* Succ)

Description

Called once for each tree edge after calling visitPostOrderNode on the predecessor. Increment the parent node's instruction count and preemptively join this subtree to its parent's if it is small enough.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1308

Parameters

const llvm::SDep& PredDep
const llvm::SUnit* Succ

void visitPostorderNode(const llvm::SUnit* SU)

Description

Called once for each node after all predecessors are visited. Revisit this node's predecessors and potentially join them now that we know the ILP of the other predecessors.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1266

Parameters

const llvm::SUnit* SU

void visitPreorder(const llvm::SUnit* SU)

Description

Initializes this node's instruction count. We don't need to flag the node visited until visitPostorder because the DAG cannot have cycles.

Declared at: llvm/lib/CodeGen/ScheduleDAGInstrs.cpp:1258

Parameters

const llvm::SUnit* SU