Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Vasilache <nicolas.vasilache@gmail.com>2022-10-12 15:06:18 +0300
committerNicolas Vasilache <nicolas.vasilache@gmail.com>2022-10-12 17:27:35 +0300
commitbbe4441d3395e55d59eee9bef33539ac100010c2 (patch)
treec233ce29ad87e5475d2fd9dba4f755b4385c0a99
parent0b9264006dafff1c1e6440635c894906ffeda0d2 (diff)
[mlir][Linalg] NFC - Drop LinalgLoweringPattern
Linalg ops are generally lowered to loops using a pass and the individual application of patterns has no concrete uses. If/when necessary, this can later be reintroduced via a proper transform dialect op. Differential Revision: https://reviews.llvm.org/D135766
-rw-r--r--mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h60
-rw-r--r--mlir/test/Dialect/Linalg/transform-patterns.mlir9
-rw-r--r--mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp7
3 files changed, 1 insertions, 75 deletions
diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
index e77d4e87ce1a..4fd9e3fe0cf2 100644
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+++ b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
@@ -842,66 +842,6 @@ struct LinalgEnablingOptions {
//===----------------------------------------------------------------------===//
// Transformations exposed as rewrite patterns.
//===----------------------------------------------------------------------===//
-///
-/// Linalg lowering patterns.
-///
-/// Apply the `linalgLowerOpToLoops` transformation as a pattern.
-/// `filter` controls LinalgTransformMarker matching and update when specified.
-/// See `linalgLowerOpToLoops` for more details.
-enum class LinalgLoweringType {
- LibraryCall = 0,
- Loops = 1,
- AffineLoops = 2,
- ParallelLoops = 3
-};
-
-template <typename OpTy>
-struct LinalgLoweringPattern : public RewritePattern {
- LinalgLoweringPattern(
- MLIRContext *context, LinalgLoweringType loweringType,
- LinalgTransformationFilter f = LinalgTransformationFilter(),
- PatternBenefit benefit = 1)
- : RewritePattern(OpTy::getOperationName(), benefit, context),
- filter(std::move(f)), loweringType(loweringType) {}
-
- // TODO: Move implementation to .cpp once named ops are auto-generated.
- LogicalResult matchAndRewrite(Operation *op,
- PatternRewriter &rewriter) const override {
- LinalgOp linalgOp = dyn_cast<LinalgOp>(op);
- if (!linalgOp)
- return failure();
- if (failed(filter.checkAndNotify(rewriter, linalgOp)))
- return failure();
-
- switch (loweringType) {
- case LinalgLoweringType::LibraryCall:
- // TODO: Move lowering to library calls here.
- return failure();
- case LinalgLoweringType::Loops:
- if (failed(linalgOpToLoops(rewriter, op)))
- return failure();
- break;
- case LinalgLoweringType::AffineLoops:
- if (failed(linalgOpToAffineLoops(rewriter, op)))
- return failure();
- break;
- case LinalgLoweringType::ParallelLoops:
- if (failed(linalgOpToParallelLoops(rewriter, op)))
- return failure();
- break;
- }
-
- rewriter.eraseOp(op);
- return success();
- }
-
-private:
- /// LinalgTransformMarker handles special attribute manipulations.
- LinalgTransformationFilter filter;
- /// Controls whether the pattern lowers to library calls, scf.for, affine.for
- /// or scf.parallel.
- LinalgLoweringType loweringType;
-};
/// Linalg generalization patterns
diff --git a/mlir/test/Dialect/Linalg/transform-patterns.mlir b/mlir/test/Dialect/Linalg/transform-patterns.mlir
index b66d8f604127..06c52f50e0fa 100644
--- a/mlir/test/Dialect/Linalg/transform-patterns.mlir
+++ b/mlir/test/Dialect/Linalg/transform-patterns.mlir
@@ -19,16 +19,9 @@ transform.sequence failures(propagate) {
// CHECK-LABEL: func @dot
// CHECK-DAG: %[[c0:.*]] = arith.constant 0 : index
-// CHECK-DAG: %[[c1:.*]] = arith.constant 1 : index
// CHECK-DAG: %[[c8000:.*]] = arith.constant 8000 : index
// CHECK: scf.for {{.*}} = %[[c0]] to {{.*}} step %[[c8000]] {
-// CHECK: scf.for {{.*}} = %[[c0]] to {{.*}} step %[[c1]] {
-// CHECK: load
-// CHECK: load
-// CHECK: load
-// CHECK: arith.mulf
-// CHECK: arith.addf
-// CHECK: store
+// CHECK: linalg.dot
// -----
diff --git a/mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp b/mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp
index ad27637c49ea..41dce75b711a 100644
--- a/mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp
+++ b/mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp
@@ -125,13 +125,6 @@ static void applyPatterns(func::FuncOp funcOp) {
RewritePatternSet patterns(ctx);
//===--------------------------------------------------------------------===//
- // Linalg to loops patterns.
- //===--------------------------------------------------------------------===//
- patterns.add<LinalgLoweringPattern<DotOp>>(
- ctx,
- /*loweringType=*/LinalgLoweringType::Loops);
-
- //===--------------------------------------------------------------------===//
// Linalg distribution patterns.
//===--------------------------------------------------------------------===//
LinalgLoopDistributionOptions distributionOptions;