Program Listing for File EmitHLS.h

↰ Return to documentation for file (include/laksa-mlir-c/Dialect/EmitHLS.h)

//===----- EmitHLS.h - C API for EmitHLS dialect ------------------*- C -*-===//
//
// @author  Jiahong Bi (jiahong.bi@tu-dresden.de)
//===----------------------------------------------------------------------===//

#ifndef LAKSA_MLIR_C_DIALECT_EMITHLS_H
#define LAKSA_MLIR_C_DIALECT_EMITHLS_H

#include "mlir-c/IR.h"
#include "mlir-c/Support.h"

#ifdef __cplusplus
extern "C" {
#endif

MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(EmitHLS, emithls);

//===---------------------------------------------------------------------===//
// StreamType
//===---------------------------------------------------------------------===//

MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitHLSStreamType(MlirType type);

MLIR_CAPI_EXPORTED MlirType mlirEmitHLSStreamTypeGet(MlirType elementType);

MLIR_CAPI_EXPORTED MlirType mlirEmitHLSStreamTypeGetElementType(MlirType type);

//===---------------------------------------------------------------------===//
// PointerType
//===---------------------------------------------------------------------===//

MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitHLSPointerType(MlirType type);

MLIR_CAPI_EXPORTED MlirType mlirEmitHLSPointerTypeGet(MlirType elementType);

MLIR_CAPI_EXPORTED MlirType mlirEmitHLSPointerTypeGetElementType(MlirType type);

//===---------------------------------------------------------------------===//
// ArrayType
//===---------------------------------------------------------------------===//

MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitHLSArrayType(MlirType type);

MLIR_CAPI_EXPORTED MlirType mlirEmitHLSArrayTypeGet(
    intptr_t rank,
    const int64_t* shape,
    MlirType elementType);

MLIR_CAPI_EXPORTED intptr_t mlirEmitHLSArrayTypeGetRank(MlirType type);

MLIR_CAPI_EXPORTED int64_t
mlirEmitHLSArrayTypeGetDimSize(MlirType type, intptr_t dim);

MLIR_CAPI_EXPORTED MlirType mlirEmitHLSArrayTypeGetElementType(MlirType type);

//===---------------------------------------------------------------------===//
// Translation
//===---------------------------------------------------------------------===//

MLIR_CAPI_EXPORTED MlirLogicalResult mlirTranslateEmitHLSToCpp(
    MlirOperation op,
    MlirStringCallback callback,
    void* userData);

MLIR_CAPI_EXPORTED MlirLogicalResult mlirTranslateEmitHLSToHLSTcl(
    MlirOperation op,
    MlirStringCallback callback,
    void* userData);

MLIR_CAPI_EXPORTED MlirLogicalResult mlirTranslateEmitHLSToKriaDtsi(
    MlirOperation op,
    MlirStringCallback callback,
    void* userData);

MLIR_CAPI_EXPORTED MlirLogicalResult mlirTranslateEmitHLSToLaksaApp(
    MlirOperation op,
    MlirStringCallback callback,
    void* userData);

MLIR_CAPI_EXPORTED MlirLogicalResult mlirTranslateEmitHLSToLaksaHeader(
    MlirOperation op,
    MlirStringCallback callback,
    void* userData);

MLIR_CAPI_EXPORTED MlirLogicalResult mlirTranslateEmitHLSToVivadoTcl(
    MlirOperation op,
    MlirStringCallback callback,
    void* userData);

#ifdef __cplusplus
}
#endif

//===---------------------------------------------------------------------===//
// Pass Registration
//===---------------------------------------------------------------------===//

#include "laksa-mlir/Dialect/EmitHLS/Transforms/Passes.capi.h.inc"

#ifdef __cplusplus
extern "C" {
#endif

// Creates an "emithls-pragma-dse" pass with explicit BRAM/DSP budgets
MLIR_CAPI_EXPORTED MlirPass mlirCreateEmitHLSEmitHLSPragmaDSEWithOptions(
    int64_t availableBRAM,
    int64_t availableDSP);

#ifdef __cplusplus
}
#endif

#endif