[Mlir-commits] [mlir] 15faa55 - [mlir][Linalg] NFC - Drop CodegenStrategy and remaining strategy passes

Nicolas Vasilache llvmlistbot at llvm.org
Wed Oct 12 04:47:21 PDT 2022


Author: Nicolas Vasilache
Date: 2022-10-12T04:47:12-07:00
New Revision: 15faa55f6576a85e7878354961fa881b08f13174

URL: https://github.com/llvm/llvm-project/commit/15faa55f6576a85e7878354961fa881b08f13174
DIFF: https://github.com/llvm/llvm-project/commit/15faa55f6576a85e7878354961fa881b08f13174.diff

LOG: [mlir][Linalg] NFC - Drop CodegenStrategy and remaining strategy passes

Differential Revision: https://reviews.llvm.org/D135759

Added: 
    

Modified: 
    mlir/include/mlir/Dialect/Linalg/Passes.h
    mlir/include/mlir/Dialect/Linalg/Passes.td
    mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt

Removed: 
    mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h
    mlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp
    mlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp


################################################################################
diff  --git a/mlir/include/mlir/Dialect/Linalg/Passes.h b/mlir/include/mlir/Dialect/Linalg/Passes.h
index 40ca0277a13d9..f2b5788af20bb 100644
--- a/mlir/include/mlir/Dialect/Linalg/Passes.h
+++ b/mlir/include/mlir/Dialect/Linalg/Passes.h
@@ -68,20 +68,6 @@ std::unique_ptr<OperationPass<func::FuncOp>> createLinalgGeneralizationPass();
 /// work on primitive types, if possible.
 std::unique_ptr<Pass> createLinalgDetensorizePass();
 
-//===----------------------------------------------------------------------===//
-/// Linalg strategy passes.
-//===----------------------------------------------------------------------===//
-/// Create a LinalgStrategyTilePass.
-std::unique_ptr<OperationPass<func::FuncOp>> createLinalgStrategyTilePass(
-    StringRef opName = "",
-    const linalg::LinalgTilingOptions &opt = linalg::LinalgTilingOptions(),
-    const linalg::LinalgTransformationFilter &filter =
-        linalg::LinalgTransformationFilter());
-
-/// Create a LinalgStrategyRemoveMarkersPass.
-std::unique_ptr<OperationPass<func::FuncOp>>
-createLinalgStrategyRemoveMarkersPass();
-
 //===----------------------------------------------------------------------===//
 // Registration
 //===----------------------------------------------------------------------===//

diff  --git a/mlir/include/mlir/Dialect/Linalg/Passes.td b/mlir/include/mlir/Dialect/Linalg/Passes.td
index 73fd30bbf8749..550feef376db5 100644
--- a/mlir/include/mlir/Dialect/Linalg/Passes.td
+++ b/mlir/include/mlir/Dialect/Linalg/Passes.td
@@ -146,15 +146,4 @@ def LinalgDetensorize : Pass<"linalg-detensorize", ""> {
   ];
 }
 
-def LinalgStrategyRemoveMarkersPass
-    : Pass<"linalg-strategy-remove-markers-pass", "func::FuncOp"> {
-  let summary = "Cleanup pass that drops markers.";
-  let constructor = "mlir::createLinalgStrategyRemoveMarkersPass()";
-  let dependentDialects = ["linalg::LinalgDialect"];
-  let options = [
-    Option<"anchorFuncName", "anchor-func", "std::string", /*default=*/"",
-      "Which func op is the anchor to latch on.">,
-  ];
-}
-
 #endif // MLIR_DIALECT_LINALG_PASSES

diff  --git a/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h b/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h
deleted file mode 100644
index ae3df323dd5c1..0000000000000
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h
+++ /dev/null
@@ -1,57 +0,0 @@
-//===- CodegenStrategy.h - Linalg programmable codegen strategy -*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef MLIR_DIALECT_LINALG_TRANSFORMS_CODEGENSTRATEGY_H_
-#define MLIR_DIALECT_LINALG_TRANSFORMS_CODEGENSTRATEGY_H_
-
-#include <utility>
-
-#include "mlir/Conversion/VectorToSCF/VectorToSCF.h"
-#include "mlir/Dialect/Linalg/Passes.h"
-#include "mlir/Pass/PassManager.h"
-
-namespace mlir {
-
-namespace linalg {
-
-/// Abstract Transformation class applied in a sequence that also handles state
-/// through markers.
-struct Transformation {
-  explicit Transformation(LinalgTransformationFilter::FilterFunction f)
-      : filter(std::move(f)) {}
-  virtual ~Transformation() = default;
-  virtual void addToPassPipeline(OpPassManager &pm,
-                                 LinalgTransformationFilter m) const = 0;
-  LinalgTransformationFilter::FilterFunction filter = nullptr;
-};
-
-/// Codegen strategy controls how a Linalg op is progressively lowered.
-struct CodegenStrategy {
-  /// Configure the post staged-patterns global enabling passes options.
-  CodegenStrategy &
-  setVectorTransferToSCFOptions(LinalgEnablingOptions options) {
-    linalgEnablingOptions = options;
-    return *this;
-  }
-
-  /// Apply the transformation patterns in sequence with cleanup
-  /// transformations interleaved.
-  void configurePassPipeline(OpPassManager &pm, MLIRContext *context,
-                             bool addEnablePass = true) const;
-
-private:
-  LogicalResult postPatternTransforms(Operation *func) const;
-
-  LinalgEnablingOptions linalgEnablingOptions;
-  SmallVector<std::unique_ptr<Transformation>, 4> transformationSequence;
-};
-
-} // namespace linalg
-} // namespace mlir
-
-#endif // MLIR_DIALECT_LINALG_TRANSFORMS_CODEGENSTRATEGY_H_

diff  --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
index c218ad2ff199c..24048c25a95ff 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
@@ -2,7 +2,6 @@ add_mlir_dialect_library(MLIRLinalgTransforms
   BubbleUpExtractSlice.cpp
   BufferizableOpInterfaceImpl.cpp
   Bufferize.cpp
-  CodegenStrategy.cpp
   ConstantFold.cpp
   DecomposeLinalgOps.cpp
   Detensorize.cpp
@@ -18,7 +17,6 @@ add_mlir_dialect_library(MLIRLinalgTransforms
   InlineScalarOperands.cpp
   Interchange.cpp
   Loops.cpp
-  LinalgStrategyPasses.cpp
   NamedOpConversions.cpp
   Promotion.cpp
   Split.cpp

diff  --git a/mlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp b/mlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp
deleted file mode 100644
index 6787de380b289..0000000000000
--- a/mlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-//===- CodegenStrategy.cpp - Linalg programmable codegen strategy ---------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements logic and helpers to expose Linalg transforms as
-// composable rewrite patterns through a programmable CodegenStrategy object.
-//
-//===----------------------------------------------------------------------===//
-
-#include "mlir/Dialect/Linalg/Transforms/CodegenStrategy.h"
-#include "mlir/Dialect/Linalg/Passes.h"
-#include "mlir/Dialect/Linalg/Transforms/Hoisting.h"
-#include "mlir/Dialect/SCF/Transforms/Transforms.h"
-#include "mlir/Dialect/Vector/IR/VectorOps.h"
-#include "mlir/Dialect/Vector/Transforms/VectorTransforms.h"
-#include "mlir/Pass/PassManager.h"
-#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
-#include "mlir/Transforms/Passes.h"
-
-using namespace mlir;
-using namespace mlir::linalg;
-
-#define DEBUG_TYPE "linalg-codegen-strategy"
-
-void mlir::linalg::CodegenStrategy::configurePassPipeline(
-    OpPassManager &pm, MLIRContext *context, bool addEnablePass) const {
-  for (unsigned stepCount = 0, e = transformationSequence.size(); stepCount < e;
-       ++stepCount) {
-    const std::unique_ptr<Transformation> &t =
-        transformationSequence[stepCount];
-    std::string currentStr = std::to_string(stepCount);
-    auto currentState = StringAttr::get(context, currentStr);
-    std::string nextStr = std::to_string(stepCount + 1);
-    auto nextState = StringAttr::get(context, nextStr);
-    auto filter = (currentState.str() == std::to_string(0))
-                      ? linalg::LinalgTransformationFilter(
-                            t->filter, ArrayRef<StringAttr>{}, nextState)
-                      : linalg::LinalgTransformationFilter(
-                            t->filter, currentState, nextState);
-    t->addToPassPipeline(pm, filter);
-  }
-  pm.addPass(createLinalgStrategyRemoveMarkersPass());
-}

diff  --git a/mlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp b/mlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp
deleted file mode 100644
index 39a9c7f49bd03..0000000000000
--- a/mlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//===- LinalgStrategyPasses.cpp - Implementation of Linalg passes ---------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements a configurable pass that can apply patterns liberally
-// and be plugged in a pass pipeline.
-//
-//===----------------------------------------------------------------------===//
-
-#include "mlir/Dialect/Linalg/Passes.h"
-
-#include "mlir/Analysis/SliceAnalysis.h"
-#include "mlir/Dialect/Affine/IR/AffineOps.h"
-#include "mlir/Dialect/Affine/LoopUtils.h"
-#include "mlir/Dialect/Affine/Utils.h"
-#include "mlir/Dialect/Func/IR/FuncOps.h"
-#include "mlir/Dialect/Linalg/IR/Linalg.h"
-#include "mlir/Dialect/Linalg/Transforms/Hoisting.h"
-#include "mlir/Dialect/Linalg/Transforms/Transforms.h"
-#include "mlir/Dialect/Linalg/Utils/Utils.h"
-#include "mlir/Dialect/SCF/Transforms/Transforms.h"
-#include "mlir/Dialect/Tensor/IR/Tensor.h"
-#include "mlir/Dialect/Vector/Transforms/VectorTransforms.h"
-#include "mlir/IR/AffineExpr.h"
-#include "mlir/IR/AffineMap.h"
-#include "mlir/Pass/PassManager.h"
-#include "mlir/Support/LLVM.h"
-#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
-#include "mlir/Transforms/LoopInvariantCodeMotionUtils.h"
-#include "mlir/Transforms/Passes.h"
-#include <utility>
-
-namespace mlir {
-#define GEN_PASS_DEF_LINALGSTRATEGYTILEANDFUSEPASS
-#define GEN_PASS_DEF_LINALGSTRATEGYTILEPASS
-#define GEN_PASS_DEF_LINALGSTRATEGYPADPASS
-#define GEN_PASS_DEF_LINALGSTRATEGYDECOMPOSEPASS
-#define GEN_PASS_DEF_LINALGSTRATEGYPEELPASS
-#define GEN_PASS_DEF_LINALGSTRATEGYLOWERVECTORSPASS
-#define GEN_PASS_DEF_LINALGSTRATEGYREMOVEMARKERSPASS
-#include "mlir/Dialect/Linalg/Passes.h.inc"
-} // namespace mlir
-
-using namespace mlir;
-using namespace mlir::vector;
-using namespace linalg;
-
-namespace {
-
-/// Configurable pass to lower vector operations.
-struct LinalgStrategyRemoveMarkersPass
-    : public impl::LinalgStrategyRemoveMarkersPassBase<
-          LinalgStrategyRemoveMarkersPass> {
-
-  void runOnOperation() override {
-    auto funcOp = getOperation();
-    if (!anchorFuncName.empty() && funcOp.getName() != anchorFuncName)
-      return;
-    funcOp.walk([](LinalgOp op) {
-      op->removeAttr(LinalgTransforms::kLinalgTransformMarker);
-    });
-  }
-};
-} // namespace
-
-/// Create a LinalgStrategyRemoveMarkersPass.
-std::unique_ptr<OperationPass<func::FuncOp>>
-mlir::createLinalgStrategyRemoveMarkersPass() {
-  return std::make_unique<LinalgStrategyRemoveMarkersPass>();
-}


        


More information about the Mlir-commits mailing list