forked from OSchip/llvm-project
441 lines
20 KiB
C
441 lines
20 KiB
C
//===-- mlir-c/BuiltinAttributes.h - C API for Builtin Attributes -*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This header declares the C interface to MLIR Builtin attributes.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef MLIR_C_BUILTINATTRIBUTES_H
|
|
#define MLIR_C_BUILTINATTRIBUTES_H
|
|
|
|
#include "mlir-c/AffineMap.h"
|
|
#include "mlir-c/IR.h"
|
|
#include "mlir-c/Support.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Affine map attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is an affine map attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAAffineMap(MlirAttribute attr);
|
|
|
|
/// Creates an affine map attribute wrapping the given map. The attribute
|
|
/// belongs to the same context as the affine map.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirAffineMapAttrGet(MlirAffineMap map);
|
|
|
|
/// Returns the affine map wrapped in the given affine map attribute.
|
|
MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapAttrGetValue(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Array attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is an array attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAArray(MlirAttribute attr);
|
|
|
|
/// Creates an array element containing the given list of elements in the given
|
|
/// context.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirArrayAttrGet(
|
|
MlirContext ctx, intptr_t numElements, MlirAttribute const *elements);
|
|
|
|
/// Returns the number of elements stored in the given array attribute.
|
|
MLIR_CAPI_EXPORTED intptr_t mlirArrayAttrGetNumElements(MlirAttribute attr);
|
|
|
|
/// Returns pos-th element stored in the given array attribute.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirArrayAttrGetElement(MlirAttribute attr,
|
|
intptr_t pos);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Dictionary attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a dictionary attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsADictionary(MlirAttribute attr);
|
|
|
|
/// Creates a dictionary attribute containing the given list of elements in the
|
|
/// provided context.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDictionaryAttrGet(
|
|
MlirContext ctx, intptr_t numElements, MlirNamedAttribute const *elements);
|
|
|
|
/// Returns the number of attributes contained in a dictionary attribute.
|
|
MLIR_CAPI_EXPORTED intptr_t
|
|
mlirDictionaryAttrGetNumElements(MlirAttribute attr);
|
|
|
|
/// Returns pos-th element of the given dictionary attribute.
|
|
MLIR_CAPI_EXPORTED MlirNamedAttribute
|
|
mlirDictionaryAttrGetElement(MlirAttribute attr, intptr_t pos);
|
|
|
|
/// Returns the dictionary attribute element with the given name or NULL if the
|
|
/// given name does not exist in the dictionary.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDictionaryAttrGetElementByName(MlirAttribute attr, MlirStringRef name);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Floating point attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// TODO: add support for APFloat and APInt to LLVM IR C API, then expose the
|
|
// relevant functions here.
|
|
|
|
/// Checks whether the given attribute is a floating point attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAFloat(MlirAttribute attr);
|
|
|
|
/// Creates a floating point attribute in the given context with the given
|
|
/// double value and double-precision FP semantics.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirFloatAttrDoubleGet(MlirContext ctx,
|
|
MlirType type,
|
|
double value);
|
|
|
|
/// Same as "mlirFloatAttrDoubleGet", but if the type is not valid for a
|
|
/// construction of a FloatAttr, returns a null MlirAttribute.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirFloatAttrDoubleGetChecked(MlirLocation loc,
|
|
MlirType type,
|
|
double value);
|
|
|
|
/// Returns the value stored in the given floating point attribute, interpreting
|
|
/// the value as double.
|
|
MLIR_CAPI_EXPORTED double mlirFloatAttrGetValueDouble(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Integer attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// TODO: add support for APFloat and APInt to LLVM IR C API, then expose the
|
|
// relevant functions here.
|
|
|
|
/// Checks whether the given attribute is an integer attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAInteger(MlirAttribute attr);
|
|
|
|
/// Creates an integer attribute of the given type with the given integer
|
|
/// value.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirIntegerAttrGet(MlirType type,
|
|
int64_t value);
|
|
|
|
/// Returns the value stored in the given integer attribute, assuming the value
|
|
/// fits into a 64-bit integer.
|
|
MLIR_CAPI_EXPORTED int64_t mlirIntegerAttrGetValueInt(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Bool attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a bool attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsABool(MlirAttribute attr);
|
|
|
|
/// Creates a bool attribute in the given context with the given value.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirBoolAttrGet(MlirContext ctx, int value);
|
|
|
|
/// Returns the value stored in the given bool attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirBoolAttrGetValue(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Integer set attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is an integer set attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAIntegerSet(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Opaque attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is an opaque attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAOpaque(MlirAttribute attr);
|
|
|
|
/// Creates an opaque attribute in the given context associated with the dialect
|
|
/// identified by its namespace. The attribute contains opaque byte data of the
|
|
/// specified length (data need not be null-terminated).
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirOpaqueAttrGet(MlirContext ctx, MlirStringRef dialectNamespace,
|
|
intptr_t dataLength, const char *data, MlirType type);
|
|
|
|
/// Returns the namespace of the dialect with which the given opaque attribute
|
|
/// is associated. The namespace string is owned by the context.
|
|
MLIR_CAPI_EXPORTED MlirStringRef
|
|
mlirOpaqueAttrGetDialectNamespace(MlirAttribute attr);
|
|
|
|
/// Returns the raw data as a string reference. The data remains live as long as
|
|
/// the context in which the attribute lives.
|
|
MLIR_CAPI_EXPORTED MlirStringRef mlirOpaqueAttrGetData(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// String attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a string attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAString(MlirAttribute attr);
|
|
|
|
/// Creates a string attribute in the given context containing the given string.
|
|
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirStringAttrGet(MlirContext ctx,
|
|
MlirStringRef str);
|
|
|
|
/// Creates a string attribute in the given context containing the given string.
|
|
/// Additionally, the attribute has the given type.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirStringAttrTypedGet(MlirType type,
|
|
MlirStringRef str);
|
|
|
|
/// Returns the attribute values as a string reference. The data remains live as
|
|
/// long as the context in which the attribute lives.
|
|
MLIR_CAPI_EXPORTED MlirStringRef mlirStringAttrGetValue(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// SymbolRef attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a symbol reference attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsASymbolRef(MlirAttribute attr);
|
|
|
|
/// Creates a symbol reference attribute in the given context referencing a
|
|
/// symbol identified by the given string inside a list of nested references.
|
|
/// Each of the references in the list must not be nested.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirSymbolRefAttrGet(MlirContext ctx, MlirStringRef symbol,
|
|
intptr_t numReferences, MlirAttribute const *references);
|
|
|
|
/// Returns the string reference to the root referenced symbol. The data remains
|
|
/// live as long as the context in which the attribute lives.
|
|
MLIR_CAPI_EXPORTED MlirStringRef
|
|
mlirSymbolRefAttrGetRootReference(MlirAttribute attr);
|
|
|
|
/// Returns the string reference to the leaf referenced symbol. The data remains
|
|
/// live as long as the context in which the attribute lives.
|
|
MLIR_CAPI_EXPORTED MlirStringRef
|
|
mlirSymbolRefAttrGetLeafReference(MlirAttribute attr);
|
|
|
|
/// Returns the number of references nested in the given symbol reference
|
|
/// attribute.
|
|
MLIR_CAPI_EXPORTED intptr_t
|
|
mlirSymbolRefAttrGetNumNestedReferences(MlirAttribute attr);
|
|
|
|
/// Returns pos-th reference nested in the given symbol reference attribute.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirSymbolRefAttrGetNestedReference(MlirAttribute attr, intptr_t pos);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Flat SymbolRef attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a flat symbol reference attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAFlatSymbolRef(MlirAttribute attr);
|
|
|
|
/// Creates a flat symbol reference attribute in the given context referencing a
|
|
/// symbol identified by the given string.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirFlatSymbolRefAttrGet(MlirContext ctx,
|
|
MlirStringRef symbol);
|
|
|
|
/// Returns the referenced symbol as a string reference. The data remains live
|
|
/// as long as the context in which the attribute lives.
|
|
MLIR_CAPI_EXPORTED MlirStringRef
|
|
mlirFlatSymbolRefAttrGetValue(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Type attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a type attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAType(MlirAttribute attr);
|
|
|
|
/// Creates a type attribute wrapping the given type in the same context as the
|
|
/// type.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirTypeAttrGet(MlirType type);
|
|
|
|
/// Returns the type stored in the given type attribute.
|
|
MLIR_CAPI_EXPORTED MlirType mlirTypeAttrGetValue(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Unit attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a unit attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAUnit(MlirAttribute attr);
|
|
|
|
/// Creates a unit attribute in the given context.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirUnitAttrGet(MlirContext ctx);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Elements attributes.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is an elements attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAElements(MlirAttribute attr);
|
|
|
|
/// Returns the element at the given rank-dimensional index.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirElementsAttrGetValue(MlirAttribute attr,
|
|
intptr_t rank,
|
|
uint64_t *idxs);
|
|
|
|
/// Checks whether the given rank-dimensional index is valid in the given
|
|
/// elements attribute.
|
|
MLIR_CAPI_EXPORTED bool
|
|
mlirElementsAttrIsValidIndex(MlirAttribute attr, intptr_t rank, uint64_t *idxs);
|
|
|
|
/// Gets the total number of elements in the given elements attribute. In order
|
|
/// to iterate over the attribute, obtain its type, which must be a statically
|
|
/// shaped type and use its sizes to build a multi-dimensional index.
|
|
MLIR_CAPI_EXPORTED int64_t mlirElementsAttrGetNumElements(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Dense elements attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// TODO: decide on the interface and add support for complex elements.
|
|
// TODO: add support for APFloat and APInt to LLVM IR C API, then expose the
|
|
// relevant functions here.
|
|
|
|
/// Checks whether the given attribute is a dense elements attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsADenseElements(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsADenseIntElements(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsADenseFPElements(MlirAttribute attr);
|
|
|
|
/// Creates a dense elements attribute with the given Shaped type and elements
|
|
/// in the same context as the type.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrGet(
|
|
MlirType shapedType, intptr_t numElements, MlirAttribute const *elements);
|
|
|
|
/// Creates a dense elements attribute with the given Shaped type containing a
|
|
/// single replicated element (splat).
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrSplatGet(MlirType shapedType, MlirAttribute element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrBoolSplatGet(MlirType shapedType, bool element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrUInt32SplatGet(MlirType shapedType, uint32_t element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrInt32SplatGet(MlirType shapedType, int32_t element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrUInt64SplatGet(MlirType shapedType, uint64_t element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrInt64SplatGet(MlirType shapedType, int64_t element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrFloatSplatGet(MlirType shapedType, float element);
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrDoubleSplatGet(MlirType shapedType, double element);
|
|
|
|
/// Creates a dense elements attribute with the given shaped type from elements
|
|
/// of a specific type. Expects the element type of the shaped type to match the
|
|
/// data element type.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrBoolGet(
|
|
MlirType shapedType, intptr_t numElements, const int *elements);
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrUInt32Get(
|
|
MlirType shapedType, intptr_t numElements, const uint32_t *elements);
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrInt32Get(
|
|
MlirType shapedType, intptr_t numElements, const int32_t *elements);
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrUInt64Get(
|
|
MlirType shapedType, intptr_t numElements, const uint64_t *elements);
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrInt64Get(
|
|
MlirType shapedType, intptr_t numElements, const int64_t *elements);
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrFloatGet(
|
|
MlirType shapedType, intptr_t numElements, const float *elements);
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrDoubleGet(
|
|
MlirType shapedType, intptr_t numElements, const double *elements);
|
|
|
|
/// Creates a dense elements attribute with the given shaped type from string
|
|
/// elements.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirDenseElementsAttrStringGet(
|
|
MlirType shapedType, intptr_t numElements, MlirStringRef *strs);
|
|
|
|
/// Creates a dense elements attribute that has the same data as the given dense
|
|
/// elements attribute and a different shaped type. The new type must have the
|
|
/// same total number of elements.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrReshapeGet(MlirAttribute attr, MlirType shapedType);
|
|
|
|
/// Checks whether the given dense elements attribute contains a single
|
|
/// replicated value (splat).
|
|
MLIR_CAPI_EXPORTED bool mlirDenseElementsAttrIsSplat(MlirAttribute attr);
|
|
|
|
/// Returns the single replicated value (splat) of a specific type contained by
|
|
/// the given dense elements attribute.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirDenseElementsAttrGetSplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED int
|
|
mlirDenseElementsAttrGetBoolSplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED int32_t
|
|
mlirDenseElementsAttrGetInt32SplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED uint32_t
|
|
mlirDenseElementsAttrGetUInt32SplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED int64_t
|
|
mlirDenseElementsAttrGetInt64SplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED uint64_t
|
|
mlirDenseElementsAttrGetUInt64SplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED float
|
|
mlirDenseElementsAttrGetFloatSplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED double
|
|
mlirDenseElementsAttrGetDoubleSplatValue(MlirAttribute attr);
|
|
MLIR_CAPI_EXPORTED MlirStringRef
|
|
mlirDenseElementsAttrGetStringSplatValue(MlirAttribute attr);
|
|
|
|
/// Returns the pos-th value (flat contiguous indexing) of a specific type
|
|
/// contained by the given dense elements attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirDenseElementsAttrGetBoolValue(MlirAttribute attr,
|
|
intptr_t pos);
|
|
MLIR_CAPI_EXPORTED int32_t
|
|
mlirDenseElementsAttrGetInt32Value(MlirAttribute attr, intptr_t pos);
|
|
MLIR_CAPI_EXPORTED uint32_t
|
|
mlirDenseElementsAttrGetUInt32Value(MlirAttribute attr, intptr_t pos);
|
|
MLIR_CAPI_EXPORTED int64_t
|
|
mlirDenseElementsAttrGetInt64Value(MlirAttribute attr, intptr_t pos);
|
|
MLIR_CAPI_EXPORTED uint64_t
|
|
mlirDenseElementsAttrGetUInt64Value(MlirAttribute attr, intptr_t pos);
|
|
MLIR_CAPI_EXPORTED float mlirDenseElementsAttrGetFloatValue(MlirAttribute attr,
|
|
intptr_t pos);
|
|
MLIR_CAPI_EXPORTED double
|
|
mlirDenseElementsAttrGetDoubleValue(MlirAttribute attr, intptr_t pos);
|
|
MLIR_CAPI_EXPORTED MlirStringRef
|
|
mlirDenseElementsAttrGetStringValue(MlirAttribute attr, intptr_t pos);
|
|
|
|
/// Returns the raw data of the given dense elements attribute.
|
|
MLIR_CAPI_EXPORTED const void *
|
|
mlirDenseElementsAttrGetRawData(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Opaque elements attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// TODO: expose Dialect to the bindings and implement accessors here.
|
|
|
|
/// Checks whether the given attribute is an opaque elements attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsAOpaqueElements(MlirAttribute attr);
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
// Sparse elements attribute.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
/// Checks whether the given attribute is a sparse elements attribute.
|
|
MLIR_CAPI_EXPORTED bool mlirAttributeIsASparseElements(MlirAttribute attr);
|
|
|
|
/// Creates a sparse elements attribute of the given shape from a list of
|
|
/// indices and a list of associated values. Both lists are expected to be dense
|
|
/// elements attributes with the same number of elements. The list of indices is
|
|
/// expected to contain 64-bit integers. The attribute is created in the same
|
|
/// context as the type.
|
|
MLIR_CAPI_EXPORTED MlirAttribute mlirSparseElementsAttribute(
|
|
MlirType shapedType, MlirAttribute denseIndices, MlirAttribute denseValues);
|
|
|
|
/// Returns the dense elements attribute containing 64-bit integer indices of
|
|
/// non-null elements in the given sparse elements attribute.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirSparseElementsAttrGetIndices(MlirAttribute attr);
|
|
|
|
/// Returns the dense elements attribute containing the non-null elements in the
|
|
/// given sparse elements attribute.
|
|
MLIR_CAPI_EXPORTED MlirAttribute
|
|
mlirSparseElementsAttrGetValues(MlirAttribute attr);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // MLIR_C_BUILTINATTRIBUTES_H
|