|
MLIR 23.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 533 of file Utils.cpp.
References mlir::Value::getType(), hasEdge(), inEdges, memrefEdgeCount, and outEdges.
Referenced by init(), updateEdges(), and updateEdges().
Definition at line 468 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 785 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 798 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 822 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 806 of file Utils.cpp.
References forEachMemRefEdge(), and inEdges.
| void MemRefDependenceGraph::forEachMemRefOutputEdge | ( | unsigned | id, |
| const std::function< void(Edge)> & | callback ) |
Definition at line 814 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 632 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 646 of file Utils.cpp.
References gatherDefiningNodes(), getNode(), hasDependencePath(), inEdges, mlir::affine::MemRefDependenceGraph::Node::op, and outEdges.
Definition at line 606 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 453 of file Utils.cpp.
References nodes.
Referenced by addToNode(), canRemoveSrcNodeAfterFusion(), clearNodeLoadAndStores(), gatherEscapingMemrefs(), gatherProducerConsumerMemrefs(), getFusedLoopNestInsertionPoint(), getIncomingMemRefAccesses(), getProducerCandidates(), hasDependencePath(), init(), and writesToLiveInOrEscapingMemrefs().
Definition at line 571 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 337 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 544 of file Utils.cpp.
References mlir::Value::getType(), inEdges, memrefEdgeCount, and outEdges.
Referenced by removeNode(), updateEdges(), and updateEdges().
Definition at line 498 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().