diff options
| author | Peiming Liu <36770114+PeimingLiu@users.noreply.github.com> | 2023-10-30 15:22:21 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-30 15:22:21 -0700 |
| commit | f82bee1367a1d612d688790b81c1c146ce99f2ea (patch) | |
| tree | 80d33047c7b678229b40cac307d14ee14e546b28 /mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp | |
| parent | b1c59b516cbbbb17ab8ceea0a9046924d1683583 (diff) | |
[mlir][sparse] split post-sparsification-rewriting into two passes. (#70727)
Diffstat (limited to 'mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp')
| -rw-r--r-- | mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp index 095a6ab9a508..c5fd19a811d6 100644 --- a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp +++ b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp @@ -25,7 +25,8 @@ namespace mlir { #define GEN_PASS_DEF_SPARSEREINTERPRETMAP #define GEN_PASS_DEF_PRESPARSIFICATIONREWRITE #define GEN_PASS_DEF_SPARSIFICATIONPASS -#define GEN_PASS_DEF_POSTSPARSIFICATIONREWRITE +#define GEN_PASS_DEF_LOWERSPARSEOPSTOFOREACH +#define GEN_PASS_DEF_LOWERFOREACHTOSCF #define GEN_PASS_DEF_SPARSETENSORCONVERSIONPASS #define GEN_PASS_DEF_SPARSETENSORCODEGEN #define GEN_PASS_DEF_SPARSEBUFFERREWRITE @@ -120,23 +121,34 @@ struct StageSparseOperationsPass } }; -struct PostSparsificationRewritePass - : public impl::PostSparsificationRewriteBase< - PostSparsificationRewritePass> { - PostSparsificationRewritePass() = default; - PostSparsificationRewritePass(const PostSparsificationRewritePass &pass) = +struct LowerSparseOpsToForeachPass + : public impl::LowerSparseOpsToForeachBase<LowerSparseOpsToForeachPass> { + LowerSparseOpsToForeachPass() = default; + LowerSparseOpsToForeachPass(const LowerSparseOpsToForeachPass &pass) = default; - PostSparsificationRewritePass(bool enableRT, bool foreach, bool convert) { + LowerSparseOpsToForeachPass(bool enableRT, bool convert) { enableRuntimeLibrary = enableRT; - enableForeach = foreach; enableConvert = convert; } void runOnOperation() override { auto *ctx = &getContext(); RewritePatternSet patterns(ctx); - populatePostSparsificationRewriting(patterns, enableRuntimeLibrary, - enableForeach, enableConvert); + populateLowerSparseOpsToForeachPatterns(patterns, enableRuntimeLibrary, + enableConvert); + (void)applyPatternsAndFoldGreedily(getOperation(), std::move(patterns)); + } +}; + +struct LowerForeachToSCFPass + : public impl::LowerForeachToSCFBase<LowerForeachToSCFPass> { + LowerForeachToSCFPass() = default; + LowerForeachToSCFPass(const LowerForeachToSCFPass &pass) = default; + + void runOnOperation() override { + auto *ctx = &getContext(); + RewritePatternSet patterns(ctx); + populateLowerForeachToSCFPatterns(patterns); (void)applyPatternsAndFoldGreedily(getOperation(), std::move(patterns)); } }; @@ -399,15 +411,17 @@ std::unique_ptr<Pass> mlir::createStageSparseOperationsPass() { return std::make_unique<StageSparseOperationsPass>(); } -std::unique_ptr<Pass> mlir::createPostSparsificationRewritePass() { - return std::make_unique<PostSparsificationRewritePass>(); +std::unique_ptr<Pass> mlir::createLowerSparseOpsToForeachPass() { + return std::make_unique<LowerSparseOpsToForeachPass>(); } std::unique_ptr<Pass> -mlir::createPostSparsificationRewritePass(bool enableRT, bool enableForeach, - bool enableConvert) { - return std::make_unique<PostSparsificationRewritePass>( - enableRT, enableForeach, enableConvert); +mlir::createLowerSparseOpsToForeachPass(bool enableRT, bool enableConvert) { + return std::make_unique<LowerSparseOpsToForeachPass>(enableRT, enableConvert); +} + +std::unique_ptr<Pass> mlir::createLowerForeachToSCFPass() { + return std::make_unique<LowerForeachToSCFPass>(); } std::unique_ptr<Pass> mlir::createSparseTensorConversionPass() { |
