//===- OptUtils.h - MLIR Execution Engine opt pass utilities ----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file declares the utility functions to trigger LLVM optimizations from // MLIR Execution Engine. // //===----------------------------------------------------------------------===// #ifndef MLIR_EXECUTIONENGINE_OPTUTILS_H #define MLIR_EXECUTIONENGINE_OPTUTILS_H #include <functional> #include <string> namespace llvm { class Module; class Error; class TargetMachine; } // namespace llvm namespace mlir { /// Create a module transformer function for MLIR ExecutionEngine that runs /// LLVM IR passes corresponding to the given speed and size optimization /// levels (e.g. -O2 or -Os). If not null, `targetMachine` is used to /// initialize passes that provide target-specific information to the LLVM /// optimizer. `targetMachine` must outlive the returned std::function. std::function<llvm::Error(llvm::Module *)> makeOptimizingTransformer(unsigned optLevel, unsigned sizeLevel, llvm::TargetMachine *targetMachine); } // namespace mlir #endif // MLIR_EXECUTIONENGINE_OPTUTILS_H