17d0426ddSRiver Riddle //===- TestComposeSubView.cpp - Test composed subviews --------------------===// 27d0426ddSRiver Riddle // 37d0426ddSRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 47d0426ddSRiver Riddle // See https://llvm.org/LICENSE.txt for license information. 57d0426ddSRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 67d0426ddSRiver Riddle // 77d0426ddSRiver Riddle //===----------------------------------------------------------------------===// 87d0426ddSRiver Riddle // 97d0426ddSRiver Riddle // This file implements a pass to test the composed subview patterns. 107d0426ddSRiver Riddle // 117d0426ddSRiver Riddle //===----------------------------------------------------------------------===// 127d0426ddSRiver Riddle 137d0426ddSRiver Riddle #include "mlir/Dialect/Affine/IR/AffineOps.h" 147d0426ddSRiver Riddle #include "mlir/Dialect/MemRef/Transforms/ComposeSubView.h" 157d0426ddSRiver Riddle #include "mlir/Pass/Pass.h" 167d0426ddSRiver Riddle #include "mlir/Transforms/GreedyPatternRewriteDriver.h" 177d0426ddSRiver Riddle 187d0426ddSRiver Riddle using namespace mlir; 197d0426ddSRiver Riddle 207d0426ddSRiver Riddle namespace { 217d0426ddSRiver Riddle struct TestComposeSubViewPass 2287d6bf37SRiver Riddle : public PassWrapper<TestComposeSubViewPass, OperationPass<>> { 235e50dd04SRiver Riddle MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestComposeSubViewPass) 245e50dd04SRiver Riddle 257d0426ddSRiver Riddle StringRef getArgument() const final { return "test-compose-subview"; } 267d0426ddSRiver Riddle StringRef getDescription() const final { 277d0426ddSRiver Riddle return "Test combining composed subviews"; 287d0426ddSRiver Riddle } 297d0426ddSRiver Riddle void runOnOperation() override; 307d0426ddSRiver Riddle void getDependentDialects(DialectRegistry ®istry) const override; 317d0426ddSRiver Riddle }; 327d0426ddSRiver Riddle 337d0426ddSRiver Riddle void TestComposeSubViewPass::getDependentDialects( 347d0426ddSRiver Riddle DialectRegistry ®istry) const { 354c48f016SMatthias Springer registry.insert<affine::AffineDialect>(); 367d0426ddSRiver Riddle } 377d0426ddSRiver Riddle 387d0426ddSRiver Riddle void TestComposeSubViewPass::runOnOperation() { 399f85c198SRiver Riddle RewritePatternSet patterns(&getContext()); 407d0426ddSRiver Riddle memref::populateComposeSubViewPatterns(patterns, &getContext()); 41*09dfc571SJacques Pienaar (void)applyPatternsGreedily(getOperation(), std::move(patterns)); 427d0426ddSRiver Riddle } 437d0426ddSRiver Riddle } // namespace 447d0426ddSRiver Riddle 457d0426ddSRiver Riddle namespace mlir { 467d0426ddSRiver Riddle namespace test { 477d0426ddSRiver Riddle void registerTestComposeSubView() { 487d0426ddSRiver Riddle PassRegistration<TestComposeSubViewPass>(); 497d0426ddSRiver Riddle } 507d0426ddSRiver Riddle } // namespace test 517d0426ddSRiver Riddle } // namespace mlir 52