brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 8e6f5c7 Raw
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 &registry) {39        registry.insert<DLTIDialect, func::FuncDialect>();40        registerAllToLLVMIRTranslations(registry);41      });42}43} // namespace mlir44