diff options
Diffstat (limited to 'mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp')
-rw-r--r-- | mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp b/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp new file mode 100644 index 00000000000..4cc59974960 --- /dev/null +++ b/mlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp @@ -0,0 +1,36 @@ +//===- ConvertToLLVMIR.cpp - MLIR to LLVM IR conversion -------------------===// +// +// Part of the MLIR 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 a translation between the MLIR LLVM dialect and LLVM IR. +// +//===----------------------------------------------------------------------===// + +#include "mlir/Target/LLVMIR.h" + +#include "mlir/Target/LLVMIR/ModuleTranslation.h" +#include "mlir/Translation.h" + +#include "llvm/ADT/StringRef.h" +#include "llvm/IR/Module.h" +#include "llvm/Support/ToolOutputFile.h" + +using namespace mlir; + +std::unique_ptr<llvm::Module> mlir::translateModuleToLLVMIR(ModuleOp m) { + return LLVM::ModuleTranslation::translateModule<>(m); +} + +static TranslateFromMLIRRegistration + registration("mlir-to-llvmir", [](ModuleOp module, raw_ostream &output) { + auto llvmModule = LLVM::ModuleTranslation::translateModule<>(module); + if (!llvmModule) + return failure(); + + llvmModule->print(output, nullptr); + return success(); + }); |