xref: /llvm-project/mlir/include/mlir-c/Target/LLVMIR.h (revision 7fb89bfb0f93d5cfe3cf661253bbb2e2ef19359a)
1*7fb89bfbSVitaly Buka //===-- LLVMIR.h - C Interface for MLIR LLVMIR Target -------------*- C -*-===//
2*7fb89bfbSVitaly Buka //
3*7fb89bfbSVitaly Buka // Part of the LLVM Project, under the Apache License v2.0 with LLVM
4*7fb89bfbSVitaly Buka // Exceptions.
5*7fb89bfbSVitaly Buka // See https://llvm.org/LICENSE.txt for license information.
6*7fb89bfbSVitaly Buka // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*7fb89bfbSVitaly Buka //
8*7fb89bfbSVitaly Buka //===----------------------------------------------------------------------===//
9*7fb89bfbSVitaly Buka //
10*7fb89bfbSVitaly Buka // This header declares the C interface to target LLVMIR with MLIR.
11*7fb89bfbSVitaly Buka //
12*7fb89bfbSVitaly Buka //===----------------------------------------------------------------------===//
13*7fb89bfbSVitaly Buka 
14*7fb89bfbSVitaly Buka #ifndef MLIR_C_TARGET_LLVMIR_H
15*7fb89bfbSVitaly Buka #define MLIR_C_TARGET_LLVMIR_H
16*7fb89bfbSVitaly Buka 
17*7fb89bfbSVitaly Buka #include "mlir-c/IR.h"
18*7fb89bfbSVitaly Buka #include "mlir-c/Support.h"
19*7fb89bfbSVitaly Buka #include "llvm-c/Support.h"
20*7fb89bfbSVitaly Buka 
21*7fb89bfbSVitaly Buka #ifdef __cplusplus
22*7fb89bfbSVitaly Buka extern "C" {
23*7fb89bfbSVitaly Buka #endif
24*7fb89bfbSVitaly Buka 
25*7fb89bfbSVitaly Buka /// Translate operation that satisfies LLVM dialect module requirements into an
26*7fb89bfbSVitaly Buka /// LLVM IR module living in the given context. This translates operations from
27*7fb89bfbSVitaly Buka /// any dilalect that has a registered implementation of
28*7fb89bfbSVitaly Buka /// LLVMTranslationDialectInterface.
29*7fb89bfbSVitaly Buka ///
30*7fb89bfbSVitaly Buka /// \returns the generated LLVM IR Module from the translated MLIR module, it is
31*7fb89bfbSVitaly Buka /// owned by the caller.
32*7fb89bfbSVitaly Buka MLIR_CAPI_EXPORTED LLVMModuleRef
33*7fb89bfbSVitaly Buka mlirTranslateModuleToLLVMIR(MlirOperation module, LLVMContextRef context);
34*7fb89bfbSVitaly Buka 
35*7fb89bfbSVitaly Buka #ifdef __cplusplus
36*7fb89bfbSVitaly Buka }
37*7fb89bfbSVitaly Buka #endif
38*7fb89bfbSVitaly Buka 
39*7fb89bfbSVitaly Buka #endif // MLIR_C_TARGET_LLVMIR_H
40