xref: /llvm-project/mlir/examples/transform/Ch3/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 //
94cb2ef4fSOleksandr "Alex" Zinenko // This is the top-level file for the Transform dialect tutorial chapter 3.
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 
main(int argc,char ** argv)2468ae0d78SAlex Zinenko int main(int argc, char **argv) {
2568ae0d78SAlex Zinenko   // Register all "core" dialects and our transform dialect extension.
2668ae0d78SAlex Zinenko   mlir::DialectRegistry registry;
2768ae0d78SAlex Zinenko   mlir::registerAllDialects(registry);
287c4e8c6aSNicolas Vasilache   mlir::registerAllExtensions(registry);
2968ae0d78SAlex Zinenko   registerMyExtension(registry);
3068ae0d78SAlex Zinenko 
31*b33b91a2SOleksandr "Alex" Zinenko   // Register the interpreter pass.
32*b33b91a2SOleksandr "Alex" Zinenko   mlir::transform::registerInterpreterPass();
33*b33b91a2SOleksandr "Alex" Zinenko 
3468ae0d78SAlex Zinenko   // Register a handful of cleanup passes that we can run to make the output IR
3568ae0d78SAlex Zinenko   // look nicer.
3668ae0d78SAlex Zinenko   mlir::registerCanonicalizerPass();
3768ae0d78SAlex Zinenko   mlir::registerCSEPass();
3868ae0d78SAlex Zinenko   mlir::registerSymbolDCEPass();
3968ae0d78SAlex Zinenko 
4068ae0d78SAlex Zinenko   // Delegate to the MLIR utility for parsing and pass management.
4168ae0d78SAlex Zinenko   return mlir::MlirOptMain(argc, argv, "transform-opt-ch3", registry)
4268ae0d78SAlex Zinenko                  .succeeded()
4368ae0d78SAlex Zinenko              ? EXIT_SUCCESS
4468ae0d78SAlex Zinenko              : EXIT_FAILURE;
4568ae0d78SAlex Zinenko }
46