xref: /llvm-project/mlir/test/lib/Dialect/Transform/TestTransformDialectInterpreter.cpp (revision a2e1f54bb7beff7ce84151353490c8b484da0a45)
1 //===- TestTransformDialectInterpreter.cpp --------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines a test pass that interprets Transform dialect operations in
10 // the module.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h"
15 #include "mlir/IR/BuiltinOps.h"
16 #include "mlir/Pass/Pass.h"
17 
18 using namespace mlir;
19 
20 namespace {
21 template <typename Derived>
22 class OpPassWrapper : public PassWrapper<Derived, OperationPass<>> {};
23 
24 struct TestTransformDialectEraseSchedulePass
25     : public PassWrapper<TestTransformDialectEraseSchedulePass,
26                          OperationPass<ModuleOp>> {
MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID__anonac4b0ea10111::TestTransformDialectEraseSchedulePass27   MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(
28       TestTransformDialectEraseSchedulePass)
29 
30   StringRef getArgument() const final {
31     return "test-transform-dialect-erase-schedule";
32   }
33 
getDescription__anonac4b0ea10111::TestTransformDialectEraseSchedulePass34   StringRef getDescription() const final {
35     return "erase transform dialect schedule from the IR";
36   }
37 
runOnOperation__anonac4b0ea10111::TestTransformDialectEraseSchedulePass38   void runOnOperation() override {
39     getOperation()->walk<WalkOrder::PreOrder>([&](Operation *nestedOp) {
40       if (isa<transform::TransformOpInterface>(nestedOp)) {
41         nestedOp->erase();
42         return WalkResult::skip();
43       }
44       return WalkResult::advance();
45     });
46   }
47 };
48 } // namespace
49 
50 namespace mlir {
51 namespace test {
52 /// Registers the test pass for erasing transform dialect ops.
registerTestTransformDialectEraseSchedulePass()53 void registerTestTransformDialectEraseSchedulePass() {
54   PassRegistration<TestTransformDialectEraseSchedulePass> reg;
55 }
56 } // namespace test
57 } // namespace mlir
58