|
MLIR 24.0.0git
|
#include "mlir/Dialect/Affine/Analysis/Utils.h"
Classes | |
| struct | Edge |
| struct | Node |
Public Attributes | |
| DenseMap< unsigned, Node > | nodes |
| DenseMap< unsigned, SmallVector< Edge, 2 > > | inEdges |
| DenseMap< unsigned, SmallVector< Edge, 2 > > | outEdges |
| DenseMap< Value, unsigned > | memrefEdgeCount |
| unsigned | nextNodeId = 0 |
| Block & | block |
| The block for which this graph is created to perform fusion. | |
|
inline |
Definition at line 154 of file Utils.h.
References block.
Referenced by getForOpNode(), and getNode().
Definition at line 543 of file Utils.cpp.
References mlir::Value::getType(), hasEdge(), inEdges, memrefEdgeCount, and outEdges.
Referenced by init(), updateEdges(), and updateEdges().
Definition at line 478 of file Utils.cpp.
References mlir::affine::MemRefDependenceGraph::Node::id, nextNodeId, and nodes.
| void MemRefDependenceGraph::addToNode | ( | unsigned | id, |
| ArrayRef< Operation * > | loads, | ||
| ArrayRef< Operation * > | stores, | ||
| ArrayRef< Operation * > | memrefLoads, | ||
| ArrayRef< Operation * > | memrefStores, | ||
| ArrayRef< Operation * > | memrefFrees ) |
Definition at line 795 of file Utils.cpp.
References getNode(), mlir::affine::MemRefDependenceGraph::Node::loads, mlir::affine::MemRefDependenceGraph::Node::memrefFrees, mlir::affine::MemRefDependenceGraph::Node::memrefLoads, mlir::affine::MemRefDependenceGraph::Node::memrefStores, and mlir::affine::MemRefDependenceGraph::Node::stores.
Definition at line 808 of file Utils.cpp.
References getNode(), mlir::affine::MemRefDependenceGraph::Node::loads, and mlir::affine::MemRefDependenceGraph::Node::stores.
|
inline |
| void MemRefDependenceGraph::forEachMemRefEdge | ( | ArrayRef< Edge > | edges, |
| const std::function< void(Edge)> & | callback ) |
Definition at line 832 of file Utils.cpp.
References nodes.
Referenced by forEachMemRefInputEdge(), and forEachMemRefOutputEdge().
| void MemRefDependenceGraph::forEachMemRefInputEdge | ( | unsigned | id, |
| const std::function< void(Edge)> & | callback ) |
Definition at line 816 of file Utils.cpp.
References forEachMemRefEdge(), and inEdges.
| void MemRefDependenceGraph::forEachMemRefOutputEdge | ( | unsigned | id, |
| const std::function< void(Edge)> & | callback ) |
Definition at line 824 of file Utils.cpp.
References forEachMemRefEdge(), and outEdges.
| void MemRefDependenceGraph::gatherDefiningNodes | ( | unsigned | id, |
| DenseSet< unsigned > & | definingNodes ) const |
Return all nodes which define SSA values used in node 'id'.
Definition at line 642 of file Utils.cpp.
References inEdges.
Referenced by getFusedLoopNestInsertionPoint().
|
inline |
Definition at line 180 of file Utils.h.
References MemRefDependenceGraph().
| const Node * MemRefDependenceGraph::getForOpNode | ( | AffineForOp | forOp | ) | const |
| Operation * MemRefDependenceGraph::getFusedLoopNestInsertionPoint | ( | unsigned | srcId, |
| unsigned | dstId ) const |
Definition at line 656 of file Utils.cpp.
References gatherDefiningNodes(), getNode(), hasDependencePath(), inEdges, mlir::affine::MemRefDependenceGraph::Node::op, and outEdges.
Definition at line 616 of file Utils.cpp.
References getNode(), mlir::affine::MemRefDependenceGraph::Node::getStoreOpCount(), and inEdges.
Definition at line 170 of file Utils.h.
References MemRefDependenceGraph().
Definition at line 463 of file Utils.cpp.
References nodes.
Referenced by addToNode(), canRemoveSrcNodeAfterFusion(), clearNodeLoadAndStores(), gatherEscapingMemrefs(), gatherProducerConsumerMemrefs(), getFusedLoopNestInsertionPoint(), getIncomingMemRefAccesses(), getProducerCandidates(), hasDependencePath(), init(), and writesToLiveInOrEscapingMemrefs().
Definition at line 581 of file Utils.cpp.
References getNode(), mlir::affine::MemRefDependenceGraph::Edge::id, mlir::Operation::isBeforeInBlock(), mlir::affine::MemRefDependenceGraph::Node::op, and outEdges.
Referenced by getFusedLoopNestInsertionPoint().
Definition at line 347 of file Utils.cpp.
References addEdge(), addNodeToMDG(), block, mlir::affine::getAffineForIVs(), getNode(), mlir::Operation::getResults(), mlir::Operation::getUsers(), mlir::affine::MemRefDependenceGraph::Node::hasFree(), mlir::affine::MemRefDependenceGraph::Node::hasStore(), mlir::affine::MemRefDependenceGraph::Node::id, mlir::isMemoryEffectFree(), mlir::affine::MemRefDependenceGraph::Node::loads, mayDependence(), nextNodeId, nodes, mlir::affine::MemRefDependenceGraph::Node::op, and mlir::affine::MemRefDependenceGraph::Node::stores.
| void MemRefDependenceGraph::print | ( | raw_ostream & | os | ) | const |
Definition at line 554 of file Utils.cpp.
References mlir::Value::getType(), inEdges, memrefEdgeCount, and outEdges.
Referenced by removeNode(), updateEdges(), and updateEdges().
Definition at line 508 of file Utils.cpp.
References getNode(), and mlir::affine::MemRefDependenceGraph::Node::stores.
| Block& mlir::affine::MemRefDependenceGraph::block |
The block for which this graph is created to perform fusion.
Definition at line 270 of file Utils.h.
Referenced by gatherEscapingMemrefs(), init(), and MemRefDependenceGraph().
| DenseMap<unsigned, SmallVector<Edge, 2> > mlir::affine::MemRefDependenceGraph::inEdges |
Definition at line 144 of file Utils.h.
Referenced by addEdge(), forEachMemRefInputEdge(), gatherDefiningNodes(), getFusedLoopNestInsertionPoint(), getIncomingMemRefAccesses(), getProducerCandidates(), hasEdge(), print(), removeEdge(), removeNode(), updateEdges(), and updateEdges().
Definition at line 150 of file Utils.h.
Referenced by addEdge(), and removeEdge().
| unsigned mlir::affine::MemRefDependenceGraph::nextNodeId = 0 |
Definition at line 152 of file Utils.h.
Referenced by addNode(), addNodeToMDG(), and init().
Definition at line 141 of file Utils.h.
Referenced by addNode(), addNodeToMDG(), forEachMemRefEdge(), getForOpNode(), getNode(), hasNode(), init(), print(), and removeNode().
| DenseMap<unsigned, SmallVector<Edge, 2> > mlir::affine::MemRefDependenceGraph::outEdges |
Definition at line 147 of file Utils.h.
Referenced by addEdge(), canRemoveSrcNodeAfterFusion(), forEachMemRefOutputEdge(), getFusedLoopNestInsertionPoint(), getOutEdgeCount(), hasDependencePath(), hasEdge(), print(), removeEdge(), removeNode(), updateEdges(), and updateEdges().