1d064c480SAlex Zinenko //===- TestTransformDialectInterpreter.cpp --------------------------------===// 2d064c480SAlex Zinenko // 3d064c480SAlex Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4d064c480SAlex Zinenko // See https://llvm.org/LICENSE.txt for license information. 5d064c480SAlex Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6d064c480SAlex Zinenko // 7d064c480SAlex Zinenko //===----------------------------------------------------------------------===// 8d064c480SAlex Zinenko // 9d064c480SAlex Zinenko // This file defines a test pass that interprets Transform dialect operations in 10d064c480SAlex Zinenko // the module. 11d064c480SAlex Zinenko // 12d064c480SAlex Zinenko //===----------------------------------------------------------------------===// 13d064c480SAlex Zinenko 14*5a9bdd85SOleksandr "Alex" Zinenko #include "mlir/Dialect/Transform/Interfaces/TransformInterfaces.h" 15d064c480SAlex Zinenko #include "mlir/IR/BuiltinOps.h" 16d064c480SAlex Zinenko #include "mlir/Pass/Pass.h" 17d064c480SAlex Zinenko 18d064c480SAlex Zinenko using namespace mlir; 19d064c480SAlex Zinenko 20d064c480SAlex Zinenko namespace { 216e44f11eSAlex Zinenko template <typename Derived> 22b7895f9dSAlex Zinenko class OpPassWrapper : public PassWrapper<Derived, OperationPass<>> {}; 236e44f11eSAlex Zinenko 2444cfea02SNicolas Vasilache struct TestTransformDialectEraseSchedulePass 2544cfea02SNicolas Vasilache : public PassWrapper<TestTransformDialectEraseSchedulePass, 2644cfea02SNicolas Vasilache OperationPass<ModuleOp>> { MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID__anonac4b0ea10111::TestTransformDialectEraseSchedulePass2744cfea02SNicolas Vasilache MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID( 2844cfea02SNicolas Vasilache TestTransformDialectEraseSchedulePass) 2944cfea02SNicolas Vasilache 3044cfea02SNicolas Vasilache StringRef getArgument() const final { 3144cfea02SNicolas Vasilache return "test-transform-dialect-erase-schedule"; 3244cfea02SNicolas Vasilache } 3344cfea02SNicolas Vasilache getDescription__anonac4b0ea10111::TestTransformDialectEraseSchedulePass3444cfea02SNicolas Vasilache StringRef getDescription() const final { 3544cfea02SNicolas Vasilache return "erase transform dialect schedule from the IR"; 3644cfea02SNicolas Vasilache } 3744cfea02SNicolas Vasilache runOnOperation__anonac4b0ea10111::TestTransformDialectEraseSchedulePass3844cfea02SNicolas Vasilache void runOnOperation() override { 3944cfea02SNicolas Vasilache getOperation()->walk<WalkOrder::PreOrder>([&](Operation *nestedOp) { 4044cfea02SNicolas Vasilache if (isa<transform::TransformOpInterface>(nestedOp)) { 4144cfea02SNicolas Vasilache nestedOp->erase(); 4244cfea02SNicolas Vasilache return WalkResult::skip(); 4344cfea02SNicolas Vasilache } 4444cfea02SNicolas Vasilache return WalkResult::advance(); 4544cfea02SNicolas Vasilache }); 4644cfea02SNicolas Vasilache } 4744cfea02SNicolas Vasilache }; 48d064c480SAlex Zinenko } // namespace 49d064c480SAlex Zinenko 50d064c480SAlex Zinenko namespace mlir { 51d064c480SAlex Zinenko namespace test { 5244cfea02SNicolas Vasilache /// Registers the test pass for erasing transform dialect ops. registerTestTransformDialectEraseSchedulePass()5344cfea02SNicolas Vasilachevoid registerTestTransformDialectEraseSchedulePass() { 5444cfea02SNicolas Vasilache PassRegistration<TestTransformDialectEraseSchedulePass> reg; 5544cfea02SNicolas Vasilache } 56d064c480SAlex Zinenko } // namespace test 57d064c480SAlex Zinenko } // namespace mlir 58