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" Zinenkoint 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