forked from OSchip/llvm-project
68 lines
2.7 KiB
C
68 lines
2.7 KiB
C
//===-- mlir-c/Registration.h - Registration functions for MLIR ---*- C -*-===//
|
|
//
|
|
// Part of the LLVM 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef MLIR_C_REGISTRATION_H
|
|
#define MLIR_C_REGISTRATION_H
|
|
|
|
#include "mlir-c/IR.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Dialect registration declarations.
|
|
// Registration entry-points for each dialect are declared using the common
|
|
// MLIR_DECLARE_DIALECT_REGISTRATION_CAPI macro, which takes the dialect
|
|
// API name (i.e. "Standard", "Tensor", "Linalg") and namespace (i.e. "std",
|
|
// "tensor", "linalg"). The following declarations are produced:
|
|
//
|
|
// /// Gets the above hook methods in struct form for a dialect by namespace.
|
|
// /// This is intended to facilitate dynamic lookup and registration of
|
|
// /// dialects via a plugin facility based on shared library symbol lookup.
|
|
// const MlirDialectHandle *mlirGetDialectHandle__{NAMESPACE}__();
|
|
//
|
|
// This is done via a common macro to facilitate future expansion to
|
|
// registration schemes.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
struct MlirDialectHandle {
|
|
const void *ptr;
|
|
};
|
|
typedef struct MlirDialectHandle MlirDialectHandle;
|
|
|
|
#define MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(Name, Namespace) \
|
|
MLIR_CAPI_EXPORTED MlirDialectHandle mlirGetDialectHandle__##Namespace##__()
|
|
|
|
/// Returns the namespace associated with the provided dialect handle.
|
|
MLIR_CAPI_EXPORTED
|
|
MlirStringRef mlirDialectHandleGetNamespace(MlirDialectHandle);
|
|
|
|
/// Registers the dialect associated with the provided dialect handle.
|
|
MLIR_CAPI_EXPORTED void mlirDialectHandleRegisterDialect(MlirDialectHandle,
|
|
MlirContext);
|
|
|
|
/// Loads the dialect associated with the provided dialect handle.
|
|
MLIR_CAPI_EXPORTED MlirDialect mlirDialectHandleLoadDialect(MlirDialectHandle,
|
|
MlirContext);
|
|
|
|
/// Registers all dialects known to core MLIR with the provided Context.
|
|
/// This is needed before creating IR for these Dialects.
|
|
/// TODO: Remove this function once the real registration API is finished.
|
|
MLIR_CAPI_EXPORTED void mlirRegisterAllDialects(MlirContext context);
|
|
|
|
/// Register all translations to LLVM IR for dialects that can support it.
|
|
MLIR_CAPI_EXPORTED void mlirRegisterAllLLVMTranslations(MlirContext context);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // MLIR_C_REGISTRATION_H
|