diff --git a/mlir/include/mlir-c/Dialect/EmitC.h b/mlir/include/mlir-c/Dialect/EmitC.h index 82e698344bf1e7..9a7e4c2f462f1c 100644 --- a/mlir/include/mlir-c/Dialect/EmitC.h +++ b/mlir/include/mlir-c/Dialect/EmitC.h @@ -19,6 +19,107 @@ extern "C" { MLIR_DECLARE_CAPI_DIALECT_REGISTRATION(EmitC, emitc); +//===---------------------------------------------------------------------===// +// ArrayType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCArrayType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCArrayTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCArrayTypeGet(intptr_t nDims, + int64_t *shape, + MlirType elementType); + +//===---------------------------------------------------------------------===// +// LValueType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCLValueType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCLValueTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCLValueTypeGet(MlirType valueType); + +//===---------------------------------------------------------------------===// +// OpaqueType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCOpaqueType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCOpaqueTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCOpaqueTypeGet(MlirContext ctx, + MlirStringRef value); + +//===---------------------------------------------------------------------===// +// PointerType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCPointerType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCPointerTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCPointerTypeGet(MlirType pointee); + +//===---------------------------------------------------------------------===// +// PtrDiffTType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCPtrDiffTType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCPtrDiffTTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCPtrDiffTTypeGet(MlirContext ctx); + +//===---------------------------------------------------------------------===// +// SignedSizeTType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCSignedSizeTType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCSignedSizeTTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCSignedSizeTTypeGet(MlirContext ctx); + +//===---------------------------------------------------------------------===// +// SizeTType +//===---------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirTypeIsAEmitCSizeTType(MlirType type); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCSizeTTypeGetTypeID(void); + +MLIR_CAPI_EXPORTED MlirType mlirEmitCSizeTTypeGet(MlirContext ctx); + +//===----------------------------------------------------------------------===// +// CmpPredicate attribute. +//===----------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirAttributeIsAEmitCCmpPredicate(MlirAttribute attr); + +MLIR_CAPI_EXPORTED MlirAttribute mlirEmitCCmpPredicateAttrGet(MlirContext ctx, + uint64_t val); + +MLIR_CAPI_EXPORTED uint64_t +mlirEmitCCmpPredicateAttrGetValue(MlirAttribute attr); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCCmpPredicateAttrGetTypeID(void); + +//===----------------------------------------------------------------------===// +// Opaque attribute. +//===----------------------------------------------------------------------===// + +MLIR_CAPI_EXPORTED bool mlirAttributeIsAEmitCOpaque(MlirAttribute attr); + +MLIR_CAPI_EXPORTED MlirAttribute mlirEmitCOpaqueAttrGet(MlirContext ctx, + MlirStringRef value); + +MLIR_CAPI_EXPORTED MlirStringRef +mlirEmitCOpaqueAttrGetValue(MlirAttribute attr); + +MLIR_CAPI_EXPORTED MlirTypeID mlirEmitCOpaqueAttrGetTypeID(void); + #ifdef __cplusplus } #endif diff --git a/mlir/lib/CAPI/Dialect/EmitC.cpp b/mlir/lib/CAPI/Dialect/EmitC.cpp index 3dcb7038a57981..bfc3330e8e1150 100644 --- a/mlir/lib/CAPI/Dialect/EmitC.cpp +++ b/mlir/lib/CAPI/Dialect/EmitC.cpp @@ -10,4 +10,162 @@ #include "mlir/CAPI/Registration.h" #include "mlir/Dialect/EmitC/IR/EmitC.h" +using namespace mlir; + MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(EmitC, emitc, mlir::emitc::EmitCDialect) + +//===---------------------------------------------------------------------===// +// ArrayType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCArrayType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCArrayTypeGetTypeID(void) { + return wrap(emitc::ArrayType::getTypeID()); +} + +MlirType mlirEmitCArrayTypeGet(intptr_t nDims, int64_t *shape, + MlirType elementType) { + return wrap( + emitc::ArrayType::get(llvm::ArrayRef(shape, nDims), unwrap(elementType))); +} + +//===---------------------------------------------------------------------===// +// LValueType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCLValueType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCLValueTypeGetTypeID(void) { + return wrap(emitc::LValueType::getTypeID()); +} + +MlirType mlirEmitCLValueTypeGet(MlirType valueType) { + return wrap(emitc::LValueType::get(unwrap(valueType))); +} + +//===---------------------------------------------------------------------===// +// OpaqueType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCOpaqueType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCOpaqueTypeGetTypeID(void) { + return wrap(emitc::OpaqueType::getTypeID()); +} + +MlirType mlirEmitCOpaqueTypeGet(MlirContext ctx, MlirStringRef value) { + return wrap(emitc::OpaqueType::get(unwrap(ctx), unwrap(value))); +} + +//===---------------------------------------------------------------------===// +// PointerType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCPointerType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCPointerTypeGetTypeID(void) { + return wrap(emitc::PointerType::getTypeID()); +} + +MlirType mlirEmitCPointerTypeGet(MlirType pointee) { + return wrap(emitc::PointerType::get(unwrap(pointee))); +} + +//===---------------------------------------------------------------------===// +// PtrDiffTType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCPtrDiffTType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCPtrDiffTTypeGetTypeID(void) { + return wrap(emitc::PtrDiffTType::getTypeID()); +} + +MlirType mlirEmitCPtrDiffTTypeGet(MlirContext ctx) { + return wrap(emitc::PtrDiffTType::get(unwrap(ctx))); +} + +//===---------------------------------------------------------------------===// +// SignedSizeTType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCSignedSizeTType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCSignedSizeTTypeGetTypeID(void) { + return wrap(emitc::SignedSizeTType::getTypeID()); +} + +MlirType mlirEmitCSignedSizeTTypeGet(MlirContext ctx) { + return wrap(emitc::SignedSizeTType::get(unwrap(ctx))); +} + +//===---------------------------------------------------------------------===// +// SizeTType +//===---------------------------------------------------------------------===// + +bool mlirTypeIsAEmitCSizeTType(MlirType type) { + return isa(unwrap(type)); +} + +MlirTypeID mlirEmitCSizeTTypeGetTypeID(void) { + return wrap(emitc::SizeTType::getTypeID()); +} + +MlirType mlirEmitCSizeTTypeGet(MlirContext ctx) { + return wrap(emitc::SizeTType::get(unwrap(ctx))); +} + +//===----------------------------------------------------------------------===// +// CmpPredicate attribute. +//===----------------------------------------------------------------------===// + +bool mlirAttributeIsAEmitCCmpPredicate(MlirAttribute attr) { + return llvm::isa(unwrap(attr)); +} + +MlirAttribute mlirEmitCCmpPredicateAttrGet(MlirContext ctx, uint64_t val) { + return wrap((Attribute)emitc::CmpPredicateAttr::get( + unwrap(ctx), static_cast(val))); +} + +uint64_t mlirEmitCCmpPredicateAttrGetValue(MlirAttribute attr) { + return static_cast( + llvm::cast(unwrap(attr)).getValue()); +} + +MlirTypeID mlirEmitCCmpPredicateAttrGetTypeID(void) { + return wrap(emitc::CmpPredicateAttr::getTypeID()); +} + +//===----------------------------------------------------------------------===// +// Opaque attribute. +//===----------------------------------------------------------------------===// + +bool mlirAttributeIsAEmitCOpaque(MlirAttribute attr) { + return llvm::isa(unwrap(attr)); +} + +MlirAttribute mlirEmitCOpaqueAttrGet(MlirContext ctx, MlirStringRef value) { + return wrap((Attribute)emitc::OpaqueAttr::get(unwrap(ctx), unwrap(value))); +} + +MlirStringRef mlirEmitCOpaqueAttrGetValue(MlirAttribute attr) { + return wrap(llvm::cast(unwrap(attr)).getValue()); +} + +MlirTypeID mlirEmitCOpaqueAttrGetTypeID(void) { + return wrap(emitc::OpaqueAttr::getTypeID()); +}