summaryrefslogtreecommitdiff
path: root/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp
diff options
context:
space:
mode:
authorPeiming Liu <36770114+PeimingLiu@users.noreply.github.com>2023-10-30 15:22:21 -0700
committerGitHub <noreply@github.com>2023-10-30 15:22:21 -0700
commitf82bee1367a1d612d688790b81c1c146ce99f2ea (patch)
tree80d33047c7b678229b40cac307d14ee14e546b28 /mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorPasses.cpp
parentb1c59b516cbbbb17ab8ceea0a9046924d1683583 (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.cpp46
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() {