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 Roelofs void 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 &registry) {
38*36550692SRiver Riddle         registry.insert<DLTIDialect, func::FuncDialect>();
3919db802eSAlex Zinenko         registerAllToLLVMIRTranslations(registry);
409f9f89d4SMehdi Amini       });
41223154d2SJonathan Roelofs }
42223154d2SJonathan Roelofs } // namespace mlir
43