From 94643fda1346e8dab30243d02250cd44683445f2 Mon Sep 17 00:00:00 2001 From: Tobias Gysi Date: Tue, 1 Jun 2021 08:43:43 +0000 Subject: [PATCH] [mlir][linalg] Cleanup LinalgOp usage in dependence analysis (NFC). Replace the uses of deprecated Structured Op Interface methods in DependenceAnalysis.cpp and DependenceAnalysis.h. This patch is based on https://reviews.llvm.org/D103394. Differential Revision: https://reviews.llvm.org/D103411 --- .../Dialect/Linalg/Analysis/DependenceAnalysis.h | 6 ++-- .../Dialect/Linalg/Analysis/DependenceAnalysis.cpp | 38 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h b/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h index 17fa57d..363d3ff 100644 --- a/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h +++ b/mlir/include/mlir/Dialect/Linalg/Analysis/DependenceAnalysis.h @@ -80,9 +80,9 @@ public: if (!owner) return llvm::None; if (OpOperand *operand = opView.dyn_cast()) - return owner.getIndexingMap(operand->getOperandNumber()); - return owner.getOutputIndexingMap( - opView.get().cast().getResultNumber()); + return owner.getTiedIndexingMap(operand); + return owner.getTiedIndexingMap(owner.getOutputOperand( + opView.get().cast().getResultNumber())); } // Return the operand number if the `opView` is an OpOperand *. Otherwise // return llvm::None. diff --git a/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp b/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp index 3e37979..5423a15 100644 --- a/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp +++ b/mlir/lib/Dialect/Linalg/Analysis/DependenceAnalysis.cpp @@ -165,46 +165,46 @@ void LinalgDependenceGraph::addDependencesBetween(LinalgOp src, LinalgOp dst) { LLVM_DEBUG(dbgs() << "addDependencesBetween " << *src.getOperation() << " and " << *dst.getOperation() << "\n"); if (src.hasTensorSemantics() && dst.hasTensorSemantics()) { - for (OpOperand &dstOpOperand : dst.getInputOpOperands()) { + for (OpOperand *dstOpOperand : dst.getInputOperands()) { // Check if the operand is defined by the src. - auto definingOp = dstOpOperand.get().getDefiningOp(); + auto definingOp = dstOpOperand->get().getDefiningOp(); if (definingOp && definingOp == src) - addDependenceElem(DependenceType::RAW, dstOpOperand.get(), - &dstOpOperand); + addDependenceElem(DependenceType::RAW, dstOpOperand->get(), + dstOpOperand); } - for (OpOperand &dstOpOperand : dst.getOutputOpOperands()) { + for (OpOperand *dstOpOperand : dst.getOutputOperands()) { // Check if the operand is defined by the src. - auto definingOp = dstOpOperand.get().getDefiningOp(); + auto definingOp = dstOpOperand->get().getDefiningOp(); if (definingOp && definingOp == src) { - if (dst.isInitTensor(&dstOpOperand)) { - addDependenceElem(DependenceType::RAW, dstOpOperand.get(), - &dstOpOperand); + if (dst.isInitTensor(dstOpOperand)) { + addDependenceElem(DependenceType::RAW, dstOpOperand->get(), + dstOpOperand); } - addDependenceElem(DependenceType::WAW, dstOpOperand.get(), - &dstOpOperand); + addDependenceElem(DependenceType::WAW, dstOpOperand->get(), + dstOpOperand); } } return; } assert(src.hasBufferSemantics() && dst.hasBufferSemantics() && "unhandled dependence tracking for mixed buffer/tensor operations"); - for (OpOperand *srcOpOperand : src.getOutputBuffersOpOperands()) { // W + for (OpOperand *srcOpOperand : src.getOutputBufferOperands()) { // W // RAW graph - for (OpOperand *dstOpOperand : dst.getInputBuffersOpOperands()) // R - if (aliases.alias(srcOpOperand->get(), dstOpOperand->get())) // RAW alias + for (OpOperand *dstOpOperand : dst.getInputBufferOperands()) // R + if (aliases.alias(srcOpOperand->get(), dstOpOperand->get())) // RAW alias addDependenceElem(DependenceType::RAW, srcOpOperand, dstOpOperand); // WAW graph - for (OpOperand *dstOpOperand : dst.getOutputBuffersOpOperands()) // W + for (OpOperand *dstOpOperand : dst.getOutputBufferOperands()) // W if (aliases.alias(srcOpOperand->get(), dstOpOperand->get())) // WAW alias addDependenceElem(DependenceType::WAW, srcOpOperand, dstOpOperand); } - for (OpOperand *srcOpOperand : src.getInputBuffersOpOperands()) { // R + for (OpOperand *srcOpOperand : src.getInputBufferOperands()) { // R // RAR graph - for (OpOperand *dstOpOperand : dst.getInputBuffersOpOperands()) // R - if (aliases.alias(srcOpOperand->get(), dstOpOperand->get())) // RAR alias + for (OpOperand *dstOpOperand : dst.getInputBufferOperands()) // R + if (aliases.alias(srcOpOperand->get(), dstOpOperand->get())) // RAR alias addDependenceElem(DependenceType::RAR, srcOpOperand, dstOpOperand); // WAR graph - for (OpOperand *dstOpOperand : dst.getOutputBuffersOpOperands()) // W + for (OpOperand *dstOpOperand : dst.getOutputBufferOperands()) // W if (aliases.alias(srcOpOperand->get(), dstOpOperand->get())) // WAR alias addDependenceElem(DependenceType::WAR, srcOpOperand, dstOpOperand); } -- 2.7.4