LLVM: llvm::DDGBuilder Class Reference (original) (raw)
Concrete implementation of a pure data dependence graph builder. More...
#include "[llvm/Analysis/DDG.h](DDG%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| DDGBuilder (DataDependenceGraph &G, DependenceInfo &D, const BasicBlockListType &BBs) | |
| DDGNode & | createRootNode () final |
| Create the root node of the graph. | |
| DDGNode & | createFineGrainedNode (Instruction &I) final |
| Create an atomic node in the graph given a single instruction. | |
| DDGNode & | createPiBlock (const NodeListType &L) final |
| Create a pi-block node in the graph representing a group of nodes in an SCC of the graph. | |
| DDGEdge & | createDefUseEdge (DDGNode &Src, DDGNode &Tgt) final |
| Create a def-use edge going from Src to Tgt. | |
| DDGEdge & | createMemoryEdge (DDGNode &Src, DDGNode &Tgt) final |
| Create a memory dependence edge going from Src to Tgt. | |
| DDGEdge & | createRootedEdge (DDGNode &Src, DDGNode &Tgt) final |
| Create a rooted edge going from Src to Tgt . | |
| const NodeListType & | getNodesInPiBlock (const DDGNode &N) final |
| Given a pi-block node, return a vector of all the nodes contained within it. | |
| bool | areNodesMergeable (const DDGNode &Src, const DDGNode &Tgt) const final |
| Return true if the two nodes \pSrc and \pTgt are both simple nodes and the consecutive instructions after merging belong to the same basic block. | |
| void | mergeNodes (DDGNode &Src, DDGNode &Tgt) final |
| Append the content of node B into node A and remove B and the edge between A and B from the graph. | |
| bool | shouldSimplify () const final |
| Return true if graph simplification step is requested, and false otherwise. | |
| bool | shouldCreatePiBlocks () const final |
| Return true if creation of pi-blocks are supported and desired, and false otherwise. | |
| Public Member Functions inherited from llvm::AbstractDependenceGraphBuilder< DataDependenceGraph > | |
| AbstractDependenceGraphBuilder (DataDependenceGraph &G, DependenceInfo &D, const BasicBlockListType &BBs) | |
| virtual | ~AbstractDependenceGraphBuilder ()=default |
| void | populate () |
| The main entry to the graph construction algorithm. | |
| void | computeInstructionOrdinals () |
| Compute ordinal numbers for each instruction and store them in a map for future look up. | |
| void | createFineGrainedNodes () |
| Create fine grained nodes. | |
| void | createDefUseEdges () |
| Analyze the def-use chains and create edges from the nodes containing definitions to the nodes containing the uses. | |
| void | createMemoryDependencyEdges () |
| Analyze data dependencies that exist between memory loads or stores, in the graph nodes and create edges between them. | |
| void | createAndConnectRootNode () |
| Create a root node and add edges such that each node in the graph is reachable from the root. | |
| void | createPiBlocks () |
| Apply graph abstraction to groups of nodes that belong to a strongly connected component of the graph to create larger compound nodes called pi-blocks. | |
| void | simplify () |
| Go through all the nodes in the graph and collapse any two nodes 'a' and 'b' if all of the following are true: | |
| void | sortNodesTopologically () |
| Topologically sort the graph nodes. |
| Additional Inherited Members | |
|---|---|
| Public Types inherited from llvm::AbstractDependenceGraphBuilder< DataDependenceGraph > | |
| using | ClassesType |
| using | NodeListType |
| Protected Types inherited from llvm::AbstractDependenceGraphBuilder< DataDependenceGraph > | |
| using | BasicBlockListType |
| using | InstToNodeMap |
| Map types to map instructions to nodes used when populating the graph. | |
| using | InstToOrdinalMap |
| Map Types to map instruction/nodes to an ordinal number. | |
| using | NodeToOrdinalMap |
| Protected Member Functions inherited from llvm::AbstractDependenceGraphBuilder< DataDependenceGraph > | |
| virtual void | destroyEdge (EdgeType &E) |
| Deallocate memory of edge E. | |
| virtual void | destroyNode (NodeType &N) |
| Deallocate memory of node N. | |
| size_t | getOrdinal (Instruction &I) |
| Given an instruction I return its associated ordinal number. | |
| Protected Attributes inherited from llvm::AbstractDependenceGraphBuilder< DataDependenceGraph > | |
| DataDependenceGraph & | Graph |
| Reference to the graph that gets built by a concrete implementation of this builder. | |
| DependenceInfo & | DI |
| Dependence information used to create memory dependence edges in the graph. | |
| const BasicBlockListType & | BBList |
| The list of basic blocks to consider when building the graph. | |
| InstToNodeMap | IMap |
| A mapping from instructions to the corresponding nodes in the graph. | |
| InstToOrdinalMap | InstOrdinalMap |
| A mapping from each instruction to an ordinal number. | |
| NodeToOrdinalMap | NodeOrdinalMap |
| A mapping from nodes to an ordinal number. |
Concrete implementation of a pure data dependence graph builder.
This class provides custom implementation for the pure-virtual functions used in the generic dependence graph build algorithm.
For information about time complexity of the build algorithm see the comments near the declaration of AbstractDependenceGraphBuilder.
Definition at line 343 of file DDG.h.
◆ areNodesMergeable()
◆ createDefUseEdge()
◆ createFineGrainedNode()
◆ createMemoryEdge()
◆ createPiBlock()
◆ createRootedEdge()
◆ createRootNode()
| DDGNode & llvm::DDGBuilder::createRootNode ( ) | inlinefinalvirtual |
|---|
◆ getNodesInPiBlock()
◆ mergeNodes()
◆ shouldCreatePiBlocks()
| bool DDGBuilder::shouldCreatePiBlocks ( ) const | finalvirtual |
|---|
◆ shouldSimplify()
| bool DDGBuilder::shouldSimplify ( ) const | finalvirtual |
|---|
The documentation for this class was generated from the following files: