diff options
author | Nicolas Vasilache <nicolas.vasilache@gmail.com> | 2022-10-12 15:06:18 +0300 |
---|---|---|
committer | Nicolas Vasilache <nicolas.vasilache@gmail.com> | 2022-10-12 17:27:35 +0300 |
commit | bbe4441d3395e55d59eee9bef33539ac100010c2 (patch) | |
tree | c233ce29ad87e5475d2fd9dba4f755b4385c0a99 | |
parent | 0b9264006dafff1c1e6440635c894906ffeda0d2 (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.h | 60 | ||||
-rw-r--r-- | mlir/test/Dialect/Linalg/transform-patterns.mlir | 9 | ||||
-rw-r--r-- | mlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp | 7 |
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; |