14 #ifndef CIRCT_ANALYSIS_DEPENDENCE_ANALYSIS_H
15 #define CIRCT_ANALYSIS_DEPENDENCE_ANALYSIS_H
18 #include "mlir/Dialect/Affine/Analysis/AffineAnalysis.h"
23 struct DependenceComponent;
59 DenseMap<Operation *, SmallVector<MemoryDependence>>;
75 void replaceOp(Operation *oldOp, Operation *newOp);
DenseMap< Operation *, SmallVector< MemoryDependence > > MemoryDependenceResult
MemoryDependenceResult captures a set of memory dependences.
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
MemoryDependenceAnalysis traverses any AffineForOps in the FuncOp body and checks for affine memory a...
MemoryDependenceAnalysis(Operation *funcOp)
MemoryDependenceAnalysis traverses any AffineForOps in the FuncOp body and checks for memory access d...
void replaceOp(Operation *oldOp, Operation *newOp)
Replaces the dependences, if any, from the oldOp to the newOp.
MemoryDependenceResult results
ArrayRef< MemoryDependence > getDependences(Operation *)
Returns the dependences, if any, that the given Operation depends on.
MemoryDependence captures a dependence from one memory operation to another.
SmallVector< mlir::affine::DependenceComponent > dependenceComponents
mlir::affine::DependenceResult::ResultEnum dependenceType
MemoryDependence(Operation *source, mlir::affine::DependenceResult::ResultEnum dependenceType, ArrayRef< mlir::affine::DependenceComponent > dependenceComponents)