xref: /llvm-project/mlir/examples/transform/Ch2/transform-opt/transform-opt.cpp (revision b33b91a21788d439f49d6db4e7224c20f740f1a7)
168ae0d78SAlex Zinenko //===-- transform-opt.cpp - Transform dialect tutorial entry point --------===//
268ae0d78SAlex Zinenko //
368ae0d78SAlex Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
468ae0d78SAlex Zinenko // See https://llvm.org/LICENSE.txt for license information.
568ae0d78SAlex Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
668ae0d78SAlex Zinenko //
768ae0d78SAlex Zinenko //===----------------------------------------------------------------------===//
868ae0d78SAlex Zinenko //
968ae0d78SAlex Zinenko // This is the top-level file for the Transform dialect tutorial chapter 2.
1068ae0d78SAlex Zinenko //
1168ae0d78SAlex Zinenko //===----------------------------------------------------------------------===//
1268ae0d78SAlex Zinenko 
1368ae0d78SAlex Zinenko #include "MyExtension.h"
1468ae0d78SAlex Zinenko 
15*b33b91a2SOleksandr "Alex" Zinenko #include "mlir/Dialect/Transform/Transforms/Passes.h"
1668ae0d78SAlex Zinenko #include "mlir/IR/DialectRegistry.h"
1768ae0d78SAlex Zinenko #include "mlir/IR/MLIRContext.h"
1868ae0d78SAlex Zinenko #include "mlir/InitAllDialects.h"
197c4e8c6aSNicolas Vasilache #include "mlir/InitAllExtensions.h"
2068ae0d78SAlex Zinenko #include "mlir/Tools/mlir-opt/MlirOptMain.h"
2168ae0d78SAlex Zinenko #include "mlir/Transforms/Passes.h"
2268ae0d78SAlex Zinenko #include <cstdlib>
2368ae0d78SAlex Zinenko 
2468ae0d78SAlex Zinenko namespace test {
2568ae0d78SAlex Zinenko void registerTestTransformDialectExtension(mlir::DialectRegistry &);
2668ae0d78SAlex Zinenko } // namespace test
2768ae0d78SAlex Zinenko 
main(int argc,char ** argv)2868ae0d78SAlex Zinenko int main(int argc, char **argv) {
2968ae0d78SAlex Zinenko   // Register all "core" dialects and our transform dialect extension.
3068ae0d78SAlex Zinenko   mlir::DialectRegistry registry;
3168ae0d78SAlex Zinenko   mlir::registerAllDialects(registry);
327c4e8c6aSNicolas Vasilache   mlir::registerAllExtensions(registry);
3368ae0d78SAlex Zinenko   registerMyExtension(registry);
3468ae0d78SAlex Zinenko 
35*b33b91a2SOleksandr "Alex" Zinenko   // Register transform interpreter pass.
36*b33b91a2SOleksandr "Alex" Zinenko   mlir::transform::registerInterpreterPass();
37*b33b91a2SOleksandr "Alex" Zinenko 
3868ae0d78SAlex Zinenko   // Register a handful of cleanup passes that we can run to make the output IR
3968ae0d78SAlex Zinenko   // look nicer.
4068ae0d78SAlex Zinenko   mlir::registerCanonicalizerPass();
4168ae0d78SAlex Zinenko   mlir::registerCSEPass();
4268ae0d78SAlex Zinenko   mlir::registerSymbolDCEPass();
4368ae0d78SAlex Zinenko 
4468ae0d78SAlex Zinenko   // Delegate to the MLIR utility for parsing and pass management.
4568ae0d78SAlex Zinenko   return mlir::MlirOptMain(argc, argv, "transform-opt-ch2", registry)
4668ae0d78SAlex Zinenko                  .succeeded()
4768ae0d78SAlex Zinenko              ? EXIT_SUCCESS
4868ae0d78SAlex Zinenko              : EXIT_FAILURE;
4968ae0d78SAlex Zinenko }
50