| // Copyright 2021 The IREE Authors | |
| // | |
| // Licensed 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 | |
| #ifndef IREE_LLVM_EXTERNAL_PROJECTS_IREE_COMPILER_API_COMPILER_H | |
| #define IREE_LLVM_EXTERNAL_PROJECTS_IREE_COMPILER_API_COMPILER_H | |
| #include "mlir-c/Pass.h" | |
| #include "mlir-c/Support.h" | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| #define DEFINE_C_API_STRUCT(name, storage) \ | |
| struct name { \ | |
| storage *ptr; \ | |
| }; \ | |
| typedef struct name name | |
| DEFINE_C_API_STRUCT(IreeCompilerOptions, void); | |
| #undef DEFINE_C_API_STRUCT | |
| //===----------------------------------------------------------------------===// | |
| // Registration. | |
| //===----------------------------------------------------------------------===// | |
| MLIR_CAPI_EXPORTED void ireeCompilerRegisterTargetBackends(); | |
| //===----------------------------------------------------------------------===// | |
| // Compiler options. | |
| //===----------------------------------------------------------------------===// | |
| // Creates and destroys a compiler options structure. | |
| MLIR_CAPI_EXPORTED IreeCompilerOptions ireeCompilerOptionsCreate(); | |
| MLIR_CAPI_EXPORTED void ireeCompilerOptionsDestroy(IreeCompilerOptions options); | |
| MLIR_CAPI_EXPORTED void ireeCompilerOptionsSetInputDialectMHLO( | |
| IreeCompilerOptions options); | |
| MLIR_CAPI_EXPORTED void ireeCompilerOptionsSetInputDialectTOSA( | |
| IreeCompilerOptions options); | |
| MLIR_CAPI_EXPORTED void ireeCompilerOptionsAddTargetBackend( | |
| IreeCompilerOptions options, const char *targetBackend); | |
| //===----------------------------------------------------------------------===// | |
| // Compiler stages. | |
| //===----------------------------------------------------------------------===// | |
| // Builds a pass manager for transforming from an input module op to the IREE VM | |
| // dialect. This represents the primary compilation stage with serialization to | |
| // specific formats following. | |
| MLIR_CAPI_EXPORTED void ireeCompilerBuildIREEVMPassPipeline( | |
| IreeCompilerOptions options, MlirOpPassManager passManager); | |
| // Translates a module op derived from the ireeCompilerBuildIREEVMPassPipeline | |
| // to serialized bytecode. The module op may either be an outer builtin ModuleOp | |
| // wrapping a VM::ModuleOp or a VM::ModuleOp. | |
| MLIR_CAPI_EXPORTED MlirLogicalResult ireeCompilerTranslateModuletoVMBytecode( | |
| IreeCompilerOptions options, MlirOperation moduleOp, | |
| MlirStringCallback dataCallback, void *dataUserObject); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif // IREE_LLVM_EXTERNAL_PROJECTS_IREE_COMPILER_API_COMPILER_H |