xref: /llvm-project/mlir/examples/transform/Ch4/transform-opt/transform-opt.cpp (revision b33b91a21788d439f49d6db4e7224c20f740f1a7)
1*4cb2ef4fSOleksandr "Alex" Zinenko //===-- transform-opt.cpp - Transform dialect tutorial entry point --------===//
2*4cb2ef4fSOleksandr "Alex" Zinenko //
3*4cb2ef4fSOleksandr "Alex" Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*4cb2ef4fSOleksandr "Alex" Zinenko // See https://llvm.org/LICENSE.txt for license information.
5*4cb2ef4fSOleksandr "Alex" Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*4cb2ef4fSOleksandr "Alex" Zinenko //
7*4cb2ef4fSOleksandr "Alex" Zinenko //===----------------------------------------------------------------------===//
8*4cb2ef4fSOleksandr "Alex" Zinenko //
9*4cb2ef4fSOleksandr "Alex" Zinenko // This is the top-level file for the Transform dialect tutorial chapter 4.
10*4cb2ef4fSOleksandr "Alex" Zinenko //
11*4cb2ef4fSOleksandr "Alex" Zinenko //===----------------------------------------------------------------------===//
12*4cb2ef4fSOleksandr "Alex" Zinenko 
13*4cb2ef4fSOleksandr "Alex" Zinenko #include "MyExtension.h"
14*4cb2ef4fSOleksandr "Alex" Zinenko 
15*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/Dialect/Transform/Transforms/Passes.h"
16*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/IR/DialectRegistry.h"
17*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/IR/MLIRContext.h"
18*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/InitAllDialects.h"
19*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/InitAllExtensions.h"
20*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/Tools/mlir-opt/MlirOptMain.h"
21*4cb2ef4fSOleksandr "Alex" Zinenko #include "mlir/Transforms/Passes.h"
22*4cb2ef4fSOleksandr "Alex" Zinenko #include <cstdlib>
23*4cb2ef4fSOleksandr "Alex" Zinenko 
main(int argc,char ** argv)24*4cb2ef4fSOleksandr "Alex" Zinenko int main(int argc, char **argv) {
25*4cb2ef4fSOleksandr "Alex" Zinenko   // Register all "core" dialects and our transform dialect extension.
26*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::DialectRegistry registry;
27*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::registerAllDialects(registry);
28*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::registerAllExtensions(registry);
29*4cb2ef4fSOleksandr "Alex" Zinenko   registerMyExtension(registry);
30*4cb2ef4fSOleksandr "Alex" Zinenko 
31*4cb2ef4fSOleksandr "Alex" Zinenko   // Register a handful of cleanup passes that we can run to make the output IR
32*4cb2ef4fSOleksandr "Alex" Zinenko   // look nicer.
33*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::registerCanonicalizerPass();
34*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::registerCSEPass();
35*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::registerSymbolDCEPass();
36*4cb2ef4fSOleksandr "Alex" Zinenko   mlir::transform::registerInterpreterPass();
37*4cb2ef4fSOleksandr "Alex" Zinenko 
38*4cb2ef4fSOleksandr "Alex" Zinenko   // Delegate to the MLIR utility for parsing and pass management.
39*4cb2ef4fSOleksandr "Alex" Zinenko   return mlir::MlirOptMain(argc, argv, "transform-opt-ch4", registry)
40*4cb2ef4fSOleksandr "Alex" Zinenko                  .succeeded()
41*4cb2ef4fSOleksandr "Alex" Zinenko              ? EXIT_SUCCESS
42*4cb2ef4fSOleksandr "Alex" Zinenko              : EXIT_FAILURE;
43*4cb2ef4fSOleksandr "Alex" Zinenko }
44