My Project
|
#include <DependenceAnalysis.h>
Classes | |
struct | LinalgDependenceGraphElem |
struct | LinalgOpView |
Public Types | |
enum | DependenceType { RAR = 0, RAW, WAR, WAW, NumTypes } |
using | LinalgDependences = SmallVector< LinalgDependenceGraphElem, 8 > |
using | DependenceGraph = DenseMap< Operation *, LinalgDependences > |
using | dependence_iterator = LinalgDependences::const_iterator |
using | dependence_range = iterator_range< dependence_iterator > |
Public Member Functions | |
LinalgDependenceGraph (Aliases &aliases, ArrayRef< Operation *> ops) | |
dependence_range | getDependencesFrom (Operation *src, DependenceType dt) const |
Returns the X such that op -> X is a dependence of type dt. More... | |
dependence_range | getDependencesFrom (LinalgOp src, DependenceType dt) const |
dependence_range | getDependencesInto (Operation *dst, DependenceType dt) const |
Returns the X such that X -> op is a dependence of type dt. More... | |
dependence_range | getDependencesInto (LinalgOp dst, DependenceType dt) const |
SmallVector< Operation *, 8 > | findCoveringDependences (LinalgOp srcLinalgOp, LinalgOp dstLinalgOp) const |
SmallVector< Operation *, 8 > | findCoveringReads (LinalgOp srcLinalgOp, LinalgOp dstLinalgOp, Value view) const |
SmallVector< Operation *, 8 > | findCoveringWrites (LinalgOp srcLinalgOp, LinalgOp dstLinalgOp, Value view) const |
Static Public Member Functions | |
static LinalgDependenceGraph | buildDependenceGraph (Aliases &aliases, FuncOp f) |
Data structure for holding a dependence graph that operates on LinalgOp and views as SSA values.
using mlir::linalg::LinalgDependenceGraph::dependence_iterator = LinalgDependences::const_iterator |
using mlir::linalg::LinalgDependenceGraph::DependenceGraph = DenseMap<Operation *, LinalgDependences> |
using mlir::linalg::LinalgDependenceGraph::LinalgDependences = SmallVector<LinalgDependenceGraphElem, 8> |
|
static |
SmallVector< Operation *, 8 > LinalgDependenceGraph::findCoveringDependences | ( | LinalgOp | srcLinalgOp, |
LinalgOp | dstLinalgOp | ||
) | const |
Returns the operations that are interleaved between srcLinalgOp
and dstLinalgOp
and that are involved in any RAW, WAR or WAW dependence relation with srcLinalgOp
, on any view. Any such operation prevents reordering.
SmallVector< Operation *, 8 > LinalgDependenceGraph::findCoveringReads | ( | LinalgOp | srcLinalgOp, |
LinalgOp | dstLinalgOp, | ||
Value | view | ||
) | const |
Returns the operations that are interleaved between srcLinalgOp
and dstLinalgOp
and that are involved in a RAR or RAW with srcLinalgOp
. Dependences are restricted to views aliasing view
.
SmallVector< Operation *, 8 > LinalgDependenceGraph::findCoveringWrites | ( | LinalgOp | srcLinalgOp, |
LinalgOp | dstLinalgOp, | ||
Value | view | ||
) | const |
Returns the operations that are interleaved between srcLinalgOp
and dstLinalgOp
and that are involved in a WAR or WAW with srcLinalgOp
. Dependences are restricted to views aliasing view
.
LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesFrom | ( | Operation * | src, |
LinalgDependenceGraph::DependenceType | dt | ||
) | const |
Returns the X such that op -> X is a dependence of type dt.
LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesFrom | ( | LinalgOp | src, |
LinalgDependenceGraph::DependenceType | dt | ||
) | const |
LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesInto | ( | Operation * | dst, |
LinalgDependenceGraph::DependenceType | dt | ||
) | const |
Returns the X such that X -> op is a dependence of type dt.
LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesInto | ( | LinalgOp | dst, |
LinalgDependenceGraph::DependenceType | dt | ||
) | const |