My Project
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
mlir::linalg::LinalgDependenceGraph Class Reference

#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)
 

Detailed Description

Data structure for holding a dependence graph that operates on LinalgOp and views as SSA values.

Member Typedef Documentation

◆ dependence_iterator

using mlir::linalg::LinalgDependenceGraph::dependence_iterator = LinalgDependences::const_iterator

◆ dependence_range

◆ DependenceGraph

◆ LinalgDependences

Member Enumeration Documentation

◆ DependenceType

Enumerator
RAR 
RAW 
WAR 
WAW 
NumTypes 

Constructor & Destructor Documentation

◆ LinalgDependenceGraph()

LinalgDependenceGraph::LinalgDependenceGraph ( Aliases aliases,
ArrayRef< Operation *>  ops 
)

Member Function Documentation

◆ buildDependenceGraph()

LinalgDependenceGraph LinalgDependenceGraph::buildDependenceGraph ( Aliases aliases,
FuncOp  f 
)
static

◆ findCoveringDependences()

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.

◆ findCoveringReads()

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.

◆ findCoveringWrites()

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.

◆ getDependencesFrom() [1/2]

LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesFrom ( Operation src,
LinalgDependenceGraph::DependenceType  dt 
) const

Returns the X such that op -> X is a dependence of type dt.

◆ getDependencesFrom() [2/2]

LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesFrom ( LinalgOp  src,
LinalgDependenceGraph::DependenceType  dt 
) const

◆ getDependencesInto() [1/2]

LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesInto ( Operation dst,
LinalgDependenceGraph::DependenceType  dt 
) const

Returns the X such that X -> op is a dependence of type dt.

◆ getDependencesInto() [2/2]

LinalgDependenceGraph::dependence_range LinalgDependenceGraph::getDependencesInto ( LinalgOp  dst,
LinalgDependenceGraph::DependenceType  dt 
) const

The documentation for this class was generated from the following files: