44 lines · cpp
1//===- ConvertToLLVMIR.cpp - MLIR to LLVM IR conversion -------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements a translation between the MLIR LLVM dialect and LLVM IR.10//11//===----------------------------------------------------------------------===//12 13#include "mlir/Dialect/DLTI/DLTI.h"14#include "mlir/Dialect/Func/IR/FuncOps.h"15#include "mlir/Target/LLVMIR/Dialect/All.h"16#include "mlir/Target/LLVMIR/Export.h"17#include "mlir/Tools/mlir-translate/Translation.h"18#include "llvm/IR/DebugProgramInstruction.h"19#include "llvm/IR/LLVMContext.h"20#include "llvm/IR/Module.h"21 22using namespace mlir;23 24namespace mlir {25void registerToLLVMIRTranslation() {26 TranslateFromMLIRRegistration registration(27 "mlir-to-llvmir", "Translate MLIR to LLVMIR",28 [](Operation *op, raw_ostream &output) {29 llvm::LLVMContext llvmContext;30 auto llvmModule = translateModuleToLLVMIR(op, llvmContext);31 if (!llvmModule)32 return failure();33 34 llvmModule->removeDebugIntrinsicDeclarations();35 llvmModule->print(output, nullptr);36 return success();37 },38 [](DialectRegistry ®istry) {39 registry.insert<DLTIDialect, func::FuncDialect>();40 registerAllToLLVMIRTranslations(registry);41 });42}43} // namespace mlir44