1cde4d5a6SJacques Pienaar //===- ConvertToLLVMIR.cpp - MLIR to LLVM IR conversion -------------------===// 2ac6bfa67SAlex Zinenko // 330857107SMehdi Amini // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 456222a06SMehdi Amini // See https://llvm.org/LICENSE.txt for license information. 556222a06SMehdi Amini // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6ac6bfa67SAlex Zinenko // 756222a06SMehdi Amini //===----------------------------------------------------------------------===// 8ac6bfa67SAlex Zinenko // 950700b81SAlex Zinenko // This file implements a translation between the MLIR LLVM dialect and LLVM IR. 10ac6bfa67SAlex Zinenko // 11ac6bfa67SAlex Zinenko //===----------------------------------------------------------------------===// 12ac6bfa67SAlex Zinenko 13ea998709SAlex Zinenko #include "mlir/Dialect/DLTI/DLTI.h" 14*36550692SRiver Riddle #include "mlir/Dialect/Func/IR/FuncOps.h" 1519db802eSAlex Zinenko #include "mlir/IR/BuiltinOps.h" 1619db802eSAlex Zinenko #include "mlir/Target/LLVMIR/Dialect/All.h" 1719db802eSAlex Zinenko #include "mlir/Target/LLVMIR/Export.h" 18ee1d447eSRiver Riddle #include "mlir/Tools/mlir-translate/Translation.h" 1919db802eSAlex Zinenko #include "llvm/IR/LLVMContext.h" 20ac6bfa67SAlex Zinenko #include "llvm/IR/Module.h" 21ac6bfa67SAlex Zinenko 22ac6bfa67SAlex Zinenko using namespace mlir; 23ac6bfa67SAlex Zinenko 24223154d2SJonathan Roelofs namespace mlir { registerToLLVMIRTranslation()25223154d2SJonathan Roelofsvoid registerToLLVMIRTranslation() { 26223154d2SJonathan Roelofs TranslateFromMLIRRegistration registration( 27f164534cSMehdi Amini "mlir-to-llvmir", 28f164534cSMehdi Amini [](ModuleOp module, raw_ostream &output) { 29db1c197bSAlex Zinenko llvm::LLVMContext llvmContext; 30ce8f10d6SAlex Zinenko auto llvmModule = translateModuleToLLVMIR(module, llvmContext); 31ac6bfa67SAlex Zinenko if (!llvmModule) 326f7f2bceSAlex Zinenko return failure(); 33ac6bfa67SAlex Zinenko 34b00a522bSLei Zhang llvmModule->print(output, nullptr); 356f7f2bceSAlex Zinenko return success(); 36f164534cSMehdi Amini }, 379f9f89d4SMehdi Amini [](DialectRegistry ®istry) { 38*36550692SRiver Riddle registry.insert<DLTIDialect, func::FuncDialect>(); 3919db802eSAlex Zinenko registerAllToLLVMIRTranslations(registry); 409f9f89d4SMehdi Amini }); 41223154d2SJonathan Roelofs } 42223154d2SJonathan Roelofs } // namespace mlir 43