|
MLIR 22.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 532 of file Utils.cpp.
References mlir::Value::getType(), hasEdge(), inEdges, memrefEdgeCount, and outEdges.
Referenced by init(), updateEdges(), and updateEdges().
Definition at line 467 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 784 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 797 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 821 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 805 of file Utils.cpp.
References forEachMemRefEdge(), and inEdges.
| void MemRefDependenceGraph::forEachMemRefOutputEdge | ( | unsigned | id, |
| const std::function< void(Edge)> & | callback ) |
Definition at line 813 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 631 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 645 of file Utils.cpp.
References gatherDefiningNodes(), getNode(), hasDependencePath(), inEdges, mlir::affine::MemRefDependenceGraph::Node::op, and outEdges.
Definition at line 605 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 452 of file Utils.cpp.
References nodes.
Referenced by addToNode(), canRemoveSrcNodeAfterFusion(), clearNodeLoadAndStores(), gatherEscapingMemrefs(), gatherProducerConsumerMemrefs(), getFusedLoopNestInsertionPoint(), getIncomingMemRefAccesses(), getProducerCandidates(), hasDependencePath(), init(), and writesToLiveInOrEscapingMemrefs().
Definition at line 570 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 336 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 543 of file Utils.cpp.
References mlir::Value::getType(), inEdges, memrefEdgeCount, and outEdges.
Referenced by removeNode(), updateEdges(), and updateEdges().
Definition at line 497 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().