diff --git a/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h b/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h --- a/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h +++ b/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h @@ -44,6 +44,7 @@ /// views as SSA values. class LinalgDependenceGraph { public: + enum DependenceType { RAR = 0, RAW, WAR, WAW, NumTypes }; struct LinalgOpView { Operation *op; unsigned operandIndex; @@ -57,13 +58,14 @@ // 1. src in the case of dependencesFromDstGraphs. // 2. dst in the case of dependencesIntoGraphs. LinalgOpView indexingOpView; + // Type of the dependence. + DependenceType dependenceType; }; using LinalgDependences = SmallVector; using DependenceGraph = DenseMap; using dependence_iterator = LinalgDependences::const_iterator; using dependence_range = iterator_range; - enum DependenceType { RAR = 0, RAW, WAR, WAW, NumTypes }; static StringRef getDependenceTypeStr(DependenceType depType); // Builds a linalg dependence graph for the ops of type LinalgOp under `f`. diff --git a/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp b/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp --- a/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp +++ b/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp @@ -113,9 +113,9 @@ << ") -> \n\t\t(" << *dependentOpView.op << ", " << dependentOpView.operandIndex << ")"); dependencesFromGraphs[dt][indexingOpView.op].push_back( - LinalgDependenceGraphElem{dependentOpView, indexingOpView}); + LinalgDependenceGraphElem{dependentOpView, indexingOpView, dt}); dependencesIntoGraphs[dt][dependentOpView.op].push_back( - LinalgDependenceGraphElem{indexingOpView, dependentOpView}); + LinalgDependenceGraphElem{indexingOpView, dependentOpView, dt}); } LinalgDependenceGraph::dependence_range