//===- OptUtils.cpp - MLIR Execution Engine optimization pass utilities ---===// // // 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 implements the utility functions to trigger LLVM optimizations from // MLIR Execution Engine. // //===----------------------------------------------------------------------===// #include "mlir/ExecutionEngine/OptUtils.h" #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/IR/Module.h" #include "llvm/Passes/OptimizationLevel.h" #include "llvm/Passes/PassBuilder.h" #include "llvm/Support/Error.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Target/TargetMachine.h" #include <optional> usingnamespacellvm; static std::optional<OptimizationLevel> mapToLevel(unsigned optLevel, unsigned sizeLevel) { … } // Create and return a lambda that uses LLVM pass manager builder to set up // optimizations based on the given level. std::function<Error(Module *)> mlir::makeOptimizingTransformer(unsigned optLevel, unsigned sizeLevel, TargetMachine *targetMachine) { … }