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.
This file defines an intermediate representation for circuits acting as an abstraction for constraint...
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)